1 <html><body> 2 <style> 3 4 body, h1, h2, h3, div, span, p, pre, a { 5 margin: 0; 6 padding: 0; 7 border: 0; 8 font-weight: inherit; 9 font-style: inherit; 10 font-size: 100%; 11 font-family: inherit; 12 vertical-align: baseline; 13 } 14 15 body { 16 font-size: 13px; 17 padding: 1em; 18 } 19 20 h1 { 21 font-size: 26px; 22 margin-bottom: 1em; 23 } 24 25 h2 { 26 font-size: 24px; 27 margin-bottom: 1em; 28 } 29 30 h3 { 31 font-size: 20px; 32 margin-bottom: 1em; 33 margin-top: 1em; 34 } 35 36 pre, code { 37 line-height: 1.5; 38 font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace; 39 } 40 41 pre { 42 margin-top: 0.5em; 43 } 44 45 h1, h2, h3, p { 46 font-family: Arial, sans serif; 47 } 48 49 h1, h2, h3 { 50 border-bottom: solid #CCC 1px; 51 } 52 53 .toc_element { 54 margin-top: 0.5em; 55 } 56 57 .firstline { 58 margin-left: 2 em; 59 } 60 61 .method { 62 margin-top: 1em; 63 border: solid 1px #CCC; 64 padding: 1em; 65 background: #EEE; 66 } 67 68 .details { 69 font-weight: bold; 70 font-size: 14px; 71 } 72 73 </style> 74 75 <h1><a href="sheets_v4.html">Google Sheets API</a> . <a href="sheets_v4.spreadsheets.html">spreadsheets</a></h1> 76 <h2>Instance Methods</h2> 77 <p class="toc_element"> 78 <code><a href="sheets_v4.spreadsheets.sheets.html">sheets()</a></code> 79 </p> 80 <p class="firstline">Returns the sheets Resource.</p> 81 82 <p class="toc_element"> 83 <code><a href="sheets_v4.spreadsheets.values.html">values()</a></code> 84 </p> 85 <p class="firstline">Returns the values Resource.</p> 86 87 <p class="toc_element"> 88 <code><a href="#batchUpdate">batchUpdate(spreadsheetId, body, x__xgafv=None)</a></code></p> 89 <p class="firstline">Applies one or more updates to the spreadsheet.</p> 90 <p class="toc_element"> 91 <code><a href="#create">create(body, x__xgafv=None)</a></code></p> 92 <p class="firstline">Creates a spreadsheet, returning the newly created spreadsheet.</p> 93 <p class="toc_element"> 94 <code><a href="#get">get(spreadsheetId, ranges=None, x__xgafv=None, includeGridData=None)</a></code></p> 95 <p class="firstline">Returns the spreadsheet at the given ID.</p> 96 <h3>Method Details</h3> 97 <div class="method"> 98 <code class="details" id="batchUpdate">batchUpdate(spreadsheetId, body, x__xgafv=None)</code> 99 <pre>Applies one or more updates to the spreadsheet. 100 101 Each request is validated before 102 being applied. If any request is not valid then the entire request will 103 fail and nothing will be applied. 104 105 Some requests have replies to 106 give you some information about how 107 they are applied. The replies will mirror the requests. For example, 108 if you applied 4 updates and the 3rd one had a reply, then the 109 response will have 2 empty replies, the actual reply, and another empty 110 reply, in that order. 111 112 Due to the collaborative nature of spreadsheets, it is not guaranteed that 113 the spreadsheet will reflect exactly your changes after this completes, 114 however it is guaranteed that the updates in the request will be 115 applied together atomically. Your changes may be altered with respect to 116 collaborator changes. If there are no collaborators, the spreadsheet 117 should reflect your changes. 118 119 Args: 120 spreadsheetId: string, The spreadsheet to apply the updates to. (required) 121 body: object, The request body. (required) 122 The object takes the form of: 123 124 { # The request for updating any aspect of a spreadsheet. 125 "responseRanges": [ # Limits the ranges included in the response spreadsheet. 126 # Meaningful only if include_spreadsheet_response is 'true'. 127 "A String", 128 ], 129 "requests": [ # A list of updates to apply to the spreadsheet. 130 # Requests will be applied in the order they are specified. 131 # If any request is not valid, no requests will be applied. 132 { # A single kind of update to apply to a spreadsheet. 133 "duplicateFilterView": { # Duplicates a particular filter view. # Duplicates a filter view. 134 "filterId": 42, # The ID of the filter being duplicated. 135 }, 136 "sortRange": { # Sorts data in rows based on a sort order per column. # Sorts data in a range. 137 "range": { # A range on a sheet. # The range to sort. 138 # All indexes are zero-based. 139 # Indexes are half open, e.g the start index is inclusive 140 # and the end index is exclusive -- [start_index, end_index). 141 # Missing indexes indicate the range is unbounded on that side. 142 # 143 # For example, if `"Sheet1"` is sheet ID 0, then: 144 # 145 # `Sheet1!A1:A1 == sheet_id: 0, 146 # start_row_index: 0, end_row_index: 1, 147 # start_column_index: 0, end_column_index: 1` 148 # 149 # `Sheet1!A3:B4 == sheet_id: 0, 150 # start_row_index: 2, end_row_index: 4, 151 # start_column_index: 0, end_column_index: 2` 152 # 153 # `Sheet1!A:B == sheet_id: 0, 154 # start_column_index: 0, end_column_index: 2` 155 # 156 # `Sheet1!A5:B == sheet_id: 0, 157 # start_row_index: 4, 158 # start_column_index: 0, end_column_index: 2` 159 # 160 # `Sheet1 == sheet_id:0` 161 # 162 # The start index must always be less than or equal to the end index. 163 # If the start index equals the end index, then the range is empty. 164 # Empty ranges are typically not meaningful and are usually rendered in the 165 # UI as `#REF!`. 166 "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded. 167 "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded. 168 "sheetId": 42, # The sheet this range is on. 169 "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded. 170 "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded. 171 }, 172 "sortSpecs": [ # The sort order per column. Later specifications are used when values 173 # are equal in the earlier specifications. 174 { # A sort order associated with a specific column or row. 175 "sortOrder": "A String", # The order data should be sorted. 176 "dimensionIndex": 42, # The dimension the sort should be applied to. 177 }, 178 ], 179 }, 180 "updateEmbeddedObjectPosition": { # Update an embedded object's position (such as a moving or resizing a # Updates an embedded object's (e.g. chart, image) position. 181 # chart or image). 182 "newPosition": { # The position of an embedded object such as a chart. # An explicit position to move the embedded object to. 183 # If newPosition.sheetId is set, 184 # a new sheet with that ID will be created. 185 # If newPosition.newSheet is set to true, 186 # a new sheet will be created with an ID that will be chosen for you. 187 "newSheet": True or False, # If true, the embedded object will be put on a new sheet whose ID 188 # is chosen for you. Used only when writing. 189 "sheetId": 42, # The sheet this is on. Set only if the embedded object 190 # is on its own sheet. Must be non-negative. 191 "overlayPosition": { # The location an object is overlaid on top of a grid. # The position at which the object is overlaid on top of a grid. 192 "anchorCell": { # A coordinate in a sheet. # The cell the object is anchored to. 193 # All indexes are zero-based. 194 "rowIndex": 42, # The row index of the coordinate. 195 "columnIndex": 42, # The column index of the coordinate. 196 "sheetId": 42, # The sheet this coordinate is on. 197 }, 198 "offsetYPixels": 42, # The vertical offset, in pixels, that the object is offset 199 # from the anchor cell. 200 "widthPixels": 42, # The width of the object, in pixels. Defaults to 600. 201 "offsetXPixels": 42, # The horizontal offset, in pixels, that the object is offset 202 # from the anchor cell. 203 "heightPixels": 42, # The height of the object, in pixels. Defaults to 371. 204 }, 205 }, 206 "fields": "A String", # The fields of OverlayPosition 207 # that should be updated when setting a new position. Used only if 208 # newPosition.overlayPosition 209 # is set, in which case at least one field must 210 # be specified. The root `newPosition.overlayPosition` is implied and 211 # should not be specified. 212 # A single `"*"` can be used as short-hand for listing every field. 213 "objectId": 42, # The ID of the object to moved. 214 }, 215 "updateConditionalFormatRule": { # Updates a conditional format rule at the given index, # Updates an existing conditional format rule. 216 # or moves a conditional format rule to another index. 217 "index": 42, # The zero-based index of the rule that should be replaced or moved. 218 "newIndex": 42, # The zero-based new index the rule should end up at. 219 "sheetId": 42, # The sheet of the rule to move. Required if new_index is set, 220 # unused otherwise. 221 "rule": { # A rule describing a conditional format. # The rule that should replace the rule at the given index. 222 "ranges": [ # The ranges that will be formatted if the condition is true. 223 # All the ranges must be on the same grid. 224 { # A range on a sheet. 225 # All indexes are zero-based. 226 # Indexes are half open, e.g the start index is inclusive 227 # and the end index is exclusive -- [start_index, end_index). 228 # Missing indexes indicate the range is unbounded on that side. 229 # 230 # For example, if `"Sheet1"` is sheet ID 0, then: 231 # 232 # `Sheet1!A1:A1 == sheet_id: 0, 233 # start_row_index: 0, end_row_index: 1, 234 # start_column_index: 0, end_column_index: 1` 235 # 236 # `Sheet1!A3:B4 == sheet_id: 0, 237 # start_row_index: 2, end_row_index: 4, 238 # start_column_index: 0, end_column_index: 2` 239 # 240 # `Sheet1!A:B == sheet_id: 0, 241 # start_column_index: 0, end_column_index: 2` 242 # 243 # `Sheet1!A5:B == sheet_id: 0, 244 # start_row_index: 4, 245 # start_column_index: 0, end_column_index: 2` 246 # 247 # `Sheet1 == sheet_id:0` 248 # 249 # The start index must always be less than or equal to the end index. 250 # If the start index equals the end index, then the range is empty. 251 # Empty ranges are typically not meaningful and are usually rendered in the 252 # UI as `#REF!`. 253 "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded. 254 "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded. 255 "sheetId": 42, # The sheet this range is on. 256 "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded. 257 "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded. 258 }, 259 ], 260 "booleanRule": { # A rule that may or may not match, depending on the condition. # The formatting is either "on" or "off" according to the rule. 261 "condition": { # A condition that can evaluate to true or false. # The condition of the rule. If the condition evaluates to true, 262 # the format will be applied. 263 # BooleanConditions are used by conditional formatting, 264 # data validation, and the criteria in filters. 265 "values": [ # The values of the condition. The number of supported values depends 266 # on the condition type. Some support zero values, 267 # others one or two values, 268 # and ConditionType.ONE_OF_LIST supports an arbitrary number of values. 269 { # The value of the condition. 270 "relativeDate": "A String", # A relative date (based on the current date). 271 # Valid only if the type is 272 # DATE_BEFORE, 273 # DATE_AFTER, 274 # DATE_ON_OR_BEFORE or 275 # DATE_ON_OR_AFTER. 276 # 277 # Relative dates are not supported in data validation. 278 # They are supported only in conditional formatting and 279 # conditional filters. 280 "userEnteredValue": "A String", # A value the condition is based on. 281 # The value will be parsed as if the user typed into a cell. 282 # Formulas are supported (and must begin with an `=`). 283 }, 284 ], 285 "type": "A String", # The type of condition. 286 }, 287 "format": { # The format of a cell. # The format to apply. 288 # Conditional formatting can only apply a subset of formatting: 289 # bold, italic, 290 # strikethrough, 291 # foreground color & 292 # background color. 293 "numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user. 294 "pattern": "A String", # Pattern string used for formatting. If not set, a default pattern based on 295 # the user's locale will be used if necessary for the given type. 296 # See the [Date and Number Formats guide](/sheets/api/guides/formats) for more 297 # information about the supported patterns. 298 "type": "A String", # The type of the number format. 299 # When writing, this field must be set. 300 }, 301 "textDirection": "A String", # The direction of the text in the cell. 302 "padding": { # The amount of padding around the cell, in pixels. # The padding of the cell. 303 # When updating padding, every field must be specified. 304 "top": 42, # The top padding of the cell. 305 "right": 42, # The right padding of the cell. 306 "bottom": 42, # The bottom padding of the cell. 307 "left": 42, # The left padding of the cell. 308 }, 309 "verticalAlignment": "A String", # The vertical alignment of the value in the cell. 310 "backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell. 311 # for simplicity of conversion to/from color representations in various 312 # languages over compactness; for example, the fields of this representation 313 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 314 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 315 # method in iOS; and, with just a little work, it can be easily formatted into 316 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 317 # 318 # Example (Java): 319 # 320 # import com.google.type.Color; 321 # 322 # // ... 323 # public static java.awt.Color fromProto(Color protocolor) { 324 # float alpha = protocolor.hasAlpha() 325 # ? protocolor.getAlpha().getValue() 326 # : 1.0; 327 # 328 # return new java.awt.Color( 329 # protocolor.getRed(), 330 # protocolor.getGreen(), 331 # protocolor.getBlue(), 332 # alpha); 333 # } 334 # 335 # public static Color toProto(java.awt.Color color) { 336 # float red = (float) color.getRed(); 337 # float green = (float) color.getGreen(); 338 # float blue = (float) color.getBlue(); 339 # float denominator = 255.0; 340 # Color.Builder resultBuilder = 341 # Color 342 # .newBuilder() 343 # .setRed(red / denominator) 344 # .setGreen(green / denominator) 345 # .setBlue(blue / denominator); 346 # int alpha = color.getAlpha(); 347 # if (alpha != 255) { 348 # result.setAlpha( 349 # FloatValue 350 # .newBuilder() 351 # .setValue(((float) alpha) / denominator) 352 # .build()); 353 # } 354 # return resultBuilder.build(); 355 # } 356 # // ... 357 # 358 # Example (iOS / Obj-C): 359 # 360 # // ... 361 # static UIColor* fromProto(Color* protocolor) { 362 # float red = [protocolor red]; 363 # float green = [protocolor green]; 364 # float blue = [protocolor blue]; 365 # FloatValue* alpha_wrapper = [protocolor alpha]; 366 # float alpha = 1.0; 367 # if (alpha_wrapper != nil) { 368 # alpha = [alpha_wrapper value]; 369 # } 370 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 371 # } 372 # 373 # static Color* toProto(UIColor* color) { 374 # CGFloat red, green, blue, alpha; 375 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 376 # return nil; 377 # } 378 # Color* result = [Color alloc] init]; 379 # [result setRed:red]; 380 # [result setGreen:green]; 381 # [result setBlue:blue]; 382 # if (alpha <= 0.9999) { 383 # [result setAlpha:floatWrapperWithValue(alpha)]; 384 # } 385 # [result autorelease]; 386 # return result; 387 # } 388 # // ... 389 # 390 # Example (JavaScript): 391 # 392 # // ... 393 # 394 # var protoToCssColor = function(rgb_color) { 395 # var redFrac = rgb_color.red || 0.0; 396 # var greenFrac = rgb_color.green || 0.0; 397 # var blueFrac = rgb_color.blue || 0.0; 398 # var red = Math.floor(redFrac * 255); 399 # var green = Math.floor(greenFrac * 255); 400 # var blue = Math.floor(blueFrac * 255); 401 # 402 # if (!('alpha' in rgb_color)) { 403 # return rgbToCssColor_(red, green, blue); 404 # } 405 # 406 # var alphaFrac = rgb_color.alpha.value || 0.0; 407 # var rgbParams = [red, green, blue].join(','); 408 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 409 # }; 410 # 411 # var rgbToCssColor_ = function(red, green, blue) { 412 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 413 # var hexString = rgbNumber.toString(16); 414 # var missingZeros = 6 - hexString.length; 415 # var resultBuilder = ['#']; 416 # for (var i = 0; i < missingZeros; i++) { 417 # resultBuilder.push('0'); 418 # } 419 # resultBuilder.push(hexString); 420 # return resultBuilder.join(''); 421 # }; 422 # 423 # // ... 424 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 425 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 426 # the final pixel color is defined by the equation: 427 # 428 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 429 # 430 # This means that a value of 1.0 corresponds to a solid color, whereas 431 # a value of 0.0 corresponds to a completely transparent color. This 432 # uses a wrapper message rather than a simple float scalar so that it is 433 # possible to distinguish between a default value and the value being unset. 434 # If omitted, this color object is to be rendered as a solid color 435 # (as if the alpha value had been explicitly given with a value of 1.0). 436 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 437 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 438 }, 439 "horizontalAlignment": "A String", # The horizontal alignment of the value in the cell. 440 "textFormat": { # The format of a run of text in a cell. # The format of the text in the cell (unless overridden by a format run). 441 # Absent values indicate that the field isn't specified. 442 "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text. 443 # for simplicity of conversion to/from color representations in various 444 # languages over compactness; for example, the fields of this representation 445 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 446 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 447 # method in iOS; and, with just a little work, it can be easily formatted into 448 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 449 # 450 # Example (Java): 451 # 452 # import com.google.type.Color; 453 # 454 # // ... 455 # public static java.awt.Color fromProto(Color protocolor) { 456 # float alpha = protocolor.hasAlpha() 457 # ? protocolor.getAlpha().getValue() 458 # : 1.0; 459 # 460 # return new java.awt.Color( 461 # protocolor.getRed(), 462 # protocolor.getGreen(), 463 # protocolor.getBlue(), 464 # alpha); 465 # } 466 # 467 # public static Color toProto(java.awt.Color color) { 468 # float red = (float) color.getRed(); 469 # float green = (float) color.getGreen(); 470 # float blue = (float) color.getBlue(); 471 # float denominator = 255.0; 472 # Color.Builder resultBuilder = 473 # Color 474 # .newBuilder() 475 # .setRed(red / denominator) 476 # .setGreen(green / denominator) 477 # .setBlue(blue / denominator); 478 # int alpha = color.getAlpha(); 479 # if (alpha != 255) { 480 # result.setAlpha( 481 # FloatValue 482 # .newBuilder() 483 # .setValue(((float) alpha) / denominator) 484 # .build()); 485 # } 486 # return resultBuilder.build(); 487 # } 488 # // ... 489 # 490 # Example (iOS / Obj-C): 491 # 492 # // ... 493 # static UIColor* fromProto(Color* protocolor) { 494 # float red = [protocolor red]; 495 # float green = [protocolor green]; 496 # float blue = [protocolor blue]; 497 # FloatValue* alpha_wrapper = [protocolor alpha]; 498 # float alpha = 1.0; 499 # if (alpha_wrapper != nil) { 500 # alpha = [alpha_wrapper value]; 501 # } 502 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 503 # } 504 # 505 # static Color* toProto(UIColor* color) { 506 # CGFloat red, green, blue, alpha; 507 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 508 # return nil; 509 # } 510 # Color* result = [Color alloc] init]; 511 # [result setRed:red]; 512 # [result setGreen:green]; 513 # [result setBlue:blue]; 514 # if (alpha <= 0.9999) { 515 # [result setAlpha:floatWrapperWithValue(alpha)]; 516 # } 517 # [result autorelease]; 518 # return result; 519 # } 520 # // ... 521 # 522 # Example (JavaScript): 523 # 524 # // ... 525 # 526 # var protoToCssColor = function(rgb_color) { 527 # var redFrac = rgb_color.red || 0.0; 528 # var greenFrac = rgb_color.green || 0.0; 529 # var blueFrac = rgb_color.blue || 0.0; 530 # var red = Math.floor(redFrac * 255); 531 # var green = Math.floor(greenFrac * 255); 532 # var blue = Math.floor(blueFrac * 255); 533 # 534 # if (!('alpha' in rgb_color)) { 535 # return rgbToCssColor_(red, green, blue); 536 # } 537 # 538 # var alphaFrac = rgb_color.alpha.value || 0.0; 539 # var rgbParams = [red, green, blue].join(','); 540 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 541 # }; 542 # 543 # var rgbToCssColor_ = function(red, green, blue) { 544 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 545 # var hexString = rgbNumber.toString(16); 546 # var missingZeros = 6 - hexString.length; 547 # var resultBuilder = ['#']; 548 # for (var i = 0; i < missingZeros; i++) { 549 # resultBuilder.push('0'); 550 # } 551 # resultBuilder.push(hexString); 552 # return resultBuilder.join(''); 553 # }; 554 # 555 # // ... 556 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 557 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 558 # the final pixel color is defined by the equation: 559 # 560 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 561 # 562 # This means that a value of 1.0 corresponds to a solid color, whereas 563 # a value of 0.0 corresponds to a completely transparent color. This 564 # uses a wrapper message rather than a simple float scalar so that it is 565 # possible to distinguish between a default value and the value being unset. 566 # If omitted, this color object is to be rendered as a solid color 567 # (as if the alpha value had been explicitly given with a value of 1.0). 568 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 569 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 570 }, 571 "bold": True or False, # True if the text is bold. 572 "strikethrough": True or False, # True if the text has a strikethrough. 573 "fontFamily": "A String", # The font family. 574 "fontSize": 42, # The size of the font. 575 "italic": True or False, # True if the text is italicized. 576 "underline": True or False, # True if the text is underlined. 577 }, 578 "textRotation": { # The rotation applied to text in a cell. # The rotation applied to text in a cell 579 "angle": 42, # The angle between the standard orientation and the desired orientation. 580 # Measured in degrees. Valid values are between -90 and 90. Positive 581 # angles are angled upwards, negative are angled downwards. 582 # 583 # Note: For LTR text direction positive angles are in the counterclockwise 584 # direction, whereas for RTL they are in the clockwise direction 585 "vertical": True or False, # If true, text reads top to bottom, but the orientation of individual 586 # characters is unchanged. 587 # For example: 588 # 589 # | V | 590 # | e | 591 # | r | 592 # | t | 593 # | i | 594 # | c | 595 # | a | 596 # | l | 597 }, 598 "hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell. 599 "borders": { # The borders of the cell. # The borders of the cell. 600 "top": { # A border along a cell. # The top border of the cell. 601 "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border. 602 # for simplicity of conversion to/from color representations in various 603 # languages over compactness; for example, the fields of this representation 604 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 605 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 606 # method in iOS; and, with just a little work, it can be easily formatted into 607 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 608 # 609 # Example (Java): 610 # 611 # import com.google.type.Color; 612 # 613 # // ... 614 # public static java.awt.Color fromProto(Color protocolor) { 615 # float alpha = protocolor.hasAlpha() 616 # ? protocolor.getAlpha().getValue() 617 # : 1.0; 618 # 619 # return new java.awt.Color( 620 # protocolor.getRed(), 621 # protocolor.getGreen(), 622 # protocolor.getBlue(), 623 # alpha); 624 # } 625 # 626 # public static Color toProto(java.awt.Color color) { 627 # float red = (float) color.getRed(); 628 # float green = (float) color.getGreen(); 629 # float blue = (float) color.getBlue(); 630 # float denominator = 255.0; 631 # Color.Builder resultBuilder = 632 # Color 633 # .newBuilder() 634 # .setRed(red / denominator) 635 # .setGreen(green / denominator) 636 # .setBlue(blue / denominator); 637 # int alpha = color.getAlpha(); 638 # if (alpha != 255) { 639 # result.setAlpha( 640 # FloatValue 641 # .newBuilder() 642 # .setValue(((float) alpha) / denominator) 643 # .build()); 644 # } 645 # return resultBuilder.build(); 646 # } 647 # // ... 648 # 649 # Example (iOS / Obj-C): 650 # 651 # // ... 652 # static UIColor* fromProto(Color* protocolor) { 653 # float red = [protocolor red]; 654 # float green = [protocolor green]; 655 # float blue = [protocolor blue]; 656 # FloatValue* alpha_wrapper = [protocolor alpha]; 657 # float alpha = 1.0; 658 # if (alpha_wrapper != nil) { 659 # alpha = [alpha_wrapper value]; 660 # } 661 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 662 # } 663 # 664 # static Color* toProto(UIColor* color) { 665 # CGFloat red, green, blue, alpha; 666 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 667 # return nil; 668 # } 669 # Color* result = [Color alloc] init]; 670 # [result setRed:red]; 671 # [result setGreen:green]; 672 # [result setBlue:blue]; 673 # if (alpha <= 0.9999) { 674 # [result setAlpha:floatWrapperWithValue(alpha)]; 675 # } 676 # [result autorelease]; 677 # return result; 678 # } 679 # // ... 680 # 681 # Example (JavaScript): 682 # 683 # // ... 684 # 685 # var protoToCssColor = function(rgb_color) { 686 # var redFrac = rgb_color.red || 0.0; 687 # var greenFrac = rgb_color.green || 0.0; 688 # var blueFrac = rgb_color.blue || 0.0; 689 # var red = Math.floor(redFrac * 255); 690 # var green = Math.floor(greenFrac * 255); 691 # var blue = Math.floor(blueFrac * 255); 692 # 693 # if (!('alpha' in rgb_color)) { 694 # return rgbToCssColor_(red, green, blue); 695 # } 696 # 697 # var alphaFrac = rgb_color.alpha.value || 0.0; 698 # var rgbParams = [red, green, blue].join(','); 699 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 700 # }; 701 # 702 # var rgbToCssColor_ = function(red, green, blue) { 703 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 704 # var hexString = rgbNumber.toString(16); 705 # var missingZeros = 6 - hexString.length; 706 # var resultBuilder = ['#']; 707 # for (var i = 0; i < missingZeros; i++) { 708 # resultBuilder.push('0'); 709 # } 710 # resultBuilder.push(hexString); 711 # return resultBuilder.join(''); 712 # }; 713 # 714 # // ... 715 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 716 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 717 # the final pixel color is defined by the equation: 718 # 719 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 720 # 721 # This means that a value of 1.0 corresponds to a solid color, whereas 722 # a value of 0.0 corresponds to a completely transparent color. This 723 # uses a wrapper message rather than a simple float scalar so that it is 724 # possible to distinguish between a default value and the value being unset. 725 # If omitted, this color object is to be rendered as a solid color 726 # (as if the alpha value had been explicitly given with a value of 1.0). 727 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 728 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 729 }, 730 "width": 42, # The width of the border, in pixels. 731 # Deprecated; the width is determined by the "style" field. 732 "style": "A String", # The style of the border. 733 }, 734 "right": { # A border along a cell. # The right border of the cell. 735 "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border. 736 # for simplicity of conversion to/from color representations in various 737 # languages over compactness; for example, the fields of this representation 738 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 739 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 740 # method in iOS; and, with just a little work, it can be easily formatted into 741 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 742 # 743 # Example (Java): 744 # 745 # import com.google.type.Color; 746 # 747 # // ... 748 # public static java.awt.Color fromProto(Color protocolor) { 749 # float alpha = protocolor.hasAlpha() 750 # ? protocolor.getAlpha().getValue() 751 # : 1.0; 752 # 753 # return new java.awt.Color( 754 # protocolor.getRed(), 755 # protocolor.getGreen(), 756 # protocolor.getBlue(), 757 # alpha); 758 # } 759 # 760 # public static Color toProto(java.awt.Color color) { 761 # float red = (float) color.getRed(); 762 # float green = (float) color.getGreen(); 763 # float blue = (float) color.getBlue(); 764 # float denominator = 255.0; 765 # Color.Builder resultBuilder = 766 # Color 767 # .newBuilder() 768 # .setRed(red / denominator) 769 # .setGreen(green / denominator) 770 # .setBlue(blue / denominator); 771 # int alpha = color.getAlpha(); 772 # if (alpha != 255) { 773 # result.setAlpha( 774 # FloatValue 775 # .newBuilder() 776 # .setValue(((float) alpha) / denominator) 777 # .build()); 778 # } 779 # return resultBuilder.build(); 780 # } 781 # // ... 782 # 783 # Example (iOS / Obj-C): 784 # 785 # // ... 786 # static UIColor* fromProto(Color* protocolor) { 787 # float red = [protocolor red]; 788 # float green = [protocolor green]; 789 # float blue = [protocolor blue]; 790 # FloatValue* alpha_wrapper = [protocolor alpha]; 791 # float alpha = 1.0; 792 # if (alpha_wrapper != nil) { 793 # alpha = [alpha_wrapper value]; 794 # } 795 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 796 # } 797 # 798 # static Color* toProto(UIColor* color) { 799 # CGFloat red, green, blue, alpha; 800 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 801 # return nil; 802 # } 803 # Color* result = [Color alloc] init]; 804 # [result setRed:red]; 805 # [result setGreen:green]; 806 # [result setBlue:blue]; 807 # if (alpha <= 0.9999) { 808 # [result setAlpha:floatWrapperWithValue(alpha)]; 809 # } 810 # [result autorelease]; 811 # return result; 812 # } 813 # // ... 814 # 815 # Example (JavaScript): 816 # 817 # // ... 818 # 819 # var protoToCssColor = function(rgb_color) { 820 # var redFrac = rgb_color.red || 0.0; 821 # var greenFrac = rgb_color.green || 0.0; 822 # var blueFrac = rgb_color.blue || 0.0; 823 # var red = Math.floor(redFrac * 255); 824 # var green = Math.floor(greenFrac * 255); 825 # var blue = Math.floor(blueFrac * 255); 826 # 827 # if (!('alpha' in rgb_color)) { 828 # return rgbToCssColor_(red, green, blue); 829 # } 830 # 831 # var alphaFrac = rgb_color.alpha.value || 0.0; 832 # var rgbParams = [red, green, blue].join(','); 833 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 834 # }; 835 # 836 # var rgbToCssColor_ = function(red, green, blue) { 837 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 838 # var hexString = rgbNumber.toString(16); 839 # var missingZeros = 6 - hexString.length; 840 # var resultBuilder = ['#']; 841 # for (var i = 0; i < missingZeros; i++) { 842 # resultBuilder.push('0'); 843 # } 844 # resultBuilder.push(hexString); 845 # return resultBuilder.join(''); 846 # }; 847 # 848 # // ... 849 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 850 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 851 # the final pixel color is defined by the equation: 852 # 853 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 854 # 855 # This means that a value of 1.0 corresponds to a solid color, whereas 856 # a value of 0.0 corresponds to a completely transparent color. This 857 # uses a wrapper message rather than a simple float scalar so that it is 858 # possible to distinguish between a default value and the value being unset. 859 # If omitted, this color object is to be rendered as a solid color 860 # (as if the alpha value had been explicitly given with a value of 1.0). 861 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 862 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 863 }, 864 "width": 42, # The width of the border, in pixels. 865 # Deprecated; the width is determined by the "style" field. 866 "style": "A String", # The style of the border. 867 }, 868 "bottom": { # A border along a cell. # The bottom border of the cell. 869 "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border. 870 # for simplicity of conversion to/from color representations in various 871 # languages over compactness; for example, the fields of this representation 872 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 873 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 874 # method in iOS; and, with just a little work, it can be easily formatted into 875 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 876 # 877 # Example (Java): 878 # 879 # import com.google.type.Color; 880 # 881 # // ... 882 # public static java.awt.Color fromProto(Color protocolor) { 883 # float alpha = protocolor.hasAlpha() 884 # ? protocolor.getAlpha().getValue() 885 # : 1.0; 886 # 887 # return new java.awt.Color( 888 # protocolor.getRed(), 889 # protocolor.getGreen(), 890 # protocolor.getBlue(), 891 # alpha); 892 # } 893 # 894 # public static Color toProto(java.awt.Color color) { 895 # float red = (float) color.getRed(); 896 # float green = (float) color.getGreen(); 897 # float blue = (float) color.getBlue(); 898 # float denominator = 255.0; 899 # Color.Builder resultBuilder = 900 # Color 901 # .newBuilder() 902 # .setRed(red / denominator) 903 # .setGreen(green / denominator) 904 # .setBlue(blue / denominator); 905 # int alpha = color.getAlpha(); 906 # if (alpha != 255) { 907 # result.setAlpha( 908 # FloatValue 909 # .newBuilder() 910 # .setValue(((float) alpha) / denominator) 911 # .build()); 912 # } 913 # return resultBuilder.build(); 914 # } 915 # // ... 916 # 917 # Example (iOS / Obj-C): 918 # 919 # // ... 920 # static UIColor* fromProto(Color* protocolor) { 921 # float red = [protocolor red]; 922 # float green = [protocolor green]; 923 # float blue = [protocolor blue]; 924 # FloatValue* alpha_wrapper = [protocolor alpha]; 925 # float alpha = 1.0; 926 # if (alpha_wrapper != nil) { 927 # alpha = [alpha_wrapper value]; 928 # } 929 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 930 # } 931 # 932 # static Color* toProto(UIColor* color) { 933 # CGFloat red, green, blue, alpha; 934 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 935 # return nil; 936 # } 937 # Color* result = [Color alloc] init]; 938 # [result setRed:red]; 939 # [result setGreen:green]; 940 # [result setBlue:blue]; 941 # if (alpha <= 0.9999) { 942 # [result setAlpha:floatWrapperWithValue(alpha)]; 943 # } 944 # [result autorelease]; 945 # return result; 946 # } 947 # // ... 948 # 949 # Example (JavaScript): 950 # 951 # // ... 952 # 953 # var protoToCssColor = function(rgb_color) { 954 # var redFrac = rgb_color.red || 0.0; 955 # var greenFrac = rgb_color.green || 0.0; 956 # var blueFrac = rgb_color.blue || 0.0; 957 # var red = Math.floor(redFrac * 255); 958 # var green = Math.floor(greenFrac * 255); 959 # var blue = Math.floor(blueFrac * 255); 960 # 961 # if (!('alpha' in rgb_color)) { 962 # return rgbToCssColor_(red, green, blue); 963 # } 964 # 965 # var alphaFrac = rgb_color.alpha.value || 0.0; 966 # var rgbParams = [red, green, blue].join(','); 967 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 968 # }; 969 # 970 # var rgbToCssColor_ = function(red, green, blue) { 971 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 972 # var hexString = rgbNumber.toString(16); 973 # var missingZeros = 6 - hexString.length; 974 # var resultBuilder = ['#']; 975 # for (var i = 0; i < missingZeros; i++) { 976 # resultBuilder.push('0'); 977 # } 978 # resultBuilder.push(hexString); 979 # return resultBuilder.join(''); 980 # }; 981 # 982 # // ... 983 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 984 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 985 # the final pixel color is defined by the equation: 986 # 987 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 988 # 989 # This means that a value of 1.0 corresponds to a solid color, whereas 990 # a value of 0.0 corresponds to a completely transparent color. This 991 # uses a wrapper message rather than a simple float scalar so that it is 992 # possible to distinguish between a default value and the value being unset. 993 # If omitted, this color object is to be rendered as a solid color 994 # (as if the alpha value had been explicitly given with a value of 1.0). 995 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 996 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 997 }, 998 "width": 42, # The width of the border, in pixels. 999 # Deprecated; the width is determined by the "style" field. 1000 "style": "A String", # The style of the border. 1001 }, 1002 "left": { # A border along a cell. # The left border of the cell. 1003 "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border. 1004 # for simplicity of conversion to/from color representations in various 1005 # languages over compactness; for example, the fields of this representation 1006 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 1007 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 1008 # method in iOS; and, with just a little work, it can be easily formatted into 1009 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 1010 # 1011 # Example (Java): 1012 # 1013 # import com.google.type.Color; 1014 # 1015 # // ... 1016 # public static java.awt.Color fromProto(Color protocolor) { 1017 # float alpha = protocolor.hasAlpha() 1018 # ? protocolor.getAlpha().getValue() 1019 # : 1.0; 1020 # 1021 # return new java.awt.Color( 1022 # protocolor.getRed(), 1023 # protocolor.getGreen(), 1024 # protocolor.getBlue(), 1025 # alpha); 1026 # } 1027 # 1028 # public static Color toProto(java.awt.Color color) { 1029 # float red = (float) color.getRed(); 1030 # float green = (float) color.getGreen(); 1031 # float blue = (float) color.getBlue(); 1032 # float denominator = 255.0; 1033 # Color.Builder resultBuilder = 1034 # Color 1035 # .newBuilder() 1036 # .setRed(red / denominator) 1037 # .setGreen(green / denominator) 1038 # .setBlue(blue / denominator); 1039 # int alpha = color.getAlpha(); 1040 # if (alpha != 255) { 1041 # result.setAlpha( 1042 # FloatValue 1043 # .newBuilder() 1044 # .setValue(((float) alpha) / denominator) 1045 # .build()); 1046 # } 1047 # return resultBuilder.build(); 1048 # } 1049 # // ... 1050 # 1051 # Example (iOS / Obj-C): 1052 # 1053 # // ... 1054 # static UIColor* fromProto(Color* protocolor) { 1055 # float red = [protocolor red]; 1056 # float green = [protocolor green]; 1057 # float blue = [protocolor blue]; 1058 # FloatValue* alpha_wrapper = [protocolor alpha]; 1059 # float alpha = 1.0; 1060 # if (alpha_wrapper != nil) { 1061 # alpha = [alpha_wrapper value]; 1062 # } 1063 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 1064 # } 1065 # 1066 # static Color* toProto(UIColor* color) { 1067 # CGFloat red, green, blue, alpha; 1068 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 1069 # return nil; 1070 # } 1071 # Color* result = [Color alloc] init]; 1072 # [result setRed:red]; 1073 # [result setGreen:green]; 1074 # [result setBlue:blue]; 1075 # if (alpha <= 0.9999) { 1076 # [result setAlpha:floatWrapperWithValue(alpha)]; 1077 # } 1078 # [result autorelease]; 1079 # return result; 1080 # } 1081 # // ... 1082 # 1083 # Example (JavaScript): 1084 # 1085 # // ... 1086 # 1087 # var protoToCssColor = function(rgb_color) { 1088 # var redFrac = rgb_color.red || 0.0; 1089 # var greenFrac = rgb_color.green || 0.0; 1090 # var blueFrac = rgb_color.blue || 0.0; 1091 # var red = Math.floor(redFrac * 255); 1092 # var green = Math.floor(greenFrac * 255); 1093 # var blue = Math.floor(blueFrac * 255); 1094 # 1095 # if (!('alpha' in rgb_color)) { 1096 # return rgbToCssColor_(red, green, blue); 1097 # } 1098 # 1099 # var alphaFrac = rgb_color.alpha.value || 0.0; 1100 # var rgbParams = [red, green, blue].join(','); 1101 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 1102 # }; 1103 # 1104 # var rgbToCssColor_ = function(red, green, blue) { 1105 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 1106 # var hexString = rgbNumber.toString(16); 1107 # var missingZeros = 6 - hexString.length; 1108 # var resultBuilder = ['#']; 1109 # for (var i = 0; i < missingZeros; i++) { 1110 # resultBuilder.push('0'); 1111 # } 1112 # resultBuilder.push(hexString); 1113 # return resultBuilder.join(''); 1114 # }; 1115 # 1116 # // ... 1117 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 1118 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 1119 # the final pixel color is defined by the equation: 1120 # 1121 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 1122 # 1123 # This means that a value of 1.0 corresponds to a solid color, whereas 1124 # a value of 0.0 corresponds to a completely transparent color. This 1125 # uses a wrapper message rather than a simple float scalar so that it is 1126 # possible to distinguish between a default value and the value being unset. 1127 # If omitted, this color object is to be rendered as a solid color 1128 # (as if the alpha value had been explicitly given with a value of 1.0). 1129 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 1130 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 1131 }, 1132 "width": 42, # The width of the border, in pixels. 1133 # Deprecated; the width is determined by the "style" field. 1134 "style": "A String", # The style of the border. 1135 }, 1136 }, 1137 "wrapStrategy": "A String", # The wrap strategy for the value in the cell. 1138 }, 1139 }, 1140 "gradientRule": { # A rule that applies a gradient color scale format, based on # The formatting will vary based on the gradients in the rule. 1141 # the interpolation points listed. The format of a cell will vary 1142 # based on its contents as compared to the values of the interpolation 1143 # points. 1144 "maxpoint": { # A single interpolation point on a gradient conditional format. # The final interpolation point. 1145 # These pin the gradient color scale according to the color, 1146 # type and value chosen. 1147 "color": { # Represents a color in the RGBA color space. This representation is designed # The color this interpolation point should use. 1148 # for simplicity of conversion to/from color representations in various 1149 # languages over compactness; for example, the fields of this representation 1150 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 1151 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 1152 # method in iOS; and, with just a little work, it can be easily formatted into 1153 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 1154 # 1155 # Example (Java): 1156 # 1157 # import com.google.type.Color; 1158 # 1159 # // ... 1160 # public static java.awt.Color fromProto(Color protocolor) { 1161 # float alpha = protocolor.hasAlpha() 1162 # ? protocolor.getAlpha().getValue() 1163 # : 1.0; 1164 # 1165 # return new java.awt.Color( 1166 # protocolor.getRed(), 1167 # protocolor.getGreen(), 1168 # protocolor.getBlue(), 1169 # alpha); 1170 # } 1171 # 1172 # public static Color toProto(java.awt.Color color) { 1173 # float red = (float) color.getRed(); 1174 # float green = (float) color.getGreen(); 1175 # float blue = (float) color.getBlue(); 1176 # float denominator = 255.0; 1177 # Color.Builder resultBuilder = 1178 # Color 1179 # .newBuilder() 1180 # .setRed(red / denominator) 1181 # .setGreen(green / denominator) 1182 # .setBlue(blue / denominator); 1183 # int alpha = color.getAlpha(); 1184 # if (alpha != 255) { 1185 # result.setAlpha( 1186 # FloatValue 1187 # .newBuilder() 1188 # .setValue(((float) alpha) / denominator) 1189 # .build()); 1190 # } 1191 # return resultBuilder.build(); 1192 # } 1193 # // ... 1194 # 1195 # Example (iOS / Obj-C): 1196 # 1197 # // ... 1198 # static UIColor* fromProto(Color* protocolor) { 1199 # float red = [protocolor red]; 1200 # float green = [protocolor green]; 1201 # float blue = [protocolor blue]; 1202 # FloatValue* alpha_wrapper = [protocolor alpha]; 1203 # float alpha = 1.0; 1204 # if (alpha_wrapper != nil) { 1205 # alpha = [alpha_wrapper value]; 1206 # } 1207 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 1208 # } 1209 # 1210 # static Color* toProto(UIColor* color) { 1211 # CGFloat red, green, blue, alpha; 1212 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 1213 # return nil; 1214 # } 1215 # Color* result = [Color alloc] init]; 1216 # [result setRed:red]; 1217 # [result setGreen:green]; 1218 # [result setBlue:blue]; 1219 # if (alpha <= 0.9999) { 1220 # [result setAlpha:floatWrapperWithValue(alpha)]; 1221 # } 1222 # [result autorelease]; 1223 # return result; 1224 # } 1225 # // ... 1226 # 1227 # Example (JavaScript): 1228 # 1229 # // ... 1230 # 1231 # var protoToCssColor = function(rgb_color) { 1232 # var redFrac = rgb_color.red || 0.0; 1233 # var greenFrac = rgb_color.green || 0.0; 1234 # var blueFrac = rgb_color.blue || 0.0; 1235 # var red = Math.floor(redFrac * 255); 1236 # var green = Math.floor(greenFrac * 255); 1237 # var blue = Math.floor(blueFrac * 255); 1238 # 1239 # if (!('alpha' in rgb_color)) { 1240 # return rgbToCssColor_(red, green, blue); 1241 # } 1242 # 1243 # var alphaFrac = rgb_color.alpha.value || 0.0; 1244 # var rgbParams = [red, green, blue].join(','); 1245 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 1246 # }; 1247 # 1248 # var rgbToCssColor_ = function(red, green, blue) { 1249 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 1250 # var hexString = rgbNumber.toString(16); 1251 # var missingZeros = 6 - hexString.length; 1252 # var resultBuilder = ['#']; 1253 # for (var i = 0; i < missingZeros; i++) { 1254 # resultBuilder.push('0'); 1255 # } 1256 # resultBuilder.push(hexString); 1257 # return resultBuilder.join(''); 1258 # }; 1259 # 1260 # // ... 1261 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 1262 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 1263 # the final pixel color is defined by the equation: 1264 # 1265 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 1266 # 1267 # This means that a value of 1.0 corresponds to a solid color, whereas 1268 # a value of 0.0 corresponds to a completely transparent color. This 1269 # uses a wrapper message rather than a simple float scalar so that it is 1270 # possible to distinguish between a default value and the value being unset. 1271 # If omitted, this color object is to be rendered as a solid color 1272 # (as if the alpha value had been explicitly given with a value of 1.0). 1273 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 1274 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 1275 }, 1276 "type": "A String", # How the value should be interpreted. 1277 "value": "A String", # The value this interpolation point uses. May be a formula. 1278 # Unused if type is MIN or 1279 # MAX. 1280 }, 1281 "midpoint": { # A single interpolation point on a gradient conditional format. # An optional midway interpolation point. 1282 # These pin the gradient color scale according to the color, 1283 # type and value chosen. 1284 "color": { # Represents a color in the RGBA color space. This representation is designed # The color this interpolation point should use. 1285 # for simplicity of conversion to/from color representations in various 1286 # languages over compactness; for example, the fields of this representation 1287 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 1288 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 1289 # method in iOS; and, with just a little work, it can be easily formatted into 1290 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 1291 # 1292 # Example (Java): 1293 # 1294 # import com.google.type.Color; 1295 # 1296 # // ... 1297 # public static java.awt.Color fromProto(Color protocolor) { 1298 # float alpha = protocolor.hasAlpha() 1299 # ? protocolor.getAlpha().getValue() 1300 # : 1.0; 1301 # 1302 # return new java.awt.Color( 1303 # protocolor.getRed(), 1304 # protocolor.getGreen(), 1305 # protocolor.getBlue(), 1306 # alpha); 1307 # } 1308 # 1309 # public static Color toProto(java.awt.Color color) { 1310 # float red = (float) color.getRed(); 1311 # float green = (float) color.getGreen(); 1312 # float blue = (float) color.getBlue(); 1313 # float denominator = 255.0; 1314 # Color.Builder resultBuilder = 1315 # Color 1316 # .newBuilder() 1317 # .setRed(red / denominator) 1318 # .setGreen(green / denominator) 1319 # .setBlue(blue / denominator); 1320 # int alpha = color.getAlpha(); 1321 # if (alpha != 255) { 1322 # result.setAlpha( 1323 # FloatValue 1324 # .newBuilder() 1325 # .setValue(((float) alpha) / denominator) 1326 # .build()); 1327 # } 1328 # return resultBuilder.build(); 1329 # } 1330 # // ... 1331 # 1332 # Example (iOS / Obj-C): 1333 # 1334 # // ... 1335 # static UIColor* fromProto(Color* protocolor) { 1336 # float red = [protocolor red]; 1337 # float green = [protocolor green]; 1338 # float blue = [protocolor blue]; 1339 # FloatValue* alpha_wrapper = [protocolor alpha]; 1340 # float alpha = 1.0; 1341 # if (alpha_wrapper != nil) { 1342 # alpha = [alpha_wrapper value]; 1343 # } 1344 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 1345 # } 1346 # 1347 # static Color* toProto(UIColor* color) { 1348 # CGFloat red, green, blue, alpha; 1349 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 1350 # return nil; 1351 # } 1352 # Color* result = [Color alloc] init]; 1353 # [result setRed:red]; 1354 # [result setGreen:green]; 1355 # [result setBlue:blue]; 1356 # if (alpha <= 0.9999) { 1357 # [result setAlpha:floatWrapperWithValue(alpha)]; 1358 # } 1359 # [result autorelease]; 1360 # return result; 1361 # } 1362 # // ... 1363 # 1364 # Example (JavaScript): 1365 # 1366 # // ... 1367 # 1368 # var protoToCssColor = function(rgb_color) { 1369 # var redFrac = rgb_color.red || 0.0; 1370 # var greenFrac = rgb_color.green || 0.0; 1371 # var blueFrac = rgb_color.blue || 0.0; 1372 # var red = Math.floor(redFrac * 255); 1373 # var green = Math.floor(greenFrac * 255); 1374 # var blue = Math.floor(blueFrac * 255); 1375 # 1376 # if (!('alpha' in rgb_color)) { 1377 # return rgbToCssColor_(red, green, blue); 1378 # } 1379 # 1380 # var alphaFrac = rgb_color.alpha.value || 0.0; 1381 # var rgbParams = [red, green, blue].join(','); 1382 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 1383 # }; 1384 # 1385 # var rgbToCssColor_ = function(red, green, blue) { 1386 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 1387 # var hexString = rgbNumber.toString(16); 1388 # var missingZeros = 6 - hexString.length; 1389 # var resultBuilder = ['#']; 1390 # for (var i = 0; i < missingZeros; i++) { 1391 # resultBuilder.push('0'); 1392 # } 1393 # resultBuilder.push(hexString); 1394 # return resultBuilder.join(''); 1395 # }; 1396 # 1397 # // ... 1398 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 1399 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 1400 # the final pixel color is defined by the equation: 1401 # 1402 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 1403 # 1404 # This means that a value of 1.0 corresponds to a solid color, whereas 1405 # a value of 0.0 corresponds to a completely transparent color. This 1406 # uses a wrapper message rather than a simple float scalar so that it is 1407 # possible to distinguish between a default value and the value being unset. 1408 # If omitted, this color object is to be rendered as a solid color 1409 # (as if the alpha value had been explicitly given with a value of 1.0). 1410 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 1411 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 1412 }, 1413 "type": "A String", # How the value should be interpreted. 1414 "value": "A String", # The value this interpolation point uses. May be a formula. 1415 # Unused if type is MIN or 1416 # MAX. 1417 }, 1418 "minpoint": { # A single interpolation point on a gradient conditional format. # The starting interpolation point. 1419 # These pin the gradient color scale according to the color, 1420 # type and value chosen. 1421 "color": { # Represents a color in the RGBA color space. This representation is designed # The color this interpolation point should use. 1422 # for simplicity of conversion to/from color representations in various 1423 # languages over compactness; for example, the fields of this representation 1424 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 1425 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 1426 # method in iOS; and, with just a little work, it can be easily formatted into 1427 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 1428 # 1429 # Example (Java): 1430 # 1431 # import com.google.type.Color; 1432 # 1433 # // ... 1434 # public static java.awt.Color fromProto(Color protocolor) { 1435 # float alpha = protocolor.hasAlpha() 1436 # ? protocolor.getAlpha().getValue() 1437 # : 1.0; 1438 # 1439 # return new java.awt.Color( 1440 # protocolor.getRed(), 1441 # protocolor.getGreen(), 1442 # protocolor.getBlue(), 1443 # alpha); 1444 # } 1445 # 1446 # public static Color toProto(java.awt.Color color) { 1447 # float red = (float) color.getRed(); 1448 # float green = (float) color.getGreen(); 1449 # float blue = (float) color.getBlue(); 1450 # float denominator = 255.0; 1451 # Color.Builder resultBuilder = 1452 # Color 1453 # .newBuilder() 1454 # .setRed(red / denominator) 1455 # .setGreen(green / denominator) 1456 # .setBlue(blue / denominator); 1457 # int alpha = color.getAlpha(); 1458 # if (alpha != 255) { 1459 # result.setAlpha( 1460 # FloatValue 1461 # .newBuilder() 1462 # .setValue(((float) alpha) / denominator) 1463 # .build()); 1464 # } 1465 # return resultBuilder.build(); 1466 # } 1467 # // ... 1468 # 1469 # Example (iOS / Obj-C): 1470 # 1471 # // ... 1472 # static UIColor* fromProto(Color* protocolor) { 1473 # float red = [protocolor red]; 1474 # float green = [protocolor green]; 1475 # float blue = [protocolor blue]; 1476 # FloatValue* alpha_wrapper = [protocolor alpha]; 1477 # float alpha = 1.0; 1478 # if (alpha_wrapper != nil) { 1479 # alpha = [alpha_wrapper value]; 1480 # } 1481 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 1482 # } 1483 # 1484 # static Color* toProto(UIColor* color) { 1485 # CGFloat red, green, blue, alpha; 1486 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 1487 # return nil; 1488 # } 1489 # Color* result = [Color alloc] init]; 1490 # [result setRed:red]; 1491 # [result setGreen:green]; 1492 # [result setBlue:blue]; 1493 # if (alpha <= 0.9999) { 1494 # [result setAlpha:floatWrapperWithValue(alpha)]; 1495 # } 1496 # [result autorelease]; 1497 # return result; 1498 # } 1499 # // ... 1500 # 1501 # Example (JavaScript): 1502 # 1503 # // ... 1504 # 1505 # var protoToCssColor = function(rgb_color) { 1506 # var redFrac = rgb_color.red || 0.0; 1507 # var greenFrac = rgb_color.green || 0.0; 1508 # var blueFrac = rgb_color.blue || 0.0; 1509 # var red = Math.floor(redFrac * 255); 1510 # var green = Math.floor(greenFrac * 255); 1511 # var blue = Math.floor(blueFrac * 255); 1512 # 1513 # if (!('alpha' in rgb_color)) { 1514 # return rgbToCssColor_(red, green, blue); 1515 # } 1516 # 1517 # var alphaFrac = rgb_color.alpha.value || 0.0; 1518 # var rgbParams = [red, green, blue].join(','); 1519 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 1520 # }; 1521 # 1522 # var rgbToCssColor_ = function(red, green, blue) { 1523 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 1524 # var hexString = rgbNumber.toString(16); 1525 # var missingZeros = 6 - hexString.length; 1526 # var resultBuilder = ['#']; 1527 # for (var i = 0; i < missingZeros; i++) { 1528 # resultBuilder.push('0'); 1529 # } 1530 # resultBuilder.push(hexString); 1531 # return resultBuilder.join(''); 1532 # }; 1533 # 1534 # // ... 1535 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 1536 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 1537 # the final pixel color is defined by the equation: 1538 # 1539 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 1540 # 1541 # This means that a value of 1.0 corresponds to a solid color, whereas 1542 # a value of 0.0 corresponds to a completely transparent color. This 1543 # uses a wrapper message rather than a simple float scalar so that it is 1544 # possible to distinguish between a default value and the value being unset. 1545 # If omitted, this color object is to be rendered as a solid color 1546 # (as if the alpha value had been explicitly given with a value of 1.0). 1547 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 1548 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 1549 }, 1550 "type": "A String", # How the value should be interpreted. 1551 "value": "A String", # The value this interpolation point uses. May be a formula. 1552 # Unused if type is MIN or 1553 # MAX. 1554 }, 1555 }, 1556 }, 1557 }, 1558 "updateProtectedRange": { # Updates an existing protected range with the specified # Updates a protected range. 1559 # protectedRangeId. 1560 "fields": "A String", # The fields that should be updated. At least one field must be specified. 1561 # The root `protectedRange` is implied and should not be specified. 1562 # A single `"*"` can be used as short-hand for listing every field. 1563 "protectedRange": { # A protected range. # The protected range to update with the new properties. 1564 "unprotectedRanges": [ # The list of unprotected ranges within a protected sheet. 1565 # Unprotected ranges are only supported on protected sheets. 1566 { # A range on a sheet. 1567 # All indexes are zero-based. 1568 # Indexes are half open, e.g the start index is inclusive 1569 # and the end index is exclusive -- [start_index, end_index). 1570 # Missing indexes indicate the range is unbounded on that side. 1571 # 1572 # For example, if `"Sheet1"` is sheet ID 0, then: 1573 # 1574 # `Sheet1!A1:A1 == sheet_id: 0, 1575 # start_row_index: 0, end_row_index: 1, 1576 # start_column_index: 0, end_column_index: 1` 1577 # 1578 # `Sheet1!A3:B4 == sheet_id: 0, 1579 # start_row_index: 2, end_row_index: 4, 1580 # start_column_index: 0, end_column_index: 2` 1581 # 1582 # `Sheet1!A:B == sheet_id: 0, 1583 # start_column_index: 0, end_column_index: 2` 1584 # 1585 # `Sheet1!A5:B == sheet_id: 0, 1586 # start_row_index: 4, 1587 # start_column_index: 0, end_column_index: 2` 1588 # 1589 # `Sheet1 == sheet_id:0` 1590 # 1591 # The start index must always be less than or equal to the end index. 1592 # If the start index equals the end index, then the range is empty. 1593 # Empty ranges are typically not meaningful and are usually rendered in the 1594 # UI as `#REF!`. 1595 "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded. 1596 "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded. 1597 "sheetId": 42, # The sheet this range is on. 1598 "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded. 1599 "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded. 1600 }, 1601 ], 1602 "requestingUserCanEdit": True or False, # True if the user who requested this protected range can edit the 1603 # protected area. 1604 # This field is read-only. 1605 "description": "A String", # The description of this protected range. 1606 "namedRangeId": "A String", # The named range this protected range is backed by, if any. 1607 # 1608 # When writing, only one of range or named_range_id 1609 # may be set. 1610 "editors": { # The editors of a protected range. # The users and groups with edit access to the protected range. 1611 # This field is only visible to users with edit access to the protected 1612 # range and the document. 1613 # Editors are not supported with warning_only protection. 1614 "domainUsersCanEdit": True or False, # True if anyone in the document's domain has edit access to the protected 1615 # range. Domain protection is only supported on documents within a domain. 1616 "users": [ # The email addresses of users with edit access to the protected range. 1617 "A String", 1618 ], 1619 "groups": [ # The email addresses of groups with edit access to the protected range. 1620 "A String", 1621 ], 1622 }, 1623 "protectedRangeId": 42, # The ID of the protected range. 1624 # This field is read-only. 1625 "warningOnly": True or False, # True if this protected range will show a warning when editing. 1626 # Warning-based protection means that every user can edit data in the 1627 # protected range, except editing will prompt a warning asking the user 1628 # to confirm the edit. 1629 # 1630 # When writing: if this field is true, then editors is ignored. 1631 # Additionally, if this field is changed from true to false and the 1632 # `editors` field is not set (nor included in the field mask), then 1633 # the editors will be set to all the editors in the document. 1634 "range": { # A range on a sheet. # The range that is being protected. 1635 # The range may be fully unbounded, in which case this is considered 1636 # a protected sheet. 1637 # 1638 # When writing, only one of range or named_range_id 1639 # may be set. 1640 # All indexes are zero-based. 1641 # Indexes are half open, e.g the start index is inclusive 1642 # and the end index is exclusive -- [start_index, end_index). 1643 # Missing indexes indicate the range is unbounded on that side. 1644 # 1645 # For example, if `"Sheet1"` is sheet ID 0, then: 1646 # 1647 # `Sheet1!A1:A1 == sheet_id: 0, 1648 # start_row_index: 0, end_row_index: 1, 1649 # start_column_index: 0, end_column_index: 1` 1650 # 1651 # `Sheet1!A3:B4 == sheet_id: 0, 1652 # start_row_index: 2, end_row_index: 4, 1653 # start_column_index: 0, end_column_index: 2` 1654 # 1655 # `Sheet1!A:B == sheet_id: 0, 1656 # start_column_index: 0, end_column_index: 2` 1657 # 1658 # `Sheet1!A5:B == sheet_id: 0, 1659 # start_row_index: 4, 1660 # start_column_index: 0, end_column_index: 2` 1661 # 1662 # `Sheet1 == sheet_id:0` 1663 # 1664 # The start index must always be less than or equal to the end index. 1665 # If the start index equals the end index, then the range is empty. 1666 # Empty ranges are typically not meaningful and are usually rendered in the 1667 # UI as `#REF!`. 1668 "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded. 1669 "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded. 1670 "sheetId": 42, # The sheet this range is on. 1671 "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded. 1672 "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded. 1673 }, 1674 }, 1675 }, 1676 "deleteDimension": { # Deletes the dimensions from the sheet. # Deletes rows or columns in a sheet. 1677 "range": { # A range along a single dimension on a sheet. # The dimensions to delete from the sheet. 1678 # All indexes are zero-based. 1679 # Indexes are half open: the start index is inclusive 1680 # and the end index is exclusive. 1681 # Missing indexes indicate the range is unbounded on that side. 1682 "endIndex": 42, # The end (exclusive) of the span, or not set if unbounded. 1683 "startIndex": 42, # The start (inclusive) of the span, or not set if unbounded. 1684 "dimension": "A String", # The dimension of the span. 1685 "sheetId": 42, # The sheet this span is on. 1686 }, 1687 }, 1688 "addProtectedRange": { # Adds a new protected range. # Adds a protected range. 1689 "protectedRange": { # A protected range. # The protected range to be added. The 1690 # protectedRangeId field is optional; if 1691 # one is not set, an id will be randomly generated. (It is an error to 1692 # specify the ID of a range that already exists.) 1693 "unprotectedRanges": [ # The list of unprotected ranges within a protected sheet. 1694 # Unprotected ranges are only supported on protected sheets. 1695 { # A range on a sheet. 1696 # All indexes are zero-based. 1697 # Indexes are half open, e.g the start index is inclusive 1698 # and the end index is exclusive -- [start_index, end_index). 1699 # Missing indexes indicate the range is unbounded on that side. 1700 # 1701 # For example, if `"Sheet1"` is sheet ID 0, then: 1702 # 1703 # `Sheet1!A1:A1 == sheet_id: 0, 1704 # start_row_index: 0, end_row_index: 1, 1705 # start_column_index: 0, end_column_index: 1` 1706 # 1707 # `Sheet1!A3:B4 == sheet_id: 0, 1708 # start_row_index: 2, end_row_index: 4, 1709 # start_column_index: 0, end_column_index: 2` 1710 # 1711 # `Sheet1!A:B == sheet_id: 0, 1712 # start_column_index: 0, end_column_index: 2` 1713 # 1714 # `Sheet1!A5:B == sheet_id: 0, 1715 # start_row_index: 4, 1716 # start_column_index: 0, end_column_index: 2` 1717 # 1718 # `Sheet1 == sheet_id:0` 1719 # 1720 # The start index must always be less than or equal to the end index. 1721 # If the start index equals the end index, then the range is empty. 1722 # Empty ranges are typically not meaningful and are usually rendered in the 1723 # UI as `#REF!`. 1724 "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded. 1725 "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded. 1726 "sheetId": 42, # The sheet this range is on. 1727 "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded. 1728 "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded. 1729 }, 1730 ], 1731 "requestingUserCanEdit": True or False, # True if the user who requested this protected range can edit the 1732 # protected area. 1733 # This field is read-only. 1734 "description": "A String", # The description of this protected range. 1735 "namedRangeId": "A String", # The named range this protected range is backed by, if any. 1736 # 1737 # When writing, only one of range or named_range_id 1738 # may be set. 1739 "editors": { # The editors of a protected range. # The users and groups with edit access to the protected range. 1740 # This field is only visible to users with edit access to the protected 1741 # range and the document. 1742 # Editors are not supported with warning_only protection. 1743 "domainUsersCanEdit": True or False, # True if anyone in the document's domain has edit access to the protected 1744 # range. Domain protection is only supported on documents within a domain. 1745 "users": [ # The email addresses of users with edit access to the protected range. 1746 "A String", 1747 ], 1748 "groups": [ # The email addresses of groups with edit access to the protected range. 1749 "A String", 1750 ], 1751 }, 1752 "protectedRangeId": 42, # The ID of the protected range. 1753 # This field is read-only. 1754 "warningOnly": True or False, # True if this protected range will show a warning when editing. 1755 # Warning-based protection means that every user can edit data in the 1756 # protected range, except editing will prompt a warning asking the user 1757 # to confirm the edit. 1758 # 1759 # When writing: if this field is true, then editors is ignored. 1760 # Additionally, if this field is changed from true to false and the 1761 # `editors` field is not set (nor included in the field mask), then 1762 # the editors will be set to all the editors in the document. 1763 "range": { # A range on a sheet. # The range that is being protected. 1764 # The range may be fully unbounded, in which case this is considered 1765 # a protected sheet. 1766 # 1767 # When writing, only one of range or named_range_id 1768 # may be set. 1769 # All indexes are zero-based. 1770 # Indexes are half open, e.g the start index is inclusive 1771 # and the end index is exclusive -- [start_index, end_index). 1772 # Missing indexes indicate the range is unbounded on that side. 1773 # 1774 # For example, if `"Sheet1"` is sheet ID 0, then: 1775 # 1776 # `Sheet1!A1:A1 == sheet_id: 0, 1777 # start_row_index: 0, end_row_index: 1, 1778 # start_column_index: 0, end_column_index: 1` 1779 # 1780 # `Sheet1!A3:B4 == sheet_id: 0, 1781 # start_row_index: 2, end_row_index: 4, 1782 # start_column_index: 0, end_column_index: 2` 1783 # 1784 # `Sheet1!A:B == sheet_id: 0, 1785 # start_column_index: 0, end_column_index: 2` 1786 # 1787 # `Sheet1!A5:B == sheet_id: 0, 1788 # start_row_index: 4, 1789 # start_column_index: 0, end_column_index: 2` 1790 # 1791 # `Sheet1 == sheet_id:0` 1792 # 1793 # The start index must always be less than or equal to the end index. 1794 # If the start index equals the end index, then the range is empty. 1795 # Empty ranges are typically not meaningful and are usually rendered in the 1796 # UI as `#REF!`. 1797 "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded. 1798 "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded. 1799 "sheetId": 42, # The sheet this range is on. 1800 "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded. 1801 "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded. 1802 }, 1803 }, 1804 }, 1805 "deleteEmbeddedObject": { # Deletes the embedded object with the given ID. # Deletes an embedded object (e.g, chart, image) in a sheet. 1806 "objectId": 42, # The ID of the embedded object to delete. 1807 }, 1808 "pasteData": { # Inserts data into the spreadsheet starting at the specified coordinate. # Pastes data (HTML or delimited) into a sheet. 1809 "coordinate": { # A coordinate in a sheet. # The coordinate at which the data should start being inserted. 1810 # All indexes are zero-based. 1811 "rowIndex": 42, # The row index of the coordinate. 1812 "columnIndex": 42, # The column index of the coordinate. 1813 "sheetId": 42, # The sheet this coordinate is on. 1814 }, 1815 "data": "A String", # The data to insert. 1816 "delimiter": "A String", # The delimiter in the data. 1817 "html": True or False, # True if the data is HTML. 1818 "type": "A String", # How the data should be pasted. 1819 }, 1820 "updateSpreadsheetProperties": { # Updates properties of a spreadsheet. # Updates the spreadsheet's properties. 1821 "fields": "A String", # The fields that should be updated. At least one field must be specified. 1822 # The root 'properties' is implied and should not be specified. 1823 # A single `"*"` can be used as short-hand for listing every field. 1824 "properties": { # Properties of a spreadsheet. # The properties to update. 1825 "title": "A String", # The title of the spreadsheet. 1826 "locale": "A String", # The locale of the spreadsheet in one of the following formats: 1827 # 1828 # * an ISO 639-1 language code such as `en` 1829 # 1830 # * an ISO 639-2 language code such as `fil`, if no 639-1 code exists 1831 # 1832 # * a combination of the ISO language code and country code, such as `en_US` 1833 # 1834 # Note: when updating this field, not all locales/languages are supported. 1835 "defaultFormat": { # The format of a cell. # The default format of all cells in the spreadsheet. 1836 # CellData.effectiveFormat will not be set if the 1837 # cell's format is equal to this default format. 1838 # This field is read-only. 1839 "numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user. 1840 "pattern": "A String", # Pattern string used for formatting. If not set, a default pattern based on 1841 # the user's locale will be used if necessary for the given type. 1842 # See the [Date and Number Formats guide](/sheets/api/guides/formats) for more 1843 # information about the supported patterns. 1844 "type": "A String", # The type of the number format. 1845 # When writing, this field must be set. 1846 }, 1847 "textDirection": "A String", # The direction of the text in the cell. 1848 "padding": { # The amount of padding around the cell, in pixels. # The padding of the cell. 1849 # When updating padding, every field must be specified. 1850 "top": 42, # The top padding of the cell. 1851 "right": 42, # The right padding of the cell. 1852 "bottom": 42, # The bottom padding of the cell. 1853 "left": 42, # The left padding of the cell. 1854 }, 1855 "verticalAlignment": "A String", # The vertical alignment of the value in the cell. 1856 "backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell. 1857 # for simplicity of conversion to/from color representations in various 1858 # languages over compactness; for example, the fields of this representation 1859 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 1860 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 1861 # method in iOS; and, with just a little work, it can be easily formatted into 1862 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 1863 # 1864 # Example (Java): 1865 # 1866 # import com.google.type.Color; 1867 # 1868 # // ... 1869 # public static java.awt.Color fromProto(Color protocolor) { 1870 # float alpha = protocolor.hasAlpha() 1871 # ? protocolor.getAlpha().getValue() 1872 # : 1.0; 1873 # 1874 # return new java.awt.Color( 1875 # protocolor.getRed(), 1876 # protocolor.getGreen(), 1877 # protocolor.getBlue(), 1878 # alpha); 1879 # } 1880 # 1881 # public static Color toProto(java.awt.Color color) { 1882 # float red = (float) color.getRed(); 1883 # float green = (float) color.getGreen(); 1884 # float blue = (float) color.getBlue(); 1885 # float denominator = 255.0; 1886 # Color.Builder resultBuilder = 1887 # Color 1888 # .newBuilder() 1889 # .setRed(red / denominator) 1890 # .setGreen(green / denominator) 1891 # .setBlue(blue / denominator); 1892 # int alpha = color.getAlpha(); 1893 # if (alpha != 255) { 1894 # result.setAlpha( 1895 # FloatValue 1896 # .newBuilder() 1897 # .setValue(((float) alpha) / denominator) 1898 # .build()); 1899 # } 1900 # return resultBuilder.build(); 1901 # } 1902 # // ... 1903 # 1904 # Example (iOS / Obj-C): 1905 # 1906 # // ... 1907 # static UIColor* fromProto(Color* protocolor) { 1908 # float red = [protocolor red]; 1909 # float green = [protocolor green]; 1910 # float blue = [protocolor blue]; 1911 # FloatValue* alpha_wrapper = [protocolor alpha]; 1912 # float alpha = 1.0; 1913 # if (alpha_wrapper != nil) { 1914 # alpha = [alpha_wrapper value]; 1915 # } 1916 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 1917 # } 1918 # 1919 # static Color* toProto(UIColor* color) { 1920 # CGFloat red, green, blue, alpha; 1921 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 1922 # return nil; 1923 # } 1924 # Color* result = [Color alloc] init]; 1925 # [result setRed:red]; 1926 # [result setGreen:green]; 1927 # [result setBlue:blue]; 1928 # if (alpha <= 0.9999) { 1929 # [result setAlpha:floatWrapperWithValue(alpha)]; 1930 # } 1931 # [result autorelease]; 1932 # return result; 1933 # } 1934 # // ... 1935 # 1936 # Example (JavaScript): 1937 # 1938 # // ... 1939 # 1940 # var protoToCssColor = function(rgb_color) { 1941 # var redFrac = rgb_color.red || 0.0; 1942 # var greenFrac = rgb_color.green || 0.0; 1943 # var blueFrac = rgb_color.blue || 0.0; 1944 # var red = Math.floor(redFrac * 255); 1945 # var green = Math.floor(greenFrac * 255); 1946 # var blue = Math.floor(blueFrac * 255); 1947 # 1948 # if (!('alpha' in rgb_color)) { 1949 # return rgbToCssColor_(red, green, blue); 1950 # } 1951 # 1952 # var alphaFrac = rgb_color.alpha.value || 0.0; 1953 # var rgbParams = [red, green, blue].join(','); 1954 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 1955 # }; 1956 # 1957 # var rgbToCssColor_ = function(red, green, blue) { 1958 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 1959 # var hexString = rgbNumber.toString(16); 1960 # var missingZeros = 6 - hexString.length; 1961 # var resultBuilder = ['#']; 1962 # for (var i = 0; i < missingZeros; i++) { 1963 # resultBuilder.push('0'); 1964 # } 1965 # resultBuilder.push(hexString); 1966 # return resultBuilder.join(''); 1967 # }; 1968 # 1969 # // ... 1970 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 1971 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 1972 # the final pixel color is defined by the equation: 1973 # 1974 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 1975 # 1976 # This means that a value of 1.0 corresponds to a solid color, whereas 1977 # a value of 0.0 corresponds to a completely transparent color. This 1978 # uses a wrapper message rather than a simple float scalar so that it is 1979 # possible to distinguish between a default value and the value being unset. 1980 # If omitted, this color object is to be rendered as a solid color 1981 # (as if the alpha value had been explicitly given with a value of 1.0). 1982 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 1983 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 1984 }, 1985 "horizontalAlignment": "A String", # The horizontal alignment of the value in the cell. 1986 "textFormat": { # The format of a run of text in a cell. # The format of the text in the cell (unless overridden by a format run). 1987 # Absent values indicate that the field isn't specified. 1988 "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text. 1989 # for simplicity of conversion to/from color representations in various 1990 # languages over compactness; for example, the fields of this representation 1991 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 1992 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 1993 # method in iOS; and, with just a little work, it can be easily formatted into 1994 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 1995 # 1996 # Example (Java): 1997 # 1998 # import com.google.type.Color; 1999 # 2000 # // ... 2001 # public static java.awt.Color fromProto(Color protocolor) { 2002 # float alpha = protocolor.hasAlpha() 2003 # ? protocolor.getAlpha().getValue() 2004 # : 1.0; 2005 # 2006 # return new java.awt.Color( 2007 # protocolor.getRed(), 2008 # protocolor.getGreen(), 2009 # protocolor.getBlue(), 2010 # alpha); 2011 # } 2012 # 2013 # public static Color toProto(java.awt.Color color) { 2014 # float red = (float) color.getRed(); 2015 # float green = (float) color.getGreen(); 2016 # float blue = (float) color.getBlue(); 2017 # float denominator = 255.0; 2018 # Color.Builder resultBuilder = 2019 # Color 2020 # .newBuilder() 2021 # .setRed(red / denominator) 2022 # .setGreen(green / denominator) 2023 # .setBlue(blue / denominator); 2024 # int alpha = color.getAlpha(); 2025 # if (alpha != 255) { 2026 # result.setAlpha( 2027 # FloatValue 2028 # .newBuilder() 2029 # .setValue(((float) alpha) / denominator) 2030 # .build()); 2031 # } 2032 # return resultBuilder.build(); 2033 # } 2034 # // ... 2035 # 2036 # Example (iOS / Obj-C): 2037 # 2038 # // ... 2039 # static UIColor* fromProto(Color* protocolor) { 2040 # float red = [protocolor red]; 2041 # float green = [protocolor green]; 2042 # float blue = [protocolor blue]; 2043 # FloatValue* alpha_wrapper = [protocolor alpha]; 2044 # float alpha = 1.0; 2045 # if (alpha_wrapper != nil) { 2046 # alpha = [alpha_wrapper value]; 2047 # } 2048 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 2049 # } 2050 # 2051 # static Color* toProto(UIColor* color) { 2052 # CGFloat red, green, blue, alpha; 2053 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 2054 # return nil; 2055 # } 2056 # Color* result = [Color alloc] init]; 2057 # [result setRed:red]; 2058 # [result setGreen:green]; 2059 # [result setBlue:blue]; 2060 # if (alpha <= 0.9999) { 2061 # [result setAlpha:floatWrapperWithValue(alpha)]; 2062 # } 2063 # [result autorelease]; 2064 # return result; 2065 # } 2066 # // ... 2067 # 2068 # Example (JavaScript): 2069 # 2070 # // ... 2071 # 2072 # var protoToCssColor = function(rgb_color) { 2073 # var redFrac = rgb_color.red || 0.0; 2074 # var greenFrac = rgb_color.green || 0.0; 2075 # var blueFrac = rgb_color.blue || 0.0; 2076 # var red = Math.floor(redFrac * 255); 2077 # var green = Math.floor(greenFrac * 255); 2078 # var blue = Math.floor(blueFrac * 255); 2079 # 2080 # if (!('alpha' in rgb_color)) { 2081 # return rgbToCssColor_(red, green, blue); 2082 # } 2083 # 2084 # var alphaFrac = rgb_color.alpha.value || 0.0; 2085 # var rgbParams = [red, green, blue].join(','); 2086 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 2087 # }; 2088 # 2089 # var rgbToCssColor_ = function(red, green, blue) { 2090 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 2091 # var hexString = rgbNumber.toString(16); 2092 # var missingZeros = 6 - hexString.length; 2093 # var resultBuilder = ['#']; 2094 # for (var i = 0; i < missingZeros; i++) { 2095 # resultBuilder.push('0'); 2096 # } 2097 # resultBuilder.push(hexString); 2098 # return resultBuilder.join(''); 2099 # }; 2100 # 2101 # // ... 2102 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 2103 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 2104 # the final pixel color is defined by the equation: 2105 # 2106 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 2107 # 2108 # This means that a value of 1.0 corresponds to a solid color, whereas 2109 # a value of 0.0 corresponds to a completely transparent color. This 2110 # uses a wrapper message rather than a simple float scalar so that it is 2111 # possible to distinguish between a default value and the value being unset. 2112 # If omitted, this color object is to be rendered as a solid color 2113 # (as if the alpha value had been explicitly given with a value of 1.0). 2114 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 2115 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 2116 }, 2117 "bold": True or False, # True if the text is bold. 2118 "strikethrough": True or False, # True if the text has a strikethrough. 2119 "fontFamily": "A String", # The font family. 2120 "fontSize": 42, # The size of the font. 2121 "italic": True or False, # True if the text is italicized. 2122 "underline": True or False, # True if the text is underlined. 2123 }, 2124 "textRotation": { # The rotation applied to text in a cell. # The rotation applied to text in a cell 2125 "angle": 42, # The angle between the standard orientation and the desired orientation. 2126 # Measured in degrees. Valid values are between -90 and 90. Positive 2127 # angles are angled upwards, negative are angled downwards. 2128 # 2129 # Note: For LTR text direction positive angles are in the counterclockwise 2130 # direction, whereas for RTL they are in the clockwise direction 2131 "vertical": True or False, # If true, text reads top to bottom, but the orientation of individual 2132 # characters is unchanged. 2133 # For example: 2134 # 2135 # | V | 2136 # | e | 2137 # | r | 2138 # | t | 2139 # | i | 2140 # | c | 2141 # | a | 2142 # | l | 2143 }, 2144 "hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell. 2145 "borders": { # The borders of the cell. # The borders of the cell. 2146 "top": { # A border along a cell. # The top border of the cell. 2147 "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border. 2148 # for simplicity of conversion to/from color representations in various 2149 # languages over compactness; for example, the fields of this representation 2150 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 2151 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 2152 # method in iOS; and, with just a little work, it can be easily formatted into 2153 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 2154 # 2155 # Example (Java): 2156 # 2157 # import com.google.type.Color; 2158 # 2159 # // ... 2160 # public static java.awt.Color fromProto(Color protocolor) { 2161 # float alpha = protocolor.hasAlpha() 2162 # ? protocolor.getAlpha().getValue() 2163 # : 1.0; 2164 # 2165 # return new java.awt.Color( 2166 # protocolor.getRed(), 2167 # protocolor.getGreen(), 2168 # protocolor.getBlue(), 2169 # alpha); 2170 # } 2171 # 2172 # public static Color toProto(java.awt.Color color) { 2173 # float red = (float) color.getRed(); 2174 # float green = (float) color.getGreen(); 2175 # float blue = (float) color.getBlue(); 2176 # float denominator = 255.0; 2177 # Color.Builder resultBuilder = 2178 # Color 2179 # .newBuilder() 2180 # .setRed(red / denominator) 2181 # .setGreen(green / denominator) 2182 # .setBlue(blue / denominator); 2183 # int alpha = color.getAlpha(); 2184 # if (alpha != 255) { 2185 # result.setAlpha( 2186 # FloatValue 2187 # .newBuilder() 2188 # .setValue(((float) alpha) / denominator) 2189 # .build()); 2190 # } 2191 # return resultBuilder.build(); 2192 # } 2193 # // ... 2194 # 2195 # Example (iOS / Obj-C): 2196 # 2197 # // ... 2198 # static UIColor* fromProto(Color* protocolor) { 2199 # float red = [protocolor red]; 2200 # float green = [protocolor green]; 2201 # float blue = [protocolor blue]; 2202 # FloatValue* alpha_wrapper = [protocolor alpha]; 2203 # float alpha = 1.0; 2204 # if (alpha_wrapper != nil) { 2205 # alpha = [alpha_wrapper value]; 2206 # } 2207 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 2208 # } 2209 # 2210 # static Color* toProto(UIColor* color) { 2211 # CGFloat red, green, blue, alpha; 2212 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 2213 # return nil; 2214 # } 2215 # Color* result = [Color alloc] init]; 2216 # [result setRed:red]; 2217 # [result setGreen:green]; 2218 # [result setBlue:blue]; 2219 # if (alpha <= 0.9999) { 2220 # [result setAlpha:floatWrapperWithValue(alpha)]; 2221 # } 2222 # [result autorelease]; 2223 # return result; 2224 # } 2225 # // ... 2226 # 2227 # Example (JavaScript): 2228 # 2229 # // ... 2230 # 2231 # var protoToCssColor = function(rgb_color) { 2232 # var redFrac = rgb_color.red || 0.0; 2233 # var greenFrac = rgb_color.green || 0.0; 2234 # var blueFrac = rgb_color.blue || 0.0; 2235 # var red = Math.floor(redFrac * 255); 2236 # var green = Math.floor(greenFrac * 255); 2237 # var blue = Math.floor(blueFrac * 255); 2238 # 2239 # if (!('alpha' in rgb_color)) { 2240 # return rgbToCssColor_(red, green, blue); 2241 # } 2242 # 2243 # var alphaFrac = rgb_color.alpha.value || 0.0; 2244 # var rgbParams = [red, green, blue].join(','); 2245 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 2246 # }; 2247 # 2248 # var rgbToCssColor_ = function(red, green, blue) { 2249 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 2250 # var hexString = rgbNumber.toString(16); 2251 # var missingZeros = 6 - hexString.length; 2252 # var resultBuilder = ['#']; 2253 # for (var i = 0; i < missingZeros; i++) { 2254 # resultBuilder.push('0'); 2255 # } 2256 # resultBuilder.push(hexString); 2257 # return resultBuilder.join(''); 2258 # }; 2259 # 2260 # // ... 2261 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 2262 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 2263 # the final pixel color is defined by the equation: 2264 # 2265 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 2266 # 2267 # This means that a value of 1.0 corresponds to a solid color, whereas 2268 # a value of 0.0 corresponds to a completely transparent color. This 2269 # uses a wrapper message rather than a simple float scalar so that it is 2270 # possible to distinguish between a default value and the value being unset. 2271 # If omitted, this color object is to be rendered as a solid color 2272 # (as if the alpha value had been explicitly given with a value of 1.0). 2273 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 2274 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 2275 }, 2276 "width": 42, # The width of the border, in pixels. 2277 # Deprecated; the width is determined by the "style" field. 2278 "style": "A String", # The style of the border. 2279 }, 2280 "right": { # A border along a cell. # The right border of the cell. 2281 "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border. 2282 # for simplicity of conversion to/from color representations in various 2283 # languages over compactness; for example, the fields of this representation 2284 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 2285 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 2286 # method in iOS; and, with just a little work, it can be easily formatted into 2287 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 2288 # 2289 # Example (Java): 2290 # 2291 # import com.google.type.Color; 2292 # 2293 # // ... 2294 # public static java.awt.Color fromProto(Color protocolor) { 2295 # float alpha = protocolor.hasAlpha() 2296 # ? protocolor.getAlpha().getValue() 2297 # : 1.0; 2298 # 2299 # return new java.awt.Color( 2300 # protocolor.getRed(), 2301 # protocolor.getGreen(), 2302 # protocolor.getBlue(), 2303 # alpha); 2304 # } 2305 # 2306 # public static Color toProto(java.awt.Color color) { 2307 # float red = (float) color.getRed(); 2308 # float green = (float) color.getGreen(); 2309 # float blue = (float) color.getBlue(); 2310 # float denominator = 255.0; 2311 # Color.Builder resultBuilder = 2312 # Color 2313 # .newBuilder() 2314 # .setRed(red / denominator) 2315 # .setGreen(green / denominator) 2316 # .setBlue(blue / denominator); 2317 # int alpha = color.getAlpha(); 2318 # if (alpha != 255) { 2319 # result.setAlpha( 2320 # FloatValue 2321 # .newBuilder() 2322 # .setValue(((float) alpha) / denominator) 2323 # .build()); 2324 # } 2325 # return resultBuilder.build(); 2326 # } 2327 # // ... 2328 # 2329 # Example (iOS / Obj-C): 2330 # 2331 # // ... 2332 # static UIColor* fromProto(Color* protocolor) { 2333 # float red = [protocolor red]; 2334 # float green = [protocolor green]; 2335 # float blue = [protocolor blue]; 2336 # FloatValue* alpha_wrapper = [protocolor alpha]; 2337 # float alpha = 1.0; 2338 # if (alpha_wrapper != nil) { 2339 # alpha = [alpha_wrapper value]; 2340 # } 2341 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 2342 # } 2343 # 2344 # static Color* toProto(UIColor* color) { 2345 # CGFloat red, green, blue, alpha; 2346 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 2347 # return nil; 2348 # } 2349 # Color* result = [Color alloc] init]; 2350 # [result setRed:red]; 2351 # [result setGreen:green]; 2352 # [result setBlue:blue]; 2353 # if (alpha <= 0.9999) { 2354 # [result setAlpha:floatWrapperWithValue(alpha)]; 2355 # } 2356 # [result autorelease]; 2357 # return result; 2358 # } 2359 # // ... 2360 # 2361 # Example (JavaScript): 2362 # 2363 # // ... 2364 # 2365 # var protoToCssColor = function(rgb_color) { 2366 # var redFrac = rgb_color.red || 0.0; 2367 # var greenFrac = rgb_color.green || 0.0; 2368 # var blueFrac = rgb_color.blue || 0.0; 2369 # var red = Math.floor(redFrac * 255); 2370 # var green = Math.floor(greenFrac * 255); 2371 # var blue = Math.floor(blueFrac * 255); 2372 # 2373 # if (!('alpha' in rgb_color)) { 2374 # return rgbToCssColor_(red, green, blue); 2375 # } 2376 # 2377 # var alphaFrac = rgb_color.alpha.value || 0.0; 2378 # var rgbParams = [red, green, blue].join(','); 2379 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 2380 # }; 2381 # 2382 # var rgbToCssColor_ = function(red, green, blue) { 2383 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 2384 # var hexString = rgbNumber.toString(16); 2385 # var missingZeros = 6 - hexString.length; 2386 # var resultBuilder = ['#']; 2387 # for (var i = 0; i < missingZeros; i++) { 2388 # resultBuilder.push('0'); 2389 # } 2390 # resultBuilder.push(hexString); 2391 # return resultBuilder.join(''); 2392 # }; 2393 # 2394 # // ... 2395 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 2396 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 2397 # the final pixel color is defined by the equation: 2398 # 2399 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 2400 # 2401 # This means that a value of 1.0 corresponds to a solid color, whereas 2402 # a value of 0.0 corresponds to a completely transparent color. This 2403 # uses a wrapper message rather than a simple float scalar so that it is 2404 # possible to distinguish between a default value and the value being unset. 2405 # If omitted, this color object is to be rendered as a solid color 2406 # (as if the alpha value had been explicitly given with a value of 1.0). 2407 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 2408 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 2409 }, 2410 "width": 42, # The width of the border, in pixels. 2411 # Deprecated; the width is determined by the "style" field. 2412 "style": "A String", # The style of the border. 2413 }, 2414 "bottom": { # A border along a cell. # The bottom border of the cell. 2415 "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border. 2416 # for simplicity of conversion to/from color representations in various 2417 # languages over compactness; for example, the fields of this representation 2418 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 2419 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 2420 # method in iOS; and, with just a little work, it can be easily formatted into 2421 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 2422 # 2423 # Example (Java): 2424 # 2425 # import com.google.type.Color; 2426 # 2427 # // ... 2428 # public static java.awt.Color fromProto(Color protocolor) { 2429 # float alpha = protocolor.hasAlpha() 2430 # ? protocolor.getAlpha().getValue() 2431 # : 1.0; 2432 # 2433 # return new java.awt.Color( 2434 # protocolor.getRed(), 2435 # protocolor.getGreen(), 2436 # protocolor.getBlue(), 2437 # alpha); 2438 # } 2439 # 2440 # public static Color toProto(java.awt.Color color) { 2441 # float red = (float) color.getRed(); 2442 # float green = (float) color.getGreen(); 2443 # float blue = (float) color.getBlue(); 2444 # float denominator = 255.0; 2445 # Color.Builder resultBuilder = 2446 # Color 2447 # .newBuilder() 2448 # .setRed(red / denominator) 2449 # .setGreen(green / denominator) 2450 # .setBlue(blue / denominator); 2451 # int alpha = color.getAlpha(); 2452 # if (alpha != 255) { 2453 # result.setAlpha( 2454 # FloatValue 2455 # .newBuilder() 2456 # .setValue(((float) alpha) / denominator) 2457 # .build()); 2458 # } 2459 # return resultBuilder.build(); 2460 # } 2461 # // ... 2462 # 2463 # Example (iOS / Obj-C): 2464 # 2465 # // ... 2466 # static UIColor* fromProto(Color* protocolor) { 2467 # float red = [protocolor red]; 2468 # float green = [protocolor green]; 2469 # float blue = [protocolor blue]; 2470 # FloatValue* alpha_wrapper = [protocolor alpha]; 2471 # float alpha = 1.0; 2472 # if (alpha_wrapper != nil) { 2473 # alpha = [alpha_wrapper value]; 2474 # } 2475 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 2476 # } 2477 # 2478 # static Color* toProto(UIColor* color) { 2479 # CGFloat red, green, blue, alpha; 2480 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 2481 # return nil; 2482 # } 2483 # Color* result = [Color alloc] init]; 2484 # [result setRed:red]; 2485 # [result setGreen:green]; 2486 # [result setBlue:blue]; 2487 # if (alpha <= 0.9999) { 2488 # [result setAlpha:floatWrapperWithValue(alpha)]; 2489 # } 2490 # [result autorelease]; 2491 # return result; 2492 # } 2493 # // ... 2494 # 2495 # Example (JavaScript): 2496 # 2497 # // ... 2498 # 2499 # var protoToCssColor = function(rgb_color) { 2500 # var redFrac = rgb_color.red || 0.0; 2501 # var greenFrac = rgb_color.green || 0.0; 2502 # var blueFrac = rgb_color.blue || 0.0; 2503 # var red = Math.floor(redFrac * 255); 2504 # var green = Math.floor(greenFrac * 255); 2505 # var blue = Math.floor(blueFrac * 255); 2506 # 2507 # if (!('alpha' in rgb_color)) { 2508 # return rgbToCssColor_(red, green, blue); 2509 # } 2510 # 2511 # var alphaFrac = rgb_color.alpha.value || 0.0; 2512 # var rgbParams = [red, green, blue].join(','); 2513 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 2514 # }; 2515 # 2516 # var rgbToCssColor_ = function(red, green, blue) { 2517 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 2518 # var hexString = rgbNumber.toString(16); 2519 # var missingZeros = 6 - hexString.length; 2520 # var resultBuilder = ['#']; 2521 # for (var i = 0; i < missingZeros; i++) { 2522 # resultBuilder.push('0'); 2523 # } 2524 # resultBuilder.push(hexString); 2525 # return resultBuilder.join(''); 2526 # }; 2527 # 2528 # // ... 2529 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 2530 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 2531 # the final pixel color is defined by the equation: 2532 # 2533 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 2534 # 2535 # This means that a value of 1.0 corresponds to a solid color, whereas 2536 # a value of 0.0 corresponds to a completely transparent color. This 2537 # uses a wrapper message rather than a simple float scalar so that it is 2538 # possible to distinguish between a default value and the value being unset. 2539 # If omitted, this color object is to be rendered as a solid color 2540 # (as if the alpha value had been explicitly given with a value of 1.0). 2541 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 2542 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 2543 }, 2544 "width": 42, # The width of the border, in pixels. 2545 # Deprecated; the width is determined by the "style" field. 2546 "style": "A String", # The style of the border. 2547 }, 2548 "left": { # A border along a cell. # The left border of the cell. 2549 "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border. 2550 # for simplicity of conversion to/from color representations in various 2551 # languages over compactness; for example, the fields of this representation 2552 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 2553 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 2554 # method in iOS; and, with just a little work, it can be easily formatted into 2555 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 2556 # 2557 # Example (Java): 2558 # 2559 # import com.google.type.Color; 2560 # 2561 # // ... 2562 # public static java.awt.Color fromProto(Color protocolor) { 2563 # float alpha = protocolor.hasAlpha() 2564 # ? protocolor.getAlpha().getValue() 2565 # : 1.0; 2566 # 2567 # return new java.awt.Color( 2568 # protocolor.getRed(), 2569 # protocolor.getGreen(), 2570 # protocolor.getBlue(), 2571 # alpha); 2572 # } 2573 # 2574 # public static Color toProto(java.awt.Color color) { 2575 # float red = (float) color.getRed(); 2576 # float green = (float) color.getGreen(); 2577 # float blue = (float) color.getBlue(); 2578 # float denominator = 255.0; 2579 # Color.Builder resultBuilder = 2580 # Color 2581 # .newBuilder() 2582 # .setRed(red / denominator) 2583 # .setGreen(green / denominator) 2584 # .setBlue(blue / denominator); 2585 # int alpha = color.getAlpha(); 2586 # if (alpha != 255) { 2587 # result.setAlpha( 2588 # FloatValue 2589 # .newBuilder() 2590 # .setValue(((float) alpha) / denominator) 2591 # .build()); 2592 # } 2593 # return resultBuilder.build(); 2594 # } 2595 # // ... 2596 # 2597 # Example (iOS / Obj-C): 2598 # 2599 # // ... 2600 # static UIColor* fromProto(Color* protocolor) { 2601 # float red = [protocolor red]; 2602 # float green = [protocolor green]; 2603 # float blue = [protocolor blue]; 2604 # FloatValue* alpha_wrapper = [protocolor alpha]; 2605 # float alpha = 1.0; 2606 # if (alpha_wrapper != nil) { 2607 # alpha = [alpha_wrapper value]; 2608 # } 2609 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 2610 # } 2611 # 2612 # static Color* toProto(UIColor* color) { 2613 # CGFloat red, green, blue, alpha; 2614 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 2615 # return nil; 2616 # } 2617 # Color* result = [Color alloc] init]; 2618 # [result setRed:red]; 2619 # [result setGreen:green]; 2620 # [result setBlue:blue]; 2621 # if (alpha <= 0.9999) { 2622 # [result setAlpha:floatWrapperWithValue(alpha)]; 2623 # } 2624 # [result autorelease]; 2625 # return result; 2626 # } 2627 # // ... 2628 # 2629 # Example (JavaScript): 2630 # 2631 # // ... 2632 # 2633 # var protoToCssColor = function(rgb_color) { 2634 # var redFrac = rgb_color.red || 0.0; 2635 # var greenFrac = rgb_color.green || 0.0; 2636 # var blueFrac = rgb_color.blue || 0.0; 2637 # var red = Math.floor(redFrac * 255); 2638 # var green = Math.floor(greenFrac * 255); 2639 # var blue = Math.floor(blueFrac * 255); 2640 # 2641 # if (!('alpha' in rgb_color)) { 2642 # return rgbToCssColor_(red, green, blue); 2643 # } 2644 # 2645 # var alphaFrac = rgb_color.alpha.value || 0.0; 2646 # var rgbParams = [red, green, blue].join(','); 2647 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 2648 # }; 2649 # 2650 # var rgbToCssColor_ = function(red, green, blue) { 2651 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 2652 # var hexString = rgbNumber.toString(16); 2653 # var missingZeros = 6 - hexString.length; 2654 # var resultBuilder = ['#']; 2655 # for (var i = 0; i < missingZeros; i++) { 2656 # resultBuilder.push('0'); 2657 # } 2658 # resultBuilder.push(hexString); 2659 # return resultBuilder.join(''); 2660 # }; 2661 # 2662 # // ... 2663 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 2664 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 2665 # the final pixel color is defined by the equation: 2666 # 2667 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 2668 # 2669 # This means that a value of 1.0 corresponds to a solid color, whereas 2670 # a value of 0.0 corresponds to a completely transparent color. This 2671 # uses a wrapper message rather than a simple float scalar so that it is 2672 # possible to distinguish between a default value and the value being unset. 2673 # If omitted, this color object is to be rendered as a solid color 2674 # (as if the alpha value had been explicitly given with a value of 1.0). 2675 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 2676 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 2677 }, 2678 "width": 42, # The width of the border, in pixels. 2679 # Deprecated; the width is determined by the "style" field. 2680 "style": "A String", # The style of the border. 2681 }, 2682 }, 2683 "wrapStrategy": "A String", # The wrap strategy for the value in the cell. 2684 }, 2685 "autoRecalc": "A String", # The amount of time to wait before volatile functions are recalculated. 2686 "iterativeCalculationSettings": { # Settings to control how circular dependencies are resolved with iterative # Determines whether and how circular references are resolved with iterative 2687 # calculation. Absence of this field means that circular references will 2688 # result in calculation errors. 2689 # calculation. 2690 "convergenceThreshold": 3.14, # When iterative calculation is enabled and successive results differ by 2691 # less than this threshold value, the calculation rounds stop. 2692 "maxIterations": 42, # When iterative calculation is enabled, the maximum number of calculation 2693 # rounds to perform. 2694 }, 2695 "timeZone": "A String", # The time zone of the spreadsheet, in CLDR format such as 2696 # `America/New_York`. If the time zone isn't recognized, this may 2697 # be a custom time zone such as `GMT-07:00`. 2698 }, 2699 }, 2700 "appendCells": { # Adds new cells after the last row with data in a sheet, # Appends cells after the last row with data in a sheet. 2701 # inserting new rows into the sheet if necessary. 2702 "fields": "A String", # The fields of CellData that should be updated. 2703 # At least one field must be specified. 2704 # The root is the CellData; 'row.values.' should not be specified. 2705 # A single `"*"` can be used as short-hand for listing every field. 2706 "rows": [ # The data to append. 2707 { # Data about each cell in a row. 2708 "values": [ # The values in the row, one per column. 2709 { # Data about a specific cell. 2710 "pivotTable": { # A pivot table. # A pivot table anchored at this cell. The size of pivot table itself 2711 # is computed dynamically based on its data, grouping, filters, values, 2712 # etc. Only the top-left cell of the pivot table contains the pivot table 2713 # definition. The other cells will contain the calculated values of the 2714 # results of the pivot in their effective_value fields. 2715 "valueLayout": "A String", # Whether values should be listed horizontally (as columns) 2716 # or vertically (as rows). 2717 "rows": [ # Each row grouping in the pivot table. 2718 { # A single grouping (either row or column) in a pivot table. 2719 "showTotals": True or False, # True if the pivot table should include the totals for this grouping. 2720 "valueMetadata": [ # Metadata about values in the grouping. 2721 { # Metadata about a value in a pivot grouping. 2722 "collapsed": True or False, # True if the data corresponding to the value is collapsed. 2723 "value": { # The kinds of value that a cell in a spreadsheet can have. # The calculated value the metadata corresponds to. 2724 # (Note that formulaValue is not valid, 2725 # because the values will be calculated.) 2726 "stringValue": "A String", # Represents a string value. 2727 # Leading single quotes are not included. For example, if the user typed 2728 # `'123` into the UI, this would be represented as a `stringValue` of 2729 # `"123"`. 2730 "boolValue": True or False, # Represents a boolean value. 2731 "errorValue": { # An error in a cell. # Represents an error. 2732 # This field is read-only. 2733 "message": "A String", # A message with more information about the error 2734 # (in the spreadsheet's locale). 2735 "type": "A String", # The type of error. 2736 }, 2737 "formulaValue": "A String", # Represents a formula. 2738 "numberValue": 3.14, # Represents a double value. 2739 # Note: Dates, Times and DateTimes are represented as doubles in 2740 # "serial number" format. 2741 }, 2742 }, 2743 ], 2744 "valueBucket": { # Information about which values in a pivot group should be used for sorting. # The bucket of the opposite pivot group to sort by. 2745 # If not specified, sorting is alphabetical by this group's values. 2746 "buckets": [ # Determines the bucket from which values are chosen to sort. 2747 # 2748 # For example, in a pivot table with one row group & two column groups, 2749 # the row group can list up to two values. The first value corresponds 2750 # to a value within the first column group, and the second value 2751 # corresponds to a value in the second column group. If no values 2752 # are listed, this would indicate that the row should be sorted according 2753 # to the "Grand Total" over the column groups. If a single value is listed, 2754 # this would correspond to using the "Total" of that bucket. 2755 { # The kinds of value that a cell in a spreadsheet can have. 2756 "stringValue": "A String", # Represents a string value. 2757 # Leading single quotes are not included. For example, if the user typed 2758 # `'123` into the UI, this would be represented as a `stringValue` of 2759 # `"123"`. 2760 "boolValue": True or False, # Represents a boolean value. 2761 "errorValue": { # An error in a cell. # Represents an error. 2762 # This field is read-only. 2763 "message": "A String", # A message with more information about the error 2764 # (in the spreadsheet's locale). 2765 "type": "A String", # The type of error. 2766 }, 2767 "formulaValue": "A String", # Represents a formula. 2768 "numberValue": 3.14, # Represents a double value. 2769 # Note: Dates, Times and DateTimes are represented as doubles in 2770 # "serial number" format. 2771 }, 2772 ], 2773 "valuesIndex": 42, # The offset in the PivotTable.values list which the values in this 2774 # grouping should be sorted by. 2775 }, 2776 "sortOrder": "A String", # The order the values in this group should be sorted. 2777 "sourceColumnOffset": 42, # The column offset of the source range that this grouping is based on. 2778 # 2779 # For example, if the source was `C10:E15`, a `sourceColumnOffset` of `0` 2780 # means this group refers to column `C`, whereas the offset `1` would refer 2781 # to column `D`. 2782 }, 2783 ], 2784 "source": { # A range on a sheet. # The range the pivot table is reading data from. 2785 # All indexes are zero-based. 2786 # Indexes are half open, e.g the start index is inclusive 2787 # and the end index is exclusive -- [start_index, end_index). 2788 # Missing indexes indicate the range is unbounded on that side. 2789 # 2790 # For example, if `"Sheet1"` is sheet ID 0, then: 2791 # 2792 # `Sheet1!A1:A1 == sheet_id: 0, 2793 # start_row_index: 0, end_row_index: 1, 2794 # start_column_index: 0, end_column_index: 1` 2795 # 2796 # `Sheet1!A3:B4 == sheet_id: 0, 2797 # start_row_index: 2, end_row_index: 4, 2798 # start_column_index: 0, end_column_index: 2` 2799 # 2800 # `Sheet1!A:B == sheet_id: 0, 2801 # start_column_index: 0, end_column_index: 2` 2802 # 2803 # `Sheet1!A5:B == sheet_id: 0, 2804 # start_row_index: 4, 2805 # start_column_index: 0, end_column_index: 2` 2806 # 2807 # `Sheet1 == sheet_id:0` 2808 # 2809 # The start index must always be less than or equal to the end index. 2810 # If the start index equals the end index, then the range is empty. 2811 # Empty ranges are typically not meaningful and are usually rendered in the 2812 # UI as `#REF!`. 2813 "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded. 2814 "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded. 2815 "sheetId": 42, # The sheet this range is on. 2816 "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded. 2817 "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded. 2818 }, 2819 "values": [ # A list of values to include in the pivot table. 2820 { # The definition of how a value in a pivot table should be calculated. 2821 "formula": "A String", # A custom formula to calculate the value. The formula must start 2822 # with an `=` character. 2823 "sourceColumnOffset": 42, # The column offset of the source range that this value reads from. 2824 # 2825 # For example, if the source was `C10:E15`, a `sourceColumnOffset` of `0` 2826 # means this value refers to column `C`, whereas the offset `1` would 2827 # refer to column `D`. 2828 "summarizeFunction": "A String", # A function to summarize the value. 2829 # If formula is set, the only supported values are 2830 # SUM and 2831 # CUSTOM. 2832 # If sourceColumnOffset is set, then `CUSTOM` 2833 # is not supported. 2834 "name": "A String", # A name to use for the value. This is only used if formula was set. 2835 # Otherwise, the column name is used. 2836 }, 2837 ], 2838 "criteria": { # An optional mapping of filters per source column offset. 2839 # 2840 # The filters will be applied before aggregating data into the pivot table. 2841 # The map's key is the column offset of the source range that you want to 2842 # filter, and the value is the criteria for that column. 2843 # 2844 # For example, if the source was `C10:E15`, a key of `0` will have the filter 2845 # for column `C`, whereas the key `1` is for column `D`. 2846 "a_key": { # Criteria for showing/hiding rows in a pivot table. 2847 "visibleValues": [ # Values that should be included. Values not listed here are excluded. 2848 "A String", 2849 ], 2850 }, 2851 }, 2852 "columns": [ # Each column grouping in the pivot table. 2853 { # A single grouping (either row or column) in a pivot table. 2854 "showTotals": True or False, # True if the pivot table should include the totals for this grouping. 2855 "valueMetadata": [ # Metadata about values in the grouping. 2856 { # Metadata about a value in a pivot grouping. 2857 "collapsed": True or False, # True if the data corresponding to the value is collapsed. 2858 "value": { # The kinds of value that a cell in a spreadsheet can have. # The calculated value the metadata corresponds to. 2859 # (Note that formulaValue is not valid, 2860 # because the values will be calculated.) 2861 "stringValue": "A String", # Represents a string value. 2862 # Leading single quotes are not included. For example, if the user typed 2863 # `'123` into the UI, this would be represented as a `stringValue` of 2864 # `"123"`. 2865 "boolValue": True or False, # Represents a boolean value. 2866 "errorValue": { # An error in a cell. # Represents an error. 2867 # This field is read-only. 2868 "message": "A String", # A message with more information about the error 2869 # (in the spreadsheet's locale). 2870 "type": "A String", # The type of error. 2871 }, 2872 "formulaValue": "A String", # Represents a formula. 2873 "numberValue": 3.14, # Represents a double value. 2874 # Note: Dates, Times and DateTimes are represented as doubles in 2875 # "serial number" format. 2876 }, 2877 }, 2878 ], 2879 "valueBucket": { # Information about which values in a pivot group should be used for sorting. # The bucket of the opposite pivot group to sort by. 2880 # If not specified, sorting is alphabetical by this group's values. 2881 "buckets": [ # Determines the bucket from which values are chosen to sort. 2882 # 2883 # For example, in a pivot table with one row group & two column groups, 2884 # the row group can list up to two values. The first value corresponds 2885 # to a value within the first column group, and the second value 2886 # corresponds to a value in the second column group. If no values 2887 # are listed, this would indicate that the row should be sorted according 2888 # to the "Grand Total" over the column groups. If a single value is listed, 2889 # this would correspond to using the "Total" of that bucket. 2890 { # The kinds of value that a cell in a spreadsheet can have. 2891 "stringValue": "A String", # Represents a string value. 2892 # Leading single quotes are not included. For example, if the user typed 2893 # `'123` into the UI, this would be represented as a `stringValue` of 2894 # `"123"`. 2895 "boolValue": True or False, # Represents a boolean value. 2896 "errorValue": { # An error in a cell. # Represents an error. 2897 # This field is read-only. 2898 "message": "A String", # A message with more information about the error 2899 # (in the spreadsheet's locale). 2900 "type": "A String", # The type of error. 2901 }, 2902 "formulaValue": "A String", # Represents a formula. 2903 "numberValue": 3.14, # Represents a double value. 2904 # Note: Dates, Times and DateTimes are represented as doubles in 2905 # "serial number" format. 2906 }, 2907 ], 2908 "valuesIndex": 42, # The offset in the PivotTable.values list which the values in this 2909 # grouping should be sorted by. 2910 }, 2911 "sortOrder": "A String", # The order the values in this group should be sorted. 2912 "sourceColumnOffset": 42, # The column offset of the source range that this grouping is based on. 2913 # 2914 # For example, if the source was `C10:E15`, a `sourceColumnOffset` of `0` 2915 # means this group refers to column `C`, whereas the offset `1` would refer 2916 # to column `D`. 2917 }, 2918 ], 2919 }, 2920 "hyperlink": "A String", # A hyperlink this cell points to, if any. 2921 # This field is read-only. (To set it, use a `=HYPERLINK` formula 2922 # in the userEnteredValue.formulaValue 2923 # field.) 2924 "effectiveValue": { # The kinds of value that a cell in a spreadsheet can have. # The effective value of the cell. For cells with formulas, this will be 2925 # the calculated value. For cells with literals, this will be 2926 # the same as the user_entered_value. 2927 # This field is read-only. 2928 "stringValue": "A String", # Represents a string value. 2929 # Leading single quotes are not included. For example, if the user typed 2930 # `'123` into the UI, this would be represented as a `stringValue` of 2931 # `"123"`. 2932 "boolValue": True or False, # Represents a boolean value. 2933 "errorValue": { # An error in a cell. # Represents an error. 2934 # This field is read-only. 2935 "message": "A String", # A message with more information about the error 2936 # (in the spreadsheet's locale). 2937 "type": "A String", # The type of error. 2938 }, 2939 "formulaValue": "A String", # Represents a formula. 2940 "numberValue": 3.14, # Represents a double value. 2941 # Note: Dates, Times and DateTimes are represented as doubles in 2942 # "serial number" format. 2943 }, 2944 "formattedValue": "A String", # The formatted value of the cell. 2945 # This is the value as it's shown to the user. 2946 # This field is read-only. 2947 "userEnteredValue": { # The kinds of value that a cell in a spreadsheet can have. # The value the user entered in the cell. e.g, `1234`, `'Hello'`, or `=NOW()` 2948 # Note: Dates, Times and DateTimes are represented as doubles in 2949 # serial number format. 2950 "stringValue": "A String", # Represents a string value. 2951 # Leading single quotes are not included. For example, if the user typed 2952 # `'123` into the UI, this would be represented as a `stringValue` of 2953 # `"123"`. 2954 "boolValue": True or False, # Represents a boolean value. 2955 "errorValue": { # An error in a cell. # Represents an error. 2956 # This field is read-only. 2957 "message": "A String", # A message with more information about the error 2958 # (in the spreadsheet's locale). 2959 "type": "A String", # The type of error. 2960 }, 2961 "formulaValue": "A String", # Represents a formula. 2962 "numberValue": 3.14, # Represents a double value. 2963 # Note: Dates, Times and DateTimes are represented as doubles in 2964 # "serial number" format. 2965 }, 2966 "note": "A String", # Any note on the cell. 2967 "effectiveFormat": { # The format of a cell. # The effective format being used by the cell. 2968 # This includes the results of applying any conditional formatting and, 2969 # if the cell contains a formula, the computed number format. 2970 # If the effective format is the default format, effective format will 2971 # not be written. 2972 # This field is read-only. 2973 "numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user. 2974 "pattern": "A String", # Pattern string used for formatting. If not set, a default pattern based on 2975 # the user's locale will be used if necessary for the given type. 2976 # See the [Date and Number Formats guide](/sheets/api/guides/formats) for more 2977 # information about the supported patterns. 2978 "type": "A String", # The type of the number format. 2979 # When writing, this field must be set. 2980 }, 2981 "textDirection": "A String", # The direction of the text in the cell. 2982 "padding": { # The amount of padding around the cell, in pixels. # The padding of the cell. 2983 # When updating padding, every field must be specified. 2984 "top": 42, # The top padding of the cell. 2985 "right": 42, # The right padding of the cell. 2986 "bottom": 42, # The bottom padding of the cell. 2987 "left": 42, # The left padding of the cell. 2988 }, 2989 "verticalAlignment": "A String", # The vertical alignment of the value in the cell. 2990 "backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell. 2991 # for simplicity of conversion to/from color representations in various 2992 # languages over compactness; for example, the fields of this representation 2993 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 2994 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 2995 # method in iOS; and, with just a little work, it can be easily formatted into 2996 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 2997 # 2998 # Example (Java): 2999 # 3000 # import com.google.type.Color; 3001 # 3002 # // ... 3003 # public static java.awt.Color fromProto(Color protocolor) { 3004 # float alpha = protocolor.hasAlpha() 3005 # ? protocolor.getAlpha().getValue() 3006 # : 1.0; 3007 # 3008 # return new java.awt.Color( 3009 # protocolor.getRed(), 3010 # protocolor.getGreen(), 3011 # protocolor.getBlue(), 3012 # alpha); 3013 # } 3014 # 3015 # public static Color toProto(java.awt.Color color) { 3016 # float red = (float) color.getRed(); 3017 # float green = (float) color.getGreen(); 3018 # float blue = (float) color.getBlue(); 3019 # float denominator = 255.0; 3020 # Color.Builder resultBuilder = 3021 # Color 3022 # .newBuilder() 3023 # .setRed(red / denominator) 3024 # .setGreen(green / denominator) 3025 # .setBlue(blue / denominator); 3026 # int alpha = color.getAlpha(); 3027 # if (alpha != 255) { 3028 # result.setAlpha( 3029 # FloatValue 3030 # .newBuilder() 3031 # .setValue(((float) alpha) / denominator) 3032 # .build()); 3033 # } 3034 # return resultBuilder.build(); 3035 # } 3036 # // ... 3037 # 3038 # Example (iOS / Obj-C): 3039 # 3040 # // ... 3041 # static UIColor* fromProto(Color* protocolor) { 3042 # float red = [protocolor red]; 3043 # float green = [protocolor green]; 3044 # float blue = [protocolor blue]; 3045 # FloatValue* alpha_wrapper = [protocolor alpha]; 3046 # float alpha = 1.0; 3047 # if (alpha_wrapper != nil) { 3048 # alpha = [alpha_wrapper value]; 3049 # } 3050 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 3051 # } 3052 # 3053 # static Color* toProto(UIColor* color) { 3054 # CGFloat red, green, blue, alpha; 3055 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 3056 # return nil; 3057 # } 3058 # Color* result = [Color alloc] init]; 3059 # [result setRed:red]; 3060 # [result setGreen:green]; 3061 # [result setBlue:blue]; 3062 # if (alpha <= 0.9999) { 3063 # [result setAlpha:floatWrapperWithValue(alpha)]; 3064 # } 3065 # [result autorelease]; 3066 # return result; 3067 # } 3068 # // ... 3069 # 3070 # Example (JavaScript): 3071 # 3072 # // ... 3073 # 3074 # var protoToCssColor = function(rgb_color) { 3075 # var redFrac = rgb_color.red || 0.0; 3076 # var greenFrac = rgb_color.green || 0.0; 3077 # var blueFrac = rgb_color.blue || 0.0; 3078 # var red = Math.floor(redFrac * 255); 3079 # var green = Math.floor(greenFrac * 255); 3080 # var blue = Math.floor(blueFrac * 255); 3081 # 3082 # if (!('alpha' in rgb_color)) { 3083 # return rgbToCssColor_(red, green, blue); 3084 # } 3085 # 3086 # var alphaFrac = rgb_color.alpha.value || 0.0; 3087 # var rgbParams = [red, green, blue].join(','); 3088 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 3089 # }; 3090 # 3091 # var rgbToCssColor_ = function(red, green, blue) { 3092 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 3093 # var hexString = rgbNumber.toString(16); 3094 # var missingZeros = 6 - hexString.length; 3095 # var resultBuilder = ['#']; 3096 # for (var i = 0; i < missingZeros; i++) { 3097 # resultBuilder.push('0'); 3098 # } 3099 # resultBuilder.push(hexString); 3100 # return resultBuilder.join(''); 3101 # }; 3102 # 3103 # // ... 3104 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 3105 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 3106 # the final pixel color is defined by the equation: 3107 # 3108 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 3109 # 3110 # This means that a value of 1.0 corresponds to a solid color, whereas 3111 # a value of 0.0 corresponds to a completely transparent color. This 3112 # uses a wrapper message rather than a simple float scalar so that it is 3113 # possible to distinguish between a default value and the value being unset. 3114 # If omitted, this color object is to be rendered as a solid color 3115 # (as if the alpha value had been explicitly given with a value of 1.0). 3116 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 3117 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 3118 }, 3119 "horizontalAlignment": "A String", # The horizontal alignment of the value in the cell. 3120 "textFormat": { # The format of a run of text in a cell. # The format of the text in the cell (unless overridden by a format run). 3121 # Absent values indicate that the field isn't specified. 3122 "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text. 3123 # for simplicity of conversion to/from color representations in various 3124 # languages over compactness; for example, the fields of this representation 3125 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 3126 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 3127 # method in iOS; and, with just a little work, it can be easily formatted into 3128 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 3129 # 3130 # Example (Java): 3131 # 3132 # import com.google.type.Color; 3133 # 3134 # // ... 3135 # public static java.awt.Color fromProto(Color protocolor) { 3136 # float alpha = protocolor.hasAlpha() 3137 # ? protocolor.getAlpha().getValue() 3138 # : 1.0; 3139 # 3140 # return new java.awt.Color( 3141 # protocolor.getRed(), 3142 # protocolor.getGreen(), 3143 # protocolor.getBlue(), 3144 # alpha); 3145 # } 3146 # 3147 # public static Color toProto(java.awt.Color color) { 3148 # float red = (float) color.getRed(); 3149 # float green = (float) color.getGreen(); 3150 # float blue = (float) color.getBlue(); 3151 # float denominator = 255.0; 3152 # Color.Builder resultBuilder = 3153 # Color 3154 # .newBuilder() 3155 # .setRed(red / denominator) 3156 # .setGreen(green / denominator) 3157 # .setBlue(blue / denominator); 3158 # int alpha = color.getAlpha(); 3159 # if (alpha != 255) { 3160 # result.setAlpha( 3161 # FloatValue 3162 # .newBuilder() 3163 # .setValue(((float) alpha) / denominator) 3164 # .build()); 3165 # } 3166 # return resultBuilder.build(); 3167 # } 3168 # // ... 3169 # 3170 # Example (iOS / Obj-C): 3171 # 3172 # // ... 3173 # static UIColor* fromProto(Color* protocolor) { 3174 # float red = [protocolor red]; 3175 # float green = [protocolor green]; 3176 # float blue = [protocolor blue]; 3177 # FloatValue* alpha_wrapper = [protocolor alpha]; 3178 # float alpha = 1.0; 3179 # if (alpha_wrapper != nil) { 3180 # alpha = [alpha_wrapper value]; 3181 # } 3182 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 3183 # } 3184 # 3185 # static Color* toProto(UIColor* color) { 3186 # CGFloat red, green, blue, alpha; 3187 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 3188 # return nil; 3189 # } 3190 # Color* result = [Color alloc] init]; 3191 # [result setRed:red]; 3192 # [result setGreen:green]; 3193 # [result setBlue:blue]; 3194 # if (alpha <= 0.9999) { 3195 # [result setAlpha:floatWrapperWithValue(alpha)]; 3196 # } 3197 # [result autorelease]; 3198 # return result; 3199 # } 3200 # // ... 3201 # 3202 # Example (JavaScript): 3203 # 3204 # // ... 3205 # 3206 # var protoToCssColor = function(rgb_color) { 3207 # var redFrac = rgb_color.red || 0.0; 3208 # var greenFrac = rgb_color.green || 0.0; 3209 # var blueFrac = rgb_color.blue || 0.0; 3210 # var red = Math.floor(redFrac * 255); 3211 # var green = Math.floor(greenFrac * 255); 3212 # var blue = Math.floor(blueFrac * 255); 3213 # 3214 # if (!('alpha' in rgb_color)) { 3215 # return rgbToCssColor_(red, green, blue); 3216 # } 3217 # 3218 # var alphaFrac = rgb_color.alpha.value || 0.0; 3219 # var rgbParams = [red, green, blue].join(','); 3220 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 3221 # }; 3222 # 3223 # var rgbToCssColor_ = function(red, green, blue) { 3224 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 3225 # var hexString = rgbNumber.toString(16); 3226 # var missingZeros = 6 - hexString.length; 3227 # var resultBuilder = ['#']; 3228 # for (var i = 0; i < missingZeros; i++) { 3229 # resultBuilder.push('0'); 3230 # } 3231 # resultBuilder.push(hexString); 3232 # return resultBuilder.join(''); 3233 # }; 3234 # 3235 # // ... 3236 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 3237 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 3238 # the final pixel color is defined by the equation: 3239 # 3240 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 3241 # 3242 # This means that a value of 1.0 corresponds to a solid color, whereas 3243 # a value of 0.0 corresponds to a completely transparent color. This 3244 # uses a wrapper message rather than a simple float scalar so that it is 3245 # possible to distinguish between a default value and the value being unset. 3246 # If omitted, this color object is to be rendered as a solid color 3247 # (as if the alpha value had been explicitly given with a value of 1.0). 3248 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 3249 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 3250 }, 3251 "bold": True or False, # True if the text is bold. 3252 "strikethrough": True or False, # True if the text has a strikethrough. 3253 "fontFamily": "A String", # The font family. 3254 "fontSize": 42, # The size of the font. 3255 "italic": True or False, # True if the text is italicized. 3256 "underline": True or False, # True if the text is underlined. 3257 }, 3258 "textRotation": { # The rotation applied to text in a cell. # The rotation applied to text in a cell 3259 "angle": 42, # The angle between the standard orientation and the desired orientation. 3260 # Measured in degrees. Valid values are between -90 and 90. Positive 3261 # angles are angled upwards, negative are angled downwards. 3262 # 3263 # Note: For LTR text direction positive angles are in the counterclockwise 3264 # direction, whereas for RTL they are in the clockwise direction 3265 "vertical": True or False, # If true, text reads top to bottom, but the orientation of individual 3266 # characters is unchanged. 3267 # For example: 3268 # 3269 # | V | 3270 # | e | 3271 # | r | 3272 # | t | 3273 # | i | 3274 # | c | 3275 # | a | 3276 # | l | 3277 }, 3278 "hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell. 3279 "borders": { # The borders of the cell. # The borders of the cell. 3280 "top": { # A border along a cell. # The top border of the cell. 3281 "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border. 3282 # for simplicity of conversion to/from color representations in various 3283 # languages over compactness; for example, the fields of this representation 3284 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 3285 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 3286 # method in iOS; and, with just a little work, it can be easily formatted into 3287 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 3288 # 3289 # Example (Java): 3290 # 3291 # import com.google.type.Color; 3292 # 3293 # // ... 3294 # public static java.awt.Color fromProto(Color protocolor) { 3295 # float alpha = protocolor.hasAlpha() 3296 # ? protocolor.getAlpha().getValue() 3297 # : 1.0; 3298 # 3299 # return new java.awt.Color( 3300 # protocolor.getRed(), 3301 # protocolor.getGreen(), 3302 # protocolor.getBlue(), 3303 # alpha); 3304 # } 3305 # 3306 # public static Color toProto(java.awt.Color color) { 3307 # float red = (float) color.getRed(); 3308 # float green = (float) color.getGreen(); 3309 # float blue = (float) color.getBlue(); 3310 # float denominator = 255.0; 3311 # Color.Builder resultBuilder = 3312 # Color 3313 # .newBuilder() 3314 # .setRed(red / denominator) 3315 # .setGreen(green / denominator) 3316 # .setBlue(blue / denominator); 3317 # int alpha = color.getAlpha(); 3318 # if (alpha != 255) { 3319 # result.setAlpha( 3320 # FloatValue 3321 # .newBuilder() 3322 # .setValue(((float) alpha) / denominator) 3323 # .build()); 3324 # } 3325 # return resultBuilder.build(); 3326 # } 3327 # // ... 3328 # 3329 # Example (iOS / Obj-C): 3330 # 3331 # // ... 3332 # static UIColor* fromProto(Color* protocolor) { 3333 # float red = [protocolor red]; 3334 # float green = [protocolor green]; 3335 # float blue = [protocolor blue]; 3336 # FloatValue* alpha_wrapper = [protocolor alpha]; 3337 # float alpha = 1.0; 3338 # if (alpha_wrapper != nil) { 3339 # alpha = [alpha_wrapper value]; 3340 # } 3341 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 3342 # } 3343 # 3344 # static Color* toProto(UIColor* color) { 3345 # CGFloat red, green, blue, alpha; 3346 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 3347 # return nil; 3348 # } 3349 # Color* result = [Color alloc] init]; 3350 # [result setRed:red]; 3351 # [result setGreen:green]; 3352 # [result setBlue:blue]; 3353 # if (alpha <= 0.9999) { 3354 # [result setAlpha:floatWrapperWithValue(alpha)]; 3355 # } 3356 # [result autorelease]; 3357 # return result; 3358 # } 3359 # // ... 3360 # 3361 # Example (JavaScript): 3362 # 3363 # // ... 3364 # 3365 # var protoToCssColor = function(rgb_color) { 3366 # var redFrac = rgb_color.red || 0.0; 3367 # var greenFrac = rgb_color.green || 0.0; 3368 # var blueFrac = rgb_color.blue || 0.0; 3369 # var red = Math.floor(redFrac * 255); 3370 # var green = Math.floor(greenFrac * 255); 3371 # var blue = Math.floor(blueFrac * 255); 3372 # 3373 # if (!('alpha' in rgb_color)) { 3374 # return rgbToCssColor_(red, green, blue); 3375 # } 3376 # 3377 # var alphaFrac = rgb_color.alpha.value || 0.0; 3378 # var rgbParams = [red, green, blue].join(','); 3379 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 3380 # }; 3381 # 3382 # var rgbToCssColor_ = function(red, green, blue) { 3383 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 3384 # var hexString = rgbNumber.toString(16); 3385 # var missingZeros = 6 - hexString.length; 3386 # var resultBuilder = ['#']; 3387 # for (var i = 0; i < missingZeros; i++) { 3388 # resultBuilder.push('0'); 3389 # } 3390 # resultBuilder.push(hexString); 3391 # return resultBuilder.join(''); 3392 # }; 3393 # 3394 # // ... 3395 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 3396 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 3397 # the final pixel color is defined by the equation: 3398 # 3399 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 3400 # 3401 # This means that a value of 1.0 corresponds to a solid color, whereas 3402 # a value of 0.0 corresponds to a completely transparent color. This 3403 # uses a wrapper message rather than a simple float scalar so that it is 3404 # possible to distinguish between a default value and the value being unset. 3405 # If omitted, this color object is to be rendered as a solid color 3406 # (as if the alpha value had been explicitly given with a value of 1.0). 3407 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 3408 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 3409 }, 3410 "width": 42, # The width of the border, in pixels. 3411 # Deprecated; the width is determined by the "style" field. 3412 "style": "A String", # The style of the border. 3413 }, 3414 "right": { # A border along a cell. # The right border of the cell. 3415 "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border. 3416 # for simplicity of conversion to/from color representations in various 3417 # languages over compactness; for example, the fields of this representation 3418 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 3419 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 3420 # method in iOS; and, with just a little work, it can be easily formatted into 3421 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 3422 # 3423 # Example (Java): 3424 # 3425 # import com.google.type.Color; 3426 # 3427 # // ... 3428 # public static java.awt.Color fromProto(Color protocolor) { 3429 # float alpha = protocolor.hasAlpha() 3430 # ? protocolor.getAlpha().getValue() 3431 # : 1.0; 3432 # 3433 # return new java.awt.Color( 3434 # protocolor.getRed(), 3435 # protocolor.getGreen(), 3436 # protocolor.getBlue(), 3437 # alpha); 3438 # } 3439 # 3440 # public static Color toProto(java.awt.Color color) { 3441 # float red = (float) color.getRed(); 3442 # float green = (float) color.getGreen(); 3443 # float blue = (float) color.getBlue(); 3444 # float denominator = 255.0; 3445 # Color.Builder resultBuilder = 3446 # Color 3447 # .newBuilder() 3448 # .setRed(red / denominator) 3449 # .setGreen(green / denominator) 3450 # .setBlue(blue / denominator); 3451 # int alpha = color.getAlpha(); 3452 # if (alpha != 255) { 3453 # result.setAlpha( 3454 # FloatValue 3455 # .newBuilder() 3456 # .setValue(((float) alpha) / denominator) 3457 # .build()); 3458 # } 3459 # return resultBuilder.build(); 3460 # } 3461 # // ... 3462 # 3463 # Example (iOS / Obj-C): 3464 # 3465 # // ... 3466 # static UIColor* fromProto(Color* protocolor) { 3467 # float red = [protocolor red]; 3468 # float green = [protocolor green]; 3469 # float blue = [protocolor blue]; 3470 # FloatValue* alpha_wrapper = [protocolor alpha]; 3471 # float alpha = 1.0; 3472 # if (alpha_wrapper != nil) { 3473 # alpha = [alpha_wrapper value]; 3474 # } 3475 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 3476 # } 3477 # 3478 # static Color* toProto(UIColor* color) { 3479 # CGFloat red, green, blue, alpha; 3480 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 3481 # return nil; 3482 # } 3483 # Color* result = [Color alloc] init]; 3484 # [result setRed:red]; 3485 # [result setGreen:green]; 3486 # [result setBlue:blue]; 3487 # if (alpha <= 0.9999) { 3488 # [result setAlpha:floatWrapperWithValue(alpha)]; 3489 # } 3490 # [result autorelease]; 3491 # return result; 3492 # } 3493 # // ... 3494 # 3495 # Example (JavaScript): 3496 # 3497 # // ... 3498 # 3499 # var protoToCssColor = function(rgb_color) { 3500 # var redFrac = rgb_color.red || 0.0; 3501 # var greenFrac = rgb_color.green || 0.0; 3502 # var blueFrac = rgb_color.blue || 0.0; 3503 # var red = Math.floor(redFrac * 255); 3504 # var green = Math.floor(greenFrac * 255); 3505 # var blue = Math.floor(blueFrac * 255); 3506 # 3507 # if (!('alpha' in rgb_color)) { 3508 # return rgbToCssColor_(red, green, blue); 3509 # } 3510 # 3511 # var alphaFrac = rgb_color.alpha.value || 0.0; 3512 # var rgbParams = [red, green, blue].join(','); 3513 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 3514 # }; 3515 # 3516 # var rgbToCssColor_ = function(red, green, blue) { 3517 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 3518 # var hexString = rgbNumber.toString(16); 3519 # var missingZeros = 6 - hexString.length; 3520 # var resultBuilder = ['#']; 3521 # for (var i = 0; i < missingZeros; i++) { 3522 # resultBuilder.push('0'); 3523 # } 3524 # resultBuilder.push(hexString); 3525 # return resultBuilder.join(''); 3526 # }; 3527 # 3528 # // ... 3529 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 3530 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 3531 # the final pixel color is defined by the equation: 3532 # 3533 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 3534 # 3535 # This means that a value of 1.0 corresponds to a solid color, whereas 3536 # a value of 0.0 corresponds to a completely transparent color. This 3537 # uses a wrapper message rather than a simple float scalar so that it is 3538 # possible to distinguish between a default value and the value being unset. 3539 # If omitted, this color object is to be rendered as a solid color 3540 # (as if the alpha value had been explicitly given with a value of 1.0). 3541 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 3542 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 3543 }, 3544 "width": 42, # The width of the border, in pixels. 3545 # Deprecated; the width is determined by the "style" field. 3546 "style": "A String", # The style of the border. 3547 }, 3548 "bottom": { # A border along a cell. # The bottom border of the cell. 3549 "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border. 3550 # for simplicity of conversion to/from color representations in various 3551 # languages over compactness; for example, the fields of this representation 3552 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 3553 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 3554 # method in iOS; and, with just a little work, it can be easily formatted into 3555 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 3556 # 3557 # Example (Java): 3558 # 3559 # import com.google.type.Color; 3560 # 3561 # // ... 3562 # public static java.awt.Color fromProto(Color protocolor) { 3563 # float alpha = protocolor.hasAlpha() 3564 # ? protocolor.getAlpha().getValue() 3565 # : 1.0; 3566 # 3567 # return new java.awt.Color( 3568 # protocolor.getRed(), 3569 # protocolor.getGreen(), 3570 # protocolor.getBlue(), 3571 # alpha); 3572 # } 3573 # 3574 # public static Color toProto(java.awt.Color color) { 3575 # float red = (float) color.getRed(); 3576 # float green = (float) color.getGreen(); 3577 # float blue = (float) color.getBlue(); 3578 # float denominator = 255.0; 3579 # Color.Builder resultBuilder = 3580 # Color 3581 # .newBuilder() 3582 # .setRed(red / denominator) 3583 # .setGreen(green / denominator) 3584 # .setBlue(blue / denominator); 3585 # int alpha = color.getAlpha(); 3586 # if (alpha != 255) { 3587 # result.setAlpha( 3588 # FloatValue 3589 # .newBuilder() 3590 # .setValue(((float) alpha) / denominator) 3591 # .build()); 3592 # } 3593 # return resultBuilder.build(); 3594 # } 3595 # // ... 3596 # 3597 # Example (iOS / Obj-C): 3598 # 3599 # // ... 3600 # static UIColor* fromProto(Color* protocolor) { 3601 # float red = [protocolor red]; 3602 # float green = [protocolor green]; 3603 # float blue = [protocolor blue]; 3604 # FloatValue* alpha_wrapper = [protocolor alpha]; 3605 # float alpha = 1.0; 3606 # if (alpha_wrapper != nil) { 3607 # alpha = [alpha_wrapper value]; 3608 # } 3609 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 3610 # } 3611 # 3612 # static Color* toProto(UIColor* color) { 3613 # CGFloat red, green, blue, alpha; 3614 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 3615 # return nil; 3616 # } 3617 # Color* result = [Color alloc] init]; 3618 # [result setRed:red]; 3619 # [result setGreen:green]; 3620 # [result setBlue:blue]; 3621 # if (alpha <= 0.9999) { 3622 # [result setAlpha:floatWrapperWithValue(alpha)]; 3623 # } 3624 # [result autorelease]; 3625 # return result; 3626 # } 3627 # // ... 3628 # 3629 # Example (JavaScript): 3630 # 3631 # // ... 3632 # 3633 # var protoToCssColor = function(rgb_color) { 3634 # var redFrac = rgb_color.red || 0.0; 3635 # var greenFrac = rgb_color.green || 0.0; 3636 # var blueFrac = rgb_color.blue || 0.0; 3637 # var red = Math.floor(redFrac * 255); 3638 # var green = Math.floor(greenFrac * 255); 3639 # var blue = Math.floor(blueFrac * 255); 3640 # 3641 # if (!('alpha' in rgb_color)) { 3642 # return rgbToCssColor_(red, green, blue); 3643 # } 3644 # 3645 # var alphaFrac = rgb_color.alpha.value || 0.0; 3646 # var rgbParams = [red, green, blue].join(','); 3647 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 3648 # }; 3649 # 3650 # var rgbToCssColor_ = function(red, green, blue) { 3651 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 3652 # var hexString = rgbNumber.toString(16); 3653 # var missingZeros = 6 - hexString.length; 3654 # var resultBuilder = ['#']; 3655 # for (var i = 0; i < missingZeros; i++) { 3656 # resultBuilder.push('0'); 3657 # } 3658 # resultBuilder.push(hexString); 3659 # return resultBuilder.join(''); 3660 # }; 3661 # 3662 # // ... 3663 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 3664 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 3665 # the final pixel color is defined by the equation: 3666 # 3667 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 3668 # 3669 # This means that a value of 1.0 corresponds to a solid color, whereas 3670 # a value of 0.0 corresponds to a completely transparent color. This 3671 # uses a wrapper message rather than a simple float scalar so that it is 3672 # possible to distinguish between a default value and the value being unset. 3673 # If omitted, this color object is to be rendered as a solid color 3674 # (as if the alpha value had been explicitly given with a value of 1.0). 3675 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 3676 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 3677 }, 3678 "width": 42, # The width of the border, in pixels. 3679 # Deprecated; the width is determined by the "style" field. 3680 "style": "A String", # The style of the border. 3681 }, 3682 "left": { # A border along a cell. # The left border of the cell. 3683 "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border. 3684 # for simplicity of conversion to/from color representations in various 3685 # languages over compactness; for example, the fields of this representation 3686 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 3687 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 3688 # method in iOS; and, with just a little work, it can be easily formatted into 3689 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 3690 # 3691 # Example (Java): 3692 # 3693 # import com.google.type.Color; 3694 # 3695 # // ... 3696 # public static java.awt.Color fromProto(Color protocolor) { 3697 # float alpha = protocolor.hasAlpha() 3698 # ? protocolor.getAlpha().getValue() 3699 # : 1.0; 3700 # 3701 # return new java.awt.Color( 3702 # protocolor.getRed(), 3703 # protocolor.getGreen(), 3704 # protocolor.getBlue(), 3705 # alpha); 3706 # } 3707 # 3708 # public static Color toProto(java.awt.Color color) { 3709 # float red = (float) color.getRed(); 3710 # float green = (float) color.getGreen(); 3711 # float blue = (float) color.getBlue(); 3712 # float denominator = 255.0; 3713 # Color.Builder resultBuilder = 3714 # Color 3715 # .newBuilder() 3716 # .setRed(red / denominator) 3717 # .setGreen(green / denominator) 3718 # .setBlue(blue / denominator); 3719 # int alpha = color.getAlpha(); 3720 # if (alpha != 255) { 3721 # result.setAlpha( 3722 # FloatValue 3723 # .newBuilder() 3724 # .setValue(((float) alpha) / denominator) 3725 # .build()); 3726 # } 3727 # return resultBuilder.build(); 3728 # } 3729 # // ... 3730 # 3731 # Example (iOS / Obj-C): 3732 # 3733 # // ... 3734 # static UIColor* fromProto(Color* protocolor) { 3735 # float red = [protocolor red]; 3736 # float green = [protocolor green]; 3737 # float blue = [protocolor blue]; 3738 # FloatValue* alpha_wrapper = [protocolor alpha]; 3739 # float alpha = 1.0; 3740 # if (alpha_wrapper != nil) { 3741 # alpha = [alpha_wrapper value]; 3742 # } 3743 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 3744 # } 3745 # 3746 # static Color* toProto(UIColor* color) { 3747 # CGFloat red, green, blue, alpha; 3748 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 3749 # return nil; 3750 # } 3751 # Color* result = [Color alloc] init]; 3752 # [result setRed:red]; 3753 # [result setGreen:green]; 3754 # [result setBlue:blue]; 3755 # if (alpha <= 0.9999) { 3756 # [result setAlpha:floatWrapperWithValue(alpha)]; 3757 # } 3758 # [result autorelease]; 3759 # return result; 3760 # } 3761 # // ... 3762 # 3763 # Example (JavaScript): 3764 # 3765 # // ... 3766 # 3767 # var protoToCssColor = function(rgb_color) { 3768 # var redFrac = rgb_color.red || 0.0; 3769 # var greenFrac = rgb_color.green || 0.0; 3770 # var blueFrac = rgb_color.blue || 0.0; 3771 # var red = Math.floor(redFrac * 255); 3772 # var green = Math.floor(greenFrac * 255); 3773 # var blue = Math.floor(blueFrac * 255); 3774 # 3775 # if (!('alpha' in rgb_color)) { 3776 # return rgbToCssColor_(red, green, blue); 3777 # } 3778 # 3779 # var alphaFrac = rgb_color.alpha.value || 0.0; 3780 # var rgbParams = [red, green, blue].join(','); 3781 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 3782 # }; 3783 # 3784 # var rgbToCssColor_ = function(red, green, blue) { 3785 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 3786 # var hexString = rgbNumber.toString(16); 3787 # var missingZeros = 6 - hexString.length; 3788 # var resultBuilder = ['#']; 3789 # for (var i = 0; i < missingZeros; i++) { 3790 # resultBuilder.push('0'); 3791 # } 3792 # resultBuilder.push(hexString); 3793 # return resultBuilder.join(''); 3794 # }; 3795 # 3796 # // ... 3797 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 3798 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 3799 # the final pixel color is defined by the equation: 3800 # 3801 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 3802 # 3803 # This means that a value of 1.0 corresponds to a solid color, whereas 3804 # a value of 0.0 corresponds to a completely transparent color. This 3805 # uses a wrapper message rather than a simple float scalar so that it is 3806 # possible to distinguish between a default value and the value being unset. 3807 # If omitted, this color object is to be rendered as a solid color 3808 # (as if the alpha value had been explicitly given with a value of 1.0). 3809 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 3810 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 3811 }, 3812 "width": 42, # The width of the border, in pixels. 3813 # Deprecated; the width is determined by the "style" field. 3814 "style": "A String", # The style of the border. 3815 }, 3816 }, 3817 "wrapStrategy": "A String", # The wrap strategy for the value in the cell. 3818 }, 3819 "userEnteredFormat": { # The format of a cell. # The format the user entered for the cell. 3820 # 3821 # When writing, the new format will be merged with the existing format. 3822 "numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user. 3823 "pattern": "A String", # Pattern string used for formatting. If not set, a default pattern based on 3824 # the user's locale will be used if necessary for the given type. 3825 # See the [Date and Number Formats guide](/sheets/api/guides/formats) for more 3826 # information about the supported patterns. 3827 "type": "A String", # The type of the number format. 3828 # When writing, this field must be set. 3829 }, 3830 "textDirection": "A String", # The direction of the text in the cell. 3831 "padding": { # The amount of padding around the cell, in pixels. # The padding of the cell. 3832 # When updating padding, every field must be specified. 3833 "top": 42, # The top padding of the cell. 3834 "right": 42, # The right padding of the cell. 3835 "bottom": 42, # The bottom padding of the cell. 3836 "left": 42, # The left padding of the cell. 3837 }, 3838 "verticalAlignment": "A String", # The vertical alignment of the value in the cell. 3839 "backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell. 3840 # for simplicity of conversion to/from color representations in various 3841 # languages over compactness; for example, the fields of this representation 3842 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 3843 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 3844 # method in iOS; and, with just a little work, it can be easily formatted into 3845 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 3846 # 3847 # Example (Java): 3848 # 3849 # import com.google.type.Color; 3850 # 3851 # // ... 3852 # public static java.awt.Color fromProto(Color protocolor) { 3853 # float alpha = protocolor.hasAlpha() 3854 # ? protocolor.getAlpha().getValue() 3855 # : 1.0; 3856 # 3857 # return new java.awt.Color( 3858 # protocolor.getRed(), 3859 # protocolor.getGreen(), 3860 # protocolor.getBlue(), 3861 # alpha); 3862 # } 3863 # 3864 # public static Color toProto(java.awt.Color color) { 3865 # float red = (float) color.getRed(); 3866 # float green = (float) color.getGreen(); 3867 # float blue = (float) color.getBlue(); 3868 # float denominator = 255.0; 3869 # Color.Builder resultBuilder = 3870 # Color 3871 # .newBuilder() 3872 # .setRed(red / denominator) 3873 # .setGreen(green / denominator) 3874 # .setBlue(blue / denominator); 3875 # int alpha = color.getAlpha(); 3876 # if (alpha != 255) { 3877 # result.setAlpha( 3878 # FloatValue 3879 # .newBuilder() 3880 # .setValue(((float) alpha) / denominator) 3881 # .build()); 3882 # } 3883 # return resultBuilder.build(); 3884 # } 3885 # // ... 3886 # 3887 # Example (iOS / Obj-C): 3888 # 3889 # // ... 3890 # static UIColor* fromProto(Color* protocolor) { 3891 # float red = [protocolor red]; 3892 # float green = [protocolor green]; 3893 # float blue = [protocolor blue]; 3894 # FloatValue* alpha_wrapper = [protocolor alpha]; 3895 # float alpha = 1.0; 3896 # if (alpha_wrapper != nil) { 3897 # alpha = [alpha_wrapper value]; 3898 # } 3899 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 3900 # } 3901 # 3902 # static Color* toProto(UIColor* color) { 3903 # CGFloat red, green, blue, alpha; 3904 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 3905 # return nil; 3906 # } 3907 # Color* result = [Color alloc] init]; 3908 # [result setRed:red]; 3909 # [result setGreen:green]; 3910 # [result setBlue:blue]; 3911 # if (alpha <= 0.9999) { 3912 # [result setAlpha:floatWrapperWithValue(alpha)]; 3913 # } 3914 # [result autorelease]; 3915 # return result; 3916 # } 3917 # // ... 3918 # 3919 # Example (JavaScript): 3920 # 3921 # // ... 3922 # 3923 # var protoToCssColor = function(rgb_color) { 3924 # var redFrac = rgb_color.red || 0.0; 3925 # var greenFrac = rgb_color.green || 0.0; 3926 # var blueFrac = rgb_color.blue || 0.0; 3927 # var red = Math.floor(redFrac * 255); 3928 # var green = Math.floor(greenFrac * 255); 3929 # var blue = Math.floor(blueFrac * 255); 3930 # 3931 # if (!('alpha' in rgb_color)) { 3932 # return rgbToCssColor_(red, green, blue); 3933 # } 3934 # 3935 # var alphaFrac = rgb_color.alpha.value || 0.0; 3936 # var rgbParams = [red, green, blue].join(','); 3937 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 3938 # }; 3939 # 3940 # var rgbToCssColor_ = function(red, green, blue) { 3941 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 3942 # var hexString = rgbNumber.toString(16); 3943 # var missingZeros = 6 - hexString.length; 3944 # var resultBuilder = ['#']; 3945 # for (var i = 0; i < missingZeros; i++) { 3946 # resultBuilder.push('0'); 3947 # } 3948 # resultBuilder.push(hexString); 3949 # return resultBuilder.join(''); 3950 # }; 3951 # 3952 # // ... 3953 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 3954 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 3955 # the final pixel color is defined by the equation: 3956 # 3957 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 3958 # 3959 # This means that a value of 1.0 corresponds to a solid color, whereas 3960 # a value of 0.0 corresponds to a completely transparent color. This 3961 # uses a wrapper message rather than a simple float scalar so that it is 3962 # possible to distinguish between a default value and the value being unset. 3963 # If omitted, this color object is to be rendered as a solid color 3964 # (as if the alpha value had been explicitly given with a value of 1.0). 3965 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 3966 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 3967 }, 3968 "horizontalAlignment": "A String", # The horizontal alignment of the value in the cell. 3969 "textFormat": { # The format of a run of text in a cell. # The format of the text in the cell (unless overridden by a format run). 3970 # Absent values indicate that the field isn't specified. 3971 "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text. 3972 # for simplicity of conversion to/from color representations in various 3973 # languages over compactness; for example, the fields of this representation 3974 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 3975 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 3976 # method in iOS; and, with just a little work, it can be easily formatted into 3977 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 3978 # 3979 # Example (Java): 3980 # 3981 # import com.google.type.Color; 3982 # 3983 # // ... 3984 # public static java.awt.Color fromProto(Color protocolor) { 3985 # float alpha = protocolor.hasAlpha() 3986 # ? protocolor.getAlpha().getValue() 3987 # : 1.0; 3988 # 3989 # return new java.awt.Color( 3990 # protocolor.getRed(), 3991 # protocolor.getGreen(), 3992 # protocolor.getBlue(), 3993 # alpha); 3994 # } 3995 # 3996 # public static Color toProto(java.awt.Color color) { 3997 # float red = (float) color.getRed(); 3998 # float green = (float) color.getGreen(); 3999 # float blue = (float) color.getBlue(); 4000 # float denominator = 255.0; 4001 # Color.Builder resultBuilder = 4002 # Color 4003 # .newBuilder() 4004 # .setRed(red / denominator) 4005 # .setGreen(green / denominator) 4006 # .setBlue(blue / denominator); 4007 # int alpha = color.getAlpha(); 4008 # if (alpha != 255) { 4009 # result.setAlpha( 4010 # FloatValue 4011 # .newBuilder() 4012 # .setValue(((float) alpha) / denominator) 4013 # .build()); 4014 # } 4015 # return resultBuilder.build(); 4016 # } 4017 # // ... 4018 # 4019 # Example (iOS / Obj-C): 4020 # 4021 # // ... 4022 # static UIColor* fromProto(Color* protocolor) { 4023 # float red = [protocolor red]; 4024 # float green = [protocolor green]; 4025 # float blue = [protocolor blue]; 4026 # FloatValue* alpha_wrapper = [protocolor alpha]; 4027 # float alpha = 1.0; 4028 # if (alpha_wrapper != nil) { 4029 # alpha = [alpha_wrapper value]; 4030 # } 4031 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 4032 # } 4033 # 4034 # static Color* toProto(UIColor* color) { 4035 # CGFloat red, green, blue, alpha; 4036 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 4037 # return nil; 4038 # } 4039 # Color* result = [Color alloc] init]; 4040 # [result setRed:red]; 4041 # [result setGreen:green]; 4042 # [result setBlue:blue]; 4043 # if (alpha <= 0.9999) { 4044 # [result setAlpha:floatWrapperWithValue(alpha)]; 4045 # } 4046 # [result autorelease]; 4047 # return result; 4048 # } 4049 # // ... 4050 # 4051 # Example (JavaScript): 4052 # 4053 # // ... 4054 # 4055 # var protoToCssColor = function(rgb_color) { 4056 # var redFrac = rgb_color.red || 0.0; 4057 # var greenFrac = rgb_color.green || 0.0; 4058 # var blueFrac = rgb_color.blue || 0.0; 4059 # var red = Math.floor(redFrac * 255); 4060 # var green = Math.floor(greenFrac * 255); 4061 # var blue = Math.floor(blueFrac * 255); 4062 # 4063 # if (!('alpha' in rgb_color)) { 4064 # return rgbToCssColor_(red, green, blue); 4065 # } 4066 # 4067 # var alphaFrac = rgb_color.alpha.value || 0.0; 4068 # var rgbParams = [red, green, blue].join(','); 4069 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 4070 # }; 4071 # 4072 # var rgbToCssColor_ = function(red, green, blue) { 4073 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 4074 # var hexString = rgbNumber.toString(16); 4075 # var missingZeros = 6 - hexString.length; 4076 # var resultBuilder = ['#']; 4077 # for (var i = 0; i < missingZeros; i++) { 4078 # resultBuilder.push('0'); 4079 # } 4080 # resultBuilder.push(hexString); 4081 # return resultBuilder.join(''); 4082 # }; 4083 # 4084 # // ... 4085 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 4086 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 4087 # the final pixel color is defined by the equation: 4088 # 4089 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 4090 # 4091 # This means that a value of 1.0 corresponds to a solid color, whereas 4092 # a value of 0.0 corresponds to a completely transparent color. This 4093 # uses a wrapper message rather than a simple float scalar so that it is 4094 # possible to distinguish between a default value and the value being unset. 4095 # If omitted, this color object is to be rendered as a solid color 4096 # (as if the alpha value had been explicitly given with a value of 1.0). 4097 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 4098 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 4099 }, 4100 "bold": True or False, # True if the text is bold. 4101 "strikethrough": True or False, # True if the text has a strikethrough. 4102 "fontFamily": "A String", # The font family. 4103 "fontSize": 42, # The size of the font. 4104 "italic": True or False, # True if the text is italicized. 4105 "underline": True or False, # True if the text is underlined. 4106 }, 4107 "textRotation": { # The rotation applied to text in a cell. # The rotation applied to text in a cell 4108 "angle": 42, # The angle between the standard orientation and the desired orientation. 4109 # Measured in degrees. Valid values are between -90 and 90. Positive 4110 # angles are angled upwards, negative are angled downwards. 4111 # 4112 # Note: For LTR text direction positive angles are in the counterclockwise 4113 # direction, whereas for RTL they are in the clockwise direction 4114 "vertical": True or False, # If true, text reads top to bottom, but the orientation of individual 4115 # characters is unchanged. 4116 # For example: 4117 # 4118 # | V | 4119 # | e | 4120 # | r | 4121 # | t | 4122 # | i | 4123 # | c | 4124 # | a | 4125 # | l | 4126 }, 4127 "hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell. 4128 "borders": { # The borders of the cell. # The borders of the cell. 4129 "top": { # A border along a cell. # The top border of the cell. 4130 "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border. 4131 # for simplicity of conversion to/from color representations in various 4132 # languages over compactness; for example, the fields of this representation 4133 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 4134 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 4135 # method in iOS; and, with just a little work, it can be easily formatted into 4136 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 4137 # 4138 # Example (Java): 4139 # 4140 # import com.google.type.Color; 4141 # 4142 # // ... 4143 # public static java.awt.Color fromProto(Color protocolor) { 4144 # float alpha = protocolor.hasAlpha() 4145 # ? protocolor.getAlpha().getValue() 4146 # : 1.0; 4147 # 4148 # return new java.awt.Color( 4149 # protocolor.getRed(), 4150 # protocolor.getGreen(), 4151 # protocolor.getBlue(), 4152 # alpha); 4153 # } 4154 # 4155 # public static Color toProto(java.awt.Color color) { 4156 # float red = (float) color.getRed(); 4157 # float green = (float) color.getGreen(); 4158 # float blue = (float) color.getBlue(); 4159 # float denominator = 255.0; 4160 # Color.Builder resultBuilder = 4161 # Color 4162 # .newBuilder() 4163 # .setRed(red / denominator) 4164 # .setGreen(green / denominator) 4165 # .setBlue(blue / denominator); 4166 # int alpha = color.getAlpha(); 4167 # if (alpha != 255) { 4168 # result.setAlpha( 4169 # FloatValue 4170 # .newBuilder() 4171 # .setValue(((float) alpha) / denominator) 4172 # .build()); 4173 # } 4174 # return resultBuilder.build(); 4175 # } 4176 # // ... 4177 # 4178 # Example (iOS / Obj-C): 4179 # 4180 # // ... 4181 # static UIColor* fromProto(Color* protocolor) { 4182 # float red = [protocolor red]; 4183 # float green = [protocolor green]; 4184 # float blue = [protocolor blue]; 4185 # FloatValue* alpha_wrapper = [protocolor alpha]; 4186 # float alpha = 1.0; 4187 # if (alpha_wrapper != nil) { 4188 # alpha = [alpha_wrapper value]; 4189 # } 4190 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 4191 # } 4192 # 4193 # static Color* toProto(UIColor* color) { 4194 # CGFloat red, green, blue, alpha; 4195 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 4196 # return nil; 4197 # } 4198 # Color* result = [Color alloc] init]; 4199 # [result setRed:red]; 4200 # [result setGreen:green]; 4201 # [result setBlue:blue]; 4202 # if (alpha <= 0.9999) { 4203 # [result setAlpha:floatWrapperWithValue(alpha)]; 4204 # } 4205 # [result autorelease]; 4206 # return result; 4207 # } 4208 # // ... 4209 # 4210 # Example (JavaScript): 4211 # 4212 # // ... 4213 # 4214 # var protoToCssColor = function(rgb_color) { 4215 # var redFrac = rgb_color.red || 0.0; 4216 # var greenFrac = rgb_color.green || 0.0; 4217 # var blueFrac = rgb_color.blue || 0.0; 4218 # var red = Math.floor(redFrac * 255); 4219 # var green = Math.floor(greenFrac * 255); 4220 # var blue = Math.floor(blueFrac * 255); 4221 # 4222 # if (!('alpha' in rgb_color)) { 4223 # return rgbToCssColor_(red, green, blue); 4224 # } 4225 # 4226 # var alphaFrac = rgb_color.alpha.value || 0.0; 4227 # var rgbParams = [red, green, blue].join(','); 4228 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 4229 # }; 4230 # 4231 # var rgbToCssColor_ = function(red, green, blue) { 4232 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 4233 # var hexString = rgbNumber.toString(16); 4234 # var missingZeros = 6 - hexString.length; 4235 # var resultBuilder = ['#']; 4236 # for (var i = 0; i < missingZeros; i++) { 4237 # resultBuilder.push('0'); 4238 # } 4239 # resultBuilder.push(hexString); 4240 # return resultBuilder.join(''); 4241 # }; 4242 # 4243 # // ... 4244 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 4245 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 4246 # the final pixel color is defined by the equation: 4247 # 4248 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 4249 # 4250 # This means that a value of 1.0 corresponds to a solid color, whereas 4251 # a value of 0.0 corresponds to a completely transparent color. This 4252 # uses a wrapper message rather than a simple float scalar so that it is 4253 # possible to distinguish between a default value and the value being unset. 4254 # If omitted, this color object is to be rendered as a solid color 4255 # (as if the alpha value had been explicitly given with a value of 1.0). 4256 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 4257 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 4258 }, 4259 "width": 42, # The width of the border, in pixels. 4260 # Deprecated; the width is determined by the "style" field. 4261 "style": "A String", # The style of the border. 4262 }, 4263 "right": { # A border along a cell. # The right border of the cell. 4264 "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border. 4265 # for simplicity of conversion to/from color representations in various 4266 # languages over compactness; for example, the fields of this representation 4267 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 4268 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 4269 # method in iOS; and, with just a little work, it can be easily formatted into 4270 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 4271 # 4272 # Example (Java): 4273 # 4274 # import com.google.type.Color; 4275 # 4276 # // ... 4277 # public static java.awt.Color fromProto(Color protocolor) { 4278 # float alpha = protocolor.hasAlpha() 4279 # ? protocolor.getAlpha().getValue() 4280 # : 1.0; 4281 # 4282 # return new java.awt.Color( 4283 # protocolor.getRed(), 4284 # protocolor.getGreen(), 4285 # protocolor.getBlue(), 4286 # alpha); 4287 # } 4288 # 4289 # public static Color toProto(java.awt.Color color) { 4290 # float red = (float) color.getRed(); 4291 # float green = (float) color.getGreen(); 4292 # float blue = (float) color.getBlue(); 4293 # float denominator = 255.0; 4294 # Color.Builder resultBuilder = 4295 # Color 4296 # .newBuilder() 4297 # .setRed(red / denominator) 4298 # .setGreen(green / denominator) 4299 # .setBlue(blue / denominator); 4300 # int alpha = color.getAlpha(); 4301 # if (alpha != 255) { 4302 # result.setAlpha( 4303 # FloatValue 4304 # .newBuilder() 4305 # .setValue(((float) alpha) / denominator) 4306 # .build()); 4307 # } 4308 # return resultBuilder.build(); 4309 # } 4310 # // ... 4311 # 4312 # Example (iOS / Obj-C): 4313 # 4314 # // ... 4315 # static UIColor* fromProto(Color* protocolor) { 4316 # float red = [protocolor red]; 4317 # float green = [protocolor green]; 4318 # float blue = [protocolor blue]; 4319 # FloatValue* alpha_wrapper = [protocolor alpha]; 4320 # float alpha = 1.0; 4321 # if (alpha_wrapper != nil) { 4322 # alpha = [alpha_wrapper value]; 4323 # } 4324 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 4325 # } 4326 # 4327 # static Color* toProto(UIColor* color) { 4328 # CGFloat red, green, blue, alpha; 4329 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 4330 # return nil; 4331 # } 4332 # Color* result = [Color alloc] init]; 4333 # [result setRed:red]; 4334 # [result setGreen:green]; 4335 # [result setBlue:blue]; 4336 # if (alpha <= 0.9999) { 4337 # [result setAlpha:floatWrapperWithValue(alpha)]; 4338 # } 4339 # [result autorelease]; 4340 # return result; 4341 # } 4342 # // ... 4343 # 4344 # Example (JavaScript): 4345 # 4346 # // ... 4347 # 4348 # var protoToCssColor = function(rgb_color) { 4349 # var redFrac = rgb_color.red || 0.0; 4350 # var greenFrac = rgb_color.green || 0.0; 4351 # var blueFrac = rgb_color.blue || 0.0; 4352 # var red = Math.floor(redFrac * 255); 4353 # var green = Math.floor(greenFrac * 255); 4354 # var blue = Math.floor(blueFrac * 255); 4355 # 4356 # if (!('alpha' in rgb_color)) { 4357 # return rgbToCssColor_(red, green, blue); 4358 # } 4359 # 4360 # var alphaFrac = rgb_color.alpha.value || 0.0; 4361 # var rgbParams = [red, green, blue].join(','); 4362 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 4363 # }; 4364 # 4365 # var rgbToCssColor_ = function(red, green, blue) { 4366 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 4367 # var hexString = rgbNumber.toString(16); 4368 # var missingZeros = 6 - hexString.length; 4369 # var resultBuilder = ['#']; 4370 # for (var i = 0; i < missingZeros; i++) { 4371 # resultBuilder.push('0'); 4372 # } 4373 # resultBuilder.push(hexString); 4374 # return resultBuilder.join(''); 4375 # }; 4376 # 4377 # // ... 4378 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 4379 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 4380 # the final pixel color is defined by the equation: 4381 # 4382 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 4383 # 4384 # This means that a value of 1.0 corresponds to a solid color, whereas 4385 # a value of 0.0 corresponds to a completely transparent color. This 4386 # uses a wrapper message rather than a simple float scalar so that it is 4387 # possible to distinguish between a default value and the value being unset. 4388 # If omitted, this color object is to be rendered as a solid color 4389 # (as if the alpha value had been explicitly given with a value of 1.0). 4390 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 4391 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 4392 }, 4393 "width": 42, # The width of the border, in pixels. 4394 # Deprecated; the width is determined by the "style" field. 4395 "style": "A String", # The style of the border. 4396 }, 4397 "bottom": { # A border along a cell. # The bottom border of the cell. 4398 "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border. 4399 # for simplicity of conversion to/from color representations in various 4400 # languages over compactness; for example, the fields of this representation 4401 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 4402 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 4403 # method in iOS; and, with just a little work, it can be easily formatted into 4404 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 4405 # 4406 # Example (Java): 4407 # 4408 # import com.google.type.Color; 4409 # 4410 # // ... 4411 # public static java.awt.Color fromProto(Color protocolor) { 4412 # float alpha = protocolor.hasAlpha() 4413 # ? protocolor.getAlpha().getValue() 4414 # : 1.0; 4415 # 4416 # return new java.awt.Color( 4417 # protocolor.getRed(), 4418 # protocolor.getGreen(), 4419 # protocolor.getBlue(), 4420 # alpha); 4421 # } 4422 # 4423 # public static Color toProto(java.awt.Color color) { 4424 # float red = (float) color.getRed(); 4425 # float green = (float) color.getGreen(); 4426 # float blue = (float) color.getBlue(); 4427 # float denominator = 255.0; 4428 # Color.Builder resultBuilder = 4429 # Color 4430 # .newBuilder() 4431 # .setRed(red / denominator) 4432 # .setGreen(green / denominator) 4433 # .setBlue(blue / denominator); 4434 # int alpha = color.getAlpha(); 4435 # if (alpha != 255) { 4436 # result.setAlpha( 4437 # FloatValue 4438 # .newBuilder() 4439 # .setValue(((float) alpha) / denominator) 4440 # .build()); 4441 # } 4442 # return resultBuilder.build(); 4443 # } 4444 # // ... 4445 # 4446 # Example (iOS / Obj-C): 4447 # 4448 # // ... 4449 # static UIColor* fromProto(Color* protocolor) { 4450 # float red = [protocolor red]; 4451 # float green = [protocolor green]; 4452 # float blue = [protocolor blue]; 4453 # FloatValue* alpha_wrapper = [protocolor alpha]; 4454 # float alpha = 1.0; 4455 # if (alpha_wrapper != nil) { 4456 # alpha = [alpha_wrapper value]; 4457 # } 4458 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 4459 # } 4460 # 4461 # static Color* toProto(UIColor* color) { 4462 # CGFloat red, green, blue, alpha; 4463 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 4464 # return nil; 4465 # } 4466 # Color* result = [Color alloc] init]; 4467 # [result setRed:red]; 4468 # [result setGreen:green]; 4469 # [result setBlue:blue]; 4470 # if (alpha <= 0.9999) { 4471 # [result setAlpha:floatWrapperWithValue(alpha)]; 4472 # } 4473 # [result autorelease]; 4474 # return result; 4475 # } 4476 # // ... 4477 # 4478 # Example (JavaScript): 4479 # 4480 # // ... 4481 # 4482 # var protoToCssColor = function(rgb_color) { 4483 # var redFrac = rgb_color.red || 0.0; 4484 # var greenFrac = rgb_color.green || 0.0; 4485 # var blueFrac = rgb_color.blue || 0.0; 4486 # var red = Math.floor(redFrac * 255); 4487 # var green = Math.floor(greenFrac * 255); 4488 # var blue = Math.floor(blueFrac * 255); 4489 # 4490 # if (!('alpha' in rgb_color)) { 4491 # return rgbToCssColor_(red, green, blue); 4492 # } 4493 # 4494 # var alphaFrac = rgb_color.alpha.value || 0.0; 4495 # var rgbParams = [red, green, blue].join(','); 4496 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 4497 # }; 4498 # 4499 # var rgbToCssColor_ = function(red, green, blue) { 4500 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 4501 # var hexString = rgbNumber.toString(16); 4502 # var missingZeros = 6 - hexString.length; 4503 # var resultBuilder = ['#']; 4504 # for (var i = 0; i < missingZeros; i++) { 4505 # resultBuilder.push('0'); 4506 # } 4507 # resultBuilder.push(hexString); 4508 # return resultBuilder.join(''); 4509 # }; 4510 # 4511 # // ... 4512 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 4513 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 4514 # the final pixel color is defined by the equation: 4515 # 4516 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 4517 # 4518 # This means that a value of 1.0 corresponds to a solid color, whereas 4519 # a value of 0.0 corresponds to a completely transparent color. This 4520 # uses a wrapper message rather than a simple float scalar so that it is 4521 # possible to distinguish between a default value and the value being unset. 4522 # If omitted, this color object is to be rendered as a solid color 4523 # (as if the alpha value had been explicitly given with a value of 1.0). 4524 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 4525 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 4526 }, 4527 "width": 42, # The width of the border, in pixels. 4528 # Deprecated; the width is determined by the "style" field. 4529 "style": "A String", # The style of the border. 4530 }, 4531 "left": { # A border along a cell. # The left border of the cell. 4532 "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border. 4533 # for simplicity of conversion to/from color representations in various 4534 # languages over compactness; for example, the fields of this representation 4535 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 4536 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 4537 # method in iOS; and, with just a little work, it can be easily formatted into 4538 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 4539 # 4540 # Example (Java): 4541 # 4542 # import com.google.type.Color; 4543 # 4544 # // ... 4545 # public static java.awt.Color fromProto(Color protocolor) { 4546 # float alpha = protocolor.hasAlpha() 4547 # ? protocolor.getAlpha().getValue() 4548 # : 1.0; 4549 # 4550 # return new java.awt.Color( 4551 # protocolor.getRed(), 4552 # protocolor.getGreen(), 4553 # protocolor.getBlue(), 4554 # alpha); 4555 # } 4556 # 4557 # public static Color toProto(java.awt.Color color) { 4558 # float red = (float) color.getRed(); 4559 # float green = (float) color.getGreen(); 4560 # float blue = (float) color.getBlue(); 4561 # float denominator = 255.0; 4562 # Color.Builder resultBuilder = 4563 # Color 4564 # .newBuilder() 4565 # .setRed(red / denominator) 4566 # .setGreen(green / denominator) 4567 # .setBlue(blue / denominator); 4568 # int alpha = color.getAlpha(); 4569 # if (alpha != 255) { 4570 # result.setAlpha( 4571 # FloatValue 4572 # .newBuilder() 4573 # .setValue(((float) alpha) / denominator) 4574 # .build()); 4575 # } 4576 # return resultBuilder.build(); 4577 # } 4578 # // ... 4579 # 4580 # Example (iOS / Obj-C): 4581 # 4582 # // ... 4583 # static UIColor* fromProto(Color* protocolor) { 4584 # float red = [protocolor red]; 4585 # float green = [protocolor green]; 4586 # float blue = [protocolor blue]; 4587 # FloatValue* alpha_wrapper = [protocolor alpha]; 4588 # float alpha = 1.0; 4589 # if (alpha_wrapper != nil) { 4590 # alpha = [alpha_wrapper value]; 4591 # } 4592 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 4593 # } 4594 # 4595 # static Color* toProto(UIColor* color) { 4596 # CGFloat red, green, blue, alpha; 4597 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 4598 # return nil; 4599 # } 4600 # Color* result = [Color alloc] init]; 4601 # [result setRed:red]; 4602 # [result setGreen:green]; 4603 # [result setBlue:blue]; 4604 # if (alpha <= 0.9999) { 4605 # [result setAlpha:floatWrapperWithValue(alpha)]; 4606 # } 4607 # [result autorelease]; 4608 # return result; 4609 # } 4610 # // ... 4611 # 4612 # Example (JavaScript): 4613 # 4614 # // ... 4615 # 4616 # var protoToCssColor = function(rgb_color) { 4617 # var redFrac = rgb_color.red || 0.0; 4618 # var greenFrac = rgb_color.green || 0.0; 4619 # var blueFrac = rgb_color.blue || 0.0; 4620 # var red = Math.floor(redFrac * 255); 4621 # var green = Math.floor(greenFrac * 255); 4622 # var blue = Math.floor(blueFrac * 255); 4623 # 4624 # if (!('alpha' in rgb_color)) { 4625 # return rgbToCssColor_(red, green, blue); 4626 # } 4627 # 4628 # var alphaFrac = rgb_color.alpha.value || 0.0; 4629 # var rgbParams = [red, green, blue].join(','); 4630 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 4631 # }; 4632 # 4633 # var rgbToCssColor_ = function(red, green, blue) { 4634 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 4635 # var hexString = rgbNumber.toString(16); 4636 # var missingZeros = 6 - hexString.length; 4637 # var resultBuilder = ['#']; 4638 # for (var i = 0; i < missingZeros; i++) { 4639 # resultBuilder.push('0'); 4640 # } 4641 # resultBuilder.push(hexString); 4642 # return resultBuilder.join(''); 4643 # }; 4644 # 4645 # // ... 4646 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 4647 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 4648 # the final pixel color is defined by the equation: 4649 # 4650 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 4651 # 4652 # This means that a value of 1.0 corresponds to a solid color, whereas 4653 # a value of 0.0 corresponds to a completely transparent color. This 4654 # uses a wrapper message rather than a simple float scalar so that it is 4655 # possible to distinguish between a default value and the value being unset. 4656 # If omitted, this color object is to be rendered as a solid color 4657 # (as if the alpha value had been explicitly given with a value of 1.0). 4658 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 4659 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 4660 }, 4661 "width": 42, # The width of the border, in pixels. 4662 # Deprecated; the width is determined by the "style" field. 4663 "style": "A String", # The style of the border. 4664 }, 4665 }, 4666 "wrapStrategy": "A String", # The wrap strategy for the value in the cell. 4667 }, 4668 "dataValidation": { # A data validation rule. # A data validation rule on the cell, if any. 4669 # 4670 # When writing, the new data validation rule will overwrite any prior rule. 4671 "showCustomUi": True or False, # True if the UI should be customized based on the kind of condition. 4672 # If true, "List" conditions will show a dropdown. 4673 "strict": True or False, # True if invalid data should be rejected. 4674 "inputMessage": "A String", # A message to show the user when adding data to the cell. 4675 "condition": { # A condition that can evaluate to true or false. # The condition that data in the cell must match. 4676 # BooleanConditions are used by conditional formatting, 4677 # data validation, and the criteria in filters. 4678 "values": [ # The values of the condition. The number of supported values depends 4679 # on the condition type. Some support zero values, 4680 # others one or two values, 4681 # and ConditionType.ONE_OF_LIST supports an arbitrary number of values. 4682 { # The value of the condition. 4683 "relativeDate": "A String", # A relative date (based on the current date). 4684 # Valid only if the type is 4685 # DATE_BEFORE, 4686 # DATE_AFTER, 4687 # DATE_ON_OR_BEFORE or 4688 # DATE_ON_OR_AFTER. 4689 # 4690 # Relative dates are not supported in data validation. 4691 # They are supported only in conditional formatting and 4692 # conditional filters. 4693 "userEnteredValue": "A String", # A value the condition is based on. 4694 # The value will be parsed as if the user typed into a cell. 4695 # Formulas are supported (and must begin with an `=`). 4696 }, 4697 ], 4698 "type": "A String", # The type of condition. 4699 }, 4700 }, 4701 "textFormatRuns": [ # Runs of rich text applied to subsections of the cell. Runs are only valid 4702 # on user entered strings, not formulas, bools, or numbers. 4703 # Runs start at specific indexes in the text and continue until the next 4704 # run. Properties of a run will continue unless explicitly changed 4705 # in a subsequent run (and properties of the first run will continue 4706 # the properties of the cell unless explicitly changed). 4707 # 4708 # When writing, the new runs will overwrite any prior runs. When writing a 4709 # new user_entered_value, previous runs will be erased. 4710 { # A run of a text format. The format of this run continues until the start 4711 # index of the next run. 4712 # When updating, all fields must be set. 4713 "startIndex": 42, # The character index where this run starts. 4714 "format": { # The format of a run of text in a cell. # The format of this run. Absent values inherit the cell's format. 4715 # Absent values indicate that the field isn't specified. 4716 "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text. 4717 # for simplicity of conversion to/from color representations in various 4718 # languages over compactness; for example, the fields of this representation 4719 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 4720 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 4721 # method in iOS; and, with just a little work, it can be easily formatted into 4722 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 4723 # 4724 # Example (Java): 4725 # 4726 # import com.google.type.Color; 4727 # 4728 # // ... 4729 # public static java.awt.Color fromProto(Color protocolor) { 4730 # float alpha = protocolor.hasAlpha() 4731 # ? protocolor.getAlpha().getValue() 4732 # : 1.0; 4733 # 4734 # return new java.awt.Color( 4735 # protocolor.getRed(), 4736 # protocolor.getGreen(), 4737 # protocolor.getBlue(), 4738 # alpha); 4739 # } 4740 # 4741 # public static Color toProto(java.awt.Color color) { 4742 # float red = (float) color.getRed(); 4743 # float green = (float) color.getGreen(); 4744 # float blue = (float) color.getBlue(); 4745 # float denominator = 255.0; 4746 # Color.Builder resultBuilder = 4747 # Color 4748 # .newBuilder() 4749 # .setRed(red / denominator) 4750 # .setGreen(green / denominator) 4751 # .setBlue(blue / denominator); 4752 # int alpha = color.getAlpha(); 4753 # if (alpha != 255) { 4754 # result.setAlpha( 4755 # FloatValue 4756 # .newBuilder() 4757 # .setValue(((float) alpha) / denominator) 4758 # .build()); 4759 # } 4760 # return resultBuilder.build(); 4761 # } 4762 # // ... 4763 # 4764 # Example (iOS / Obj-C): 4765 # 4766 # // ... 4767 # static UIColor* fromProto(Color* protocolor) { 4768 # float red = [protocolor red]; 4769 # float green = [protocolor green]; 4770 # float blue = [protocolor blue]; 4771 # FloatValue* alpha_wrapper = [protocolor alpha]; 4772 # float alpha = 1.0; 4773 # if (alpha_wrapper != nil) { 4774 # alpha = [alpha_wrapper value]; 4775 # } 4776 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 4777 # } 4778 # 4779 # static Color* toProto(UIColor* color) { 4780 # CGFloat red, green, blue, alpha; 4781 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 4782 # return nil; 4783 # } 4784 # Color* result = [Color alloc] init]; 4785 # [result setRed:red]; 4786 # [result setGreen:green]; 4787 # [result setBlue:blue]; 4788 # if (alpha <= 0.9999) { 4789 # [result setAlpha:floatWrapperWithValue(alpha)]; 4790 # } 4791 # [result autorelease]; 4792 # return result; 4793 # } 4794 # // ... 4795 # 4796 # Example (JavaScript): 4797 # 4798 # // ... 4799 # 4800 # var protoToCssColor = function(rgb_color) { 4801 # var redFrac = rgb_color.red || 0.0; 4802 # var greenFrac = rgb_color.green || 0.0; 4803 # var blueFrac = rgb_color.blue || 0.0; 4804 # var red = Math.floor(redFrac * 255); 4805 # var green = Math.floor(greenFrac * 255); 4806 # var blue = Math.floor(blueFrac * 255); 4807 # 4808 # if (!('alpha' in rgb_color)) { 4809 # return rgbToCssColor_(red, green, blue); 4810 # } 4811 # 4812 # var alphaFrac = rgb_color.alpha.value || 0.0; 4813 # var rgbParams = [red, green, blue].join(','); 4814 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 4815 # }; 4816 # 4817 # var rgbToCssColor_ = function(red, green, blue) { 4818 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 4819 # var hexString = rgbNumber.toString(16); 4820 # var missingZeros = 6 - hexString.length; 4821 # var resultBuilder = ['#']; 4822 # for (var i = 0; i < missingZeros; i++) { 4823 # resultBuilder.push('0'); 4824 # } 4825 # resultBuilder.push(hexString); 4826 # return resultBuilder.join(''); 4827 # }; 4828 # 4829 # // ... 4830 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 4831 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 4832 # the final pixel color is defined by the equation: 4833 # 4834 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 4835 # 4836 # This means that a value of 1.0 corresponds to a solid color, whereas 4837 # a value of 0.0 corresponds to a completely transparent color. This 4838 # uses a wrapper message rather than a simple float scalar so that it is 4839 # possible to distinguish between a default value and the value being unset. 4840 # If omitted, this color object is to be rendered as a solid color 4841 # (as if the alpha value had been explicitly given with a value of 1.0). 4842 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 4843 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 4844 }, 4845 "bold": True or False, # True if the text is bold. 4846 "strikethrough": True or False, # True if the text has a strikethrough. 4847 "fontFamily": "A String", # The font family. 4848 "fontSize": 42, # The size of the font. 4849 "italic": True or False, # True if the text is italicized. 4850 "underline": True or False, # True if the text is underlined. 4851 }, 4852 }, 4853 ], 4854 }, 4855 ], 4856 }, 4857 ], 4858 "sheetId": 42, # The sheet ID to append the data to. 4859 }, 4860 "duplicateSheet": { # Duplicates the contents of a sheet. # Duplicates a sheet. 4861 "sourceSheetId": 42, # The sheet to duplicate. 4862 "insertSheetIndex": 42, # The zero-based index where the new sheet should be inserted. 4863 # The index of all sheets after this are incremented. 4864 "newSheetName": "A String", # The name of the new sheet. If empty, a new name is chosen for you. 4865 "newSheetId": 42, # If set, the ID of the new sheet. If not set, an ID is chosen. 4866 # If set, the ID must not conflict with any existing sheet ID. 4867 # If set, it must be non-negative. 4868 }, 4869 "updateSheetProperties": { # Updates properties of the sheet with the specified # Updates a sheet's properties. 4870 # sheetId. 4871 "fields": "A String", # The fields that should be updated. At least one field must be specified. 4872 # The root `properties` is implied and should not be specified. 4873 # A single `"*"` can be used as short-hand for listing every field. 4874 "properties": { # Properties of a sheet. # The properties to update. 4875 "sheetType": "A String", # The type of sheet. Defaults to GRID. 4876 # This field cannot be changed once set. 4877 "index": 42, # The index of the sheet within the spreadsheet. 4878 # When adding or updating sheet properties, if this field 4879 # is excluded then the sheet will be added or moved to the end 4880 # of the sheet list. When updating sheet indices or inserting 4881 # sheets, movement is considered in "before the move" indexes. 4882 # For example, if there were 3 sheets (S1, S2, S3) in order to 4883 # move S1 ahead of S2 the index would have to be set to 2. A sheet 4884 # index update request will be ignored if the requested index is 4885 # identical to the sheets current index or if the requested new 4886 # index is equal to the current sheet index + 1. 4887 "title": "A String", # The name of the sheet. 4888 "gridProperties": { # Properties of a grid. # Additional properties of the sheet if this sheet is a grid. 4889 # (If the sheet is an object sheet, containing a chart or image, then 4890 # this field will be absent.) 4891 # When writing it is an error to set any grid properties on non-grid sheets. 4892 "columnCount": 42, # The number of columns in the grid. 4893 "frozenRowCount": 42, # The number of rows that are frozen in the grid. 4894 "frozenColumnCount": 42, # The number of columns that are frozen in the grid. 4895 "hideGridlines": True or False, # True if the grid isn't showing gridlines in the UI. 4896 "rowCount": 42, # The number of rows in the grid. 4897 }, 4898 "rightToLeft": True or False, # True if the sheet is an RTL sheet instead of an LTR sheet. 4899 "tabColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the tab in the UI. 4900 # for simplicity of conversion to/from color representations in various 4901 # languages over compactness; for example, the fields of this representation 4902 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 4903 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 4904 # method in iOS; and, with just a little work, it can be easily formatted into 4905 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 4906 # 4907 # Example (Java): 4908 # 4909 # import com.google.type.Color; 4910 # 4911 # // ... 4912 # public static java.awt.Color fromProto(Color protocolor) { 4913 # float alpha = protocolor.hasAlpha() 4914 # ? protocolor.getAlpha().getValue() 4915 # : 1.0; 4916 # 4917 # return new java.awt.Color( 4918 # protocolor.getRed(), 4919 # protocolor.getGreen(), 4920 # protocolor.getBlue(), 4921 # alpha); 4922 # } 4923 # 4924 # public static Color toProto(java.awt.Color color) { 4925 # float red = (float) color.getRed(); 4926 # float green = (float) color.getGreen(); 4927 # float blue = (float) color.getBlue(); 4928 # float denominator = 255.0; 4929 # Color.Builder resultBuilder = 4930 # Color 4931 # .newBuilder() 4932 # .setRed(red / denominator) 4933 # .setGreen(green / denominator) 4934 # .setBlue(blue / denominator); 4935 # int alpha = color.getAlpha(); 4936 # if (alpha != 255) { 4937 # result.setAlpha( 4938 # FloatValue 4939 # .newBuilder() 4940 # .setValue(((float) alpha) / denominator) 4941 # .build()); 4942 # } 4943 # return resultBuilder.build(); 4944 # } 4945 # // ... 4946 # 4947 # Example (iOS / Obj-C): 4948 # 4949 # // ... 4950 # static UIColor* fromProto(Color* protocolor) { 4951 # float red = [protocolor red]; 4952 # float green = [protocolor green]; 4953 # float blue = [protocolor blue]; 4954 # FloatValue* alpha_wrapper = [protocolor alpha]; 4955 # float alpha = 1.0; 4956 # if (alpha_wrapper != nil) { 4957 # alpha = [alpha_wrapper value]; 4958 # } 4959 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 4960 # } 4961 # 4962 # static Color* toProto(UIColor* color) { 4963 # CGFloat red, green, blue, alpha; 4964 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 4965 # return nil; 4966 # } 4967 # Color* result = [Color alloc] init]; 4968 # [result setRed:red]; 4969 # [result setGreen:green]; 4970 # [result setBlue:blue]; 4971 # if (alpha <= 0.9999) { 4972 # [result setAlpha:floatWrapperWithValue(alpha)]; 4973 # } 4974 # [result autorelease]; 4975 # return result; 4976 # } 4977 # // ... 4978 # 4979 # Example (JavaScript): 4980 # 4981 # // ... 4982 # 4983 # var protoToCssColor = function(rgb_color) { 4984 # var redFrac = rgb_color.red || 0.0; 4985 # var greenFrac = rgb_color.green || 0.0; 4986 # var blueFrac = rgb_color.blue || 0.0; 4987 # var red = Math.floor(redFrac * 255); 4988 # var green = Math.floor(greenFrac * 255); 4989 # var blue = Math.floor(blueFrac * 255); 4990 # 4991 # if (!('alpha' in rgb_color)) { 4992 # return rgbToCssColor_(red, green, blue); 4993 # } 4994 # 4995 # var alphaFrac = rgb_color.alpha.value || 0.0; 4996 # var rgbParams = [red, green, blue].join(','); 4997 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 4998 # }; 4999 # 5000 # var rgbToCssColor_ = function(red, green, blue) { 5001 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 5002 # var hexString = rgbNumber.toString(16); 5003 # var missingZeros = 6 - hexString.length; 5004 # var resultBuilder = ['#']; 5005 # for (var i = 0; i < missingZeros; i++) { 5006 # resultBuilder.push('0'); 5007 # } 5008 # resultBuilder.push(hexString); 5009 # return resultBuilder.join(''); 5010 # }; 5011 # 5012 # // ... 5013 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 5014 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 5015 # the final pixel color is defined by the equation: 5016 # 5017 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 5018 # 5019 # This means that a value of 1.0 corresponds to a solid color, whereas 5020 # a value of 0.0 corresponds to a completely transparent color. This 5021 # uses a wrapper message rather than a simple float scalar so that it is 5022 # possible to distinguish between a default value and the value being unset. 5023 # If omitted, this color object is to be rendered as a solid color 5024 # (as if the alpha value had been explicitly given with a value of 1.0). 5025 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 5026 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 5027 }, 5028 "hidden": True or False, # True if the sheet is hidden in the UI, false if it's visible. 5029 "sheetId": 42, # The ID of the sheet. Must be non-negative. 5030 # This field cannot be changed once set. 5031 }, 5032 }, 5033 "addChart": { # Adds a chart to a sheet in the spreadsheet. # Adds a chart. 5034 "chart": { # A chart embedded in a sheet. # The chart that should be added to the spreadsheet, including the position 5035 # where it should be placed. The chartId 5036 # field is optional; if one is not set, an id will be randomly generated. (It 5037 # is an error to specify the ID of a chart that already exists.) 5038 "chartId": 42, # The ID of the chart. 5039 "position": { # The position of an embedded object such as a chart. # The position of the chart. 5040 "newSheet": True or False, # If true, the embedded object will be put on a new sheet whose ID 5041 # is chosen for you. Used only when writing. 5042 "sheetId": 42, # The sheet this is on. Set only if the embedded object 5043 # is on its own sheet. Must be non-negative. 5044 "overlayPosition": { # The location an object is overlaid on top of a grid. # The position at which the object is overlaid on top of a grid. 5045 "anchorCell": { # A coordinate in a sheet. # The cell the object is anchored to. 5046 # All indexes are zero-based. 5047 "rowIndex": 42, # The row index of the coordinate. 5048 "columnIndex": 42, # The column index of the coordinate. 5049 "sheetId": 42, # The sheet this coordinate is on. 5050 }, 5051 "offsetYPixels": 42, # The vertical offset, in pixels, that the object is offset 5052 # from the anchor cell. 5053 "widthPixels": 42, # The width of the object, in pixels. Defaults to 600. 5054 "offsetXPixels": 42, # The horizontal offset, in pixels, that the object is offset 5055 # from the anchor cell. 5056 "heightPixels": 42, # The height of the object, in pixels. Defaults to 371. 5057 }, 5058 }, 5059 "spec": { # The specifications of a chart. # The specification of the chart. 5060 "hiddenDimensionStrategy": "A String", # Determines how the charts will use hidden rows or columns. 5061 "pieChart": { # A <a href="/chart/interactive/docs/gallery/piechart">pie chart</a>. # A pie chart specification. 5062 "series": { # The data included in a domain or series. # The data that covers the one and only series of the pie chart. 5063 "sourceRange": { # Source ranges for a chart. # The source ranges of the data. 5064 "sources": [ # The ranges of data for a series or domain. 5065 # Exactly one dimension must have a length of 1, 5066 # and all sources in the list must have the same dimension 5067 # with length 1. 5068 # The domain (if it exists) & all series must have the same number 5069 # of source ranges. If using more than one source range, then the source 5070 # range at a given offset must be contiguous across the domain and series. 5071 # 5072 # For example, these are valid configurations: 5073 # 5074 # domain sources: A1:A5 5075 # series1 sources: B1:B5 5076 # series2 sources: D6:D10 5077 # 5078 # domain sources: A1:A5, C10:C12 5079 # series1 sources: B1:B5, D10:D12 5080 # series2 sources: C1:C5, E10:E12 5081 { # A range on a sheet. 5082 # All indexes are zero-based. 5083 # Indexes are half open, e.g the start index is inclusive 5084 # and the end index is exclusive -- [start_index, end_index). 5085 # Missing indexes indicate the range is unbounded on that side. 5086 # 5087 # For example, if `"Sheet1"` is sheet ID 0, then: 5088 # 5089 # `Sheet1!A1:A1 == sheet_id: 0, 5090 # start_row_index: 0, end_row_index: 1, 5091 # start_column_index: 0, end_column_index: 1` 5092 # 5093 # `Sheet1!A3:B4 == sheet_id: 0, 5094 # start_row_index: 2, end_row_index: 4, 5095 # start_column_index: 0, end_column_index: 2` 5096 # 5097 # `Sheet1!A:B == sheet_id: 0, 5098 # start_column_index: 0, end_column_index: 2` 5099 # 5100 # `Sheet1!A5:B == sheet_id: 0, 5101 # start_row_index: 4, 5102 # start_column_index: 0, end_column_index: 2` 5103 # 5104 # `Sheet1 == sheet_id:0` 5105 # 5106 # The start index must always be less than or equal to the end index. 5107 # If the start index equals the end index, then the range is empty. 5108 # Empty ranges are typically not meaningful and are usually rendered in the 5109 # UI as `#REF!`. 5110 "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded. 5111 "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded. 5112 "sheetId": 42, # The sheet this range is on. 5113 "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded. 5114 "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded. 5115 }, 5116 ], 5117 }, 5118 }, 5119 "domain": { # The data included in a domain or series. # The data that covers the domain of the pie chart. 5120 "sourceRange": { # Source ranges for a chart. # The source ranges of the data. 5121 "sources": [ # The ranges of data for a series or domain. 5122 # Exactly one dimension must have a length of 1, 5123 # and all sources in the list must have the same dimension 5124 # with length 1. 5125 # The domain (if it exists) & all series must have the same number 5126 # of source ranges. If using more than one source range, then the source 5127 # range at a given offset must be contiguous across the domain and series. 5128 # 5129 # For example, these are valid configurations: 5130 # 5131 # domain sources: A1:A5 5132 # series1 sources: B1:B5 5133 # series2 sources: D6:D10 5134 # 5135 # domain sources: A1:A5, C10:C12 5136 # series1 sources: B1:B5, D10:D12 5137 # series2 sources: C1:C5, E10:E12 5138 { # A range on a sheet. 5139 # All indexes are zero-based. 5140 # Indexes are half open, e.g the start index is inclusive 5141 # and the end index is exclusive -- [start_index, end_index). 5142 # Missing indexes indicate the range is unbounded on that side. 5143 # 5144 # For example, if `"Sheet1"` is sheet ID 0, then: 5145 # 5146 # `Sheet1!A1:A1 == sheet_id: 0, 5147 # start_row_index: 0, end_row_index: 1, 5148 # start_column_index: 0, end_column_index: 1` 5149 # 5150 # `Sheet1!A3:B4 == sheet_id: 0, 5151 # start_row_index: 2, end_row_index: 4, 5152 # start_column_index: 0, end_column_index: 2` 5153 # 5154 # `Sheet1!A:B == sheet_id: 0, 5155 # start_column_index: 0, end_column_index: 2` 5156 # 5157 # `Sheet1!A5:B == sheet_id: 0, 5158 # start_row_index: 4, 5159 # start_column_index: 0, end_column_index: 2` 5160 # 5161 # `Sheet1 == sheet_id:0` 5162 # 5163 # The start index must always be less than or equal to the end index. 5164 # If the start index equals the end index, then the range is empty. 5165 # Empty ranges are typically not meaningful and are usually rendered in the 5166 # UI as `#REF!`. 5167 "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded. 5168 "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded. 5169 "sheetId": 42, # The sheet this range is on. 5170 "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded. 5171 "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded. 5172 }, 5173 ], 5174 }, 5175 }, 5176 "threeDimensional": True or False, # True if the pie is three dimensional. 5177 "legendPosition": "A String", # Where the legend of the pie chart should be drawn. 5178 "pieHole": 3.14, # The size of the hole in the pie chart. 5179 }, 5180 "basicChart": { # The specification for a basic chart. See BasicChartType for the list # A basic chart specification, can be one of many kinds of charts. 5181 # See BasicChartType for the list of all 5182 # charts this supports. 5183 # of charts this supports. 5184 "headerCount": 42, # The number of rows or columns in the data that are "headers". 5185 # If not set, Google Sheets will guess how many rows are headers based 5186 # on the data. 5187 # 5188 # (Note that BasicChartAxis.title may override the axis title 5189 # inferred from the header values.) 5190 "series": [ # The data this chart is visualizing. 5191 { # A single series of data in a chart. 5192 # For example, if charting stock prices over time, multiple series may exist, 5193 # one for the "Open Price", "High Price", "Low Price" and "Close Price". 5194 "series": { # The data included in a domain or series. # The data being visualized in this chart series. 5195 "sourceRange": { # Source ranges for a chart. # The source ranges of the data. 5196 "sources": [ # The ranges of data for a series or domain. 5197 # Exactly one dimension must have a length of 1, 5198 # and all sources in the list must have the same dimension 5199 # with length 1. 5200 # The domain (if it exists) & all series must have the same number 5201 # of source ranges. If using more than one source range, then the source 5202 # range at a given offset must be contiguous across the domain and series. 5203 # 5204 # For example, these are valid configurations: 5205 # 5206 # domain sources: A1:A5 5207 # series1 sources: B1:B5 5208 # series2 sources: D6:D10 5209 # 5210 # domain sources: A1:A5, C10:C12 5211 # series1 sources: B1:B5, D10:D12 5212 # series2 sources: C1:C5, E10:E12 5213 { # A range on a sheet. 5214 # All indexes are zero-based. 5215 # Indexes are half open, e.g the start index is inclusive 5216 # and the end index is exclusive -- [start_index, end_index). 5217 # Missing indexes indicate the range is unbounded on that side. 5218 # 5219 # For example, if `"Sheet1"` is sheet ID 0, then: 5220 # 5221 # `Sheet1!A1:A1 == sheet_id: 0, 5222 # start_row_index: 0, end_row_index: 1, 5223 # start_column_index: 0, end_column_index: 1` 5224 # 5225 # `Sheet1!A3:B4 == sheet_id: 0, 5226 # start_row_index: 2, end_row_index: 4, 5227 # start_column_index: 0, end_column_index: 2` 5228 # 5229 # `Sheet1!A:B == sheet_id: 0, 5230 # start_column_index: 0, end_column_index: 2` 5231 # 5232 # `Sheet1!A5:B == sheet_id: 0, 5233 # start_row_index: 4, 5234 # start_column_index: 0, end_column_index: 2` 5235 # 5236 # `Sheet1 == sheet_id:0` 5237 # 5238 # The start index must always be less than or equal to the end index. 5239 # If the start index equals the end index, then the range is empty. 5240 # Empty ranges are typically not meaningful and are usually rendered in the 5241 # UI as `#REF!`. 5242 "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded. 5243 "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded. 5244 "sheetId": 42, # The sheet this range is on. 5245 "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded. 5246 "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded. 5247 }, 5248 ], 5249 }, 5250 }, 5251 "targetAxis": "A String", # The minor axis that will specify the range of values for this series. 5252 # For example, if charting stocks over time, the "Volume" series 5253 # may want to be pinned to the right with the prices pinned to the left, 5254 # because the scale of trading volume is different than the scale of 5255 # prices. 5256 # It is an error to specify an axis that isn't a valid minor axis 5257 # for the chart's type. 5258 "type": "A String", # The type of this series. Valid only if the 5259 # chartType is 5260 # COMBO. 5261 # Different types will change the way the series is visualized. 5262 # Only LINE, AREA, 5263 # and COLUMN are supported. 5264 }, 5265 ], 5266 "legendPosition": "A String", # The position of the chart legend. 5267 "domains": [ # The domain of data this is charting. 5268 # Only a single domain is supported. 5269 { # The domain of a chart. 5270 # For example, if charting stock prices over time, this would be the date. 5271 "domain": { # The data included in a domain or series. # The data of the domain. For example, if charting stock prices over time, 5272 # this is the data representing the dates. 5273 "sourceRange": { # Source ranges for a chart. # The source ranges of the data. 5274 "sources": [ # The ranges of data for a series or domain. 5275 # Exactly one dimension must have a length of 1, 5276 # and all sources in the list must have the same dimension 5277 # with length 1. 5278 # The domain (if it exists) & all series must have the same number 5279 # of source ranges. If using more than one source range, then the source 5280 # range at a given offset must be contiguous across the domain and series. 5281 # 5282 # For example, these are valid configurations: 5283 # 5284 # domain sources: A1:A5 5285 # series1 sources: B1:B5 5286 # series2 sources: D6:D10 5287 # 5288 # domain sources: A1:A5, C10:C12 5289 # series1 sources: B1:B5, D10:D12 5290 # series2 sources: C1:C5, E10:E12 5291 { # A range on a sheet. 5292 # All indexes are zero-based. 5293 # Indexes are half open, e.g the start index is inclusive 5294 # and the end index is exclusive -- [start_index, end_index). 5295 # Missing indexes indicate the range is unbounded on that side. 5296 # 5297 # For example, if `"Sheet1"` is sheet ID 0, then: 5298 # 5299 # `Sheet1!A1:A1 == sheet_id: 0, 5300 # start_row_index: 0, end_row_index: 1, 5301 # start_column_index: 0, end_column_index: 1` 5302 # 5303 # `Sheet1!A3:B4 == sheet_id: 0, 5304 # start_row_index: 2, end_row_index: 4, 5305 # start_column_index: 0, end_column_index: 2` 5306 # 5307 # `Sheet1!A:B == sheet_id: 0, 5308 # start_column_index: 0, end_column_index: 2` 5309 # 5310 # `Sheet1!A5:B == sheet_id: 0, 5311 # start_row_index: 4, 5312 # start_column_index: 0, end_column_index: 2` 5313 # 5314 # `Sheet1 == sheet_id:0` 5315 # 5316 # The start index must always be less than or equal to the end index. 5317 # If the start index equals the end index, then the range is empty. 5318 # Empty ranges are typically not meaningful and are usually rendered in the 5319 # UI as `#REF!`. 5320 "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded. 5321 "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded. 5322 "sheetId": 42, # The sheet this range is on. 5323 "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded. 5324 "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded. 5325 }, 5326 ], 5327 }, 5328 }, 5329 }, 5330 ], 5331 "chartType": "A String", # The type of the chart. 5332 "axis": [ # The axis on the chart. 5333 { # An axis of the chart. 5334 # A chart may not have more than one axis per 5335 # axis position. 5336 "position": "A String", # The position of this axis. 5337 "format": { # The format of a run of text in a cell. # The format of the title. 5338 # Only valid if the axis is not associated with the domain. 5339 # Absent values indicate that the field isn't specified. 5340 "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text. 5341 # for simplicity of conversion to/from color representations in various 5342 # languages over compactness; for example, the fields of this representation 5343 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 5344 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 5345 # method in iOS; and, with just a little work, it can be easily formatted into 5346 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 5347 # 5348 # Example (Java): 5349 # 5350 # import com.google.type.Color; 5351 # 5352 # // ... 5353 # public static java.awt.Color fromProto(Color protocolor) { 5354 # float alpha = protocolor.hasAlpha() 5355 # ? protocolor.getAlpha().getValue() 5356 # : 1.0; 5357 # 5358 # return new java.awt.Color( 5359 # protocolor.getRed(), 5360 # protocolor.getGreen(), 5361 # protocolor.getBlue(), 5362 # alpha); 5363 # } 5364 # 5365 # public static Color toProto(java.awt.Color color) { 5366 # float red = (float) color.getRed(); 5367 # float green = (float) color.getGreen(); 5368 # float blue = (float) color.getBlue(); 5369 # float denominator = 255.0; 5370 # Color.Builder resultBuilder = 5371 # Color 5372 # .newBuilder() 5373 # .setRed(red / denominator) 5374 # .setGreen(green / denominator) 5375 # .setBlue(blue / denominator); 5376 # int alpha = color.getAlpha(); 5377 # if (alpha != 255) { 5378 # result.setAlpha( 5379 # FloatValue 5380 # .newBuilder() 5381 # .setValue(((float) alpha) / denominator) 5382 # .build()); 5383 # } 5384 # return resultBuilder.build(); 5385 # } 5386 # // ... 5387 # 5388 # Example (iOS / Obj-C): 5389 # 5390 # // ... 5391 # static UIColor* fromProto(Color* protocolor) { 5392 # float red = [protocolor red]; 5393 # float green = [protocolor green]; 5394 # float blue = [protocolor blue]; 5395 # FloatValue* alpha_wrapper = [protocolor alpha]; 5396 # float alpha = 1.0; 5397 # if (alpha_wrapper != nil) { 5398 # alpha = [alpha_wrapper value]; 5399 # } 5400 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 5401 # } 5402 # 5403 # static Color* toProto(UIColor* color) { 5404 # CGFloat red, green, blue, alpha; 5405 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 5406 # return nil; 5407 # } 5408 # Color* result = [Color alloc] init]; 5409 # [result setRed:red]; 5410 # [result setGreen:green]; 5411 # [result setBlue:blue]; 5412 # if (alpha <= 0.9999) { 5413 # [result setAlpha:floatWrapperWithValue(alpha)]; 5414 # } 5415 # [result autorelease]; 5416 # return result; 5417 # } 5418 # // ... 5419 # 5420 # Example (JavaScript): 5421 # 5422 # // ... 5423 # 5424 # var protoToCssColor = function(rgb_color) { 5425 # var redFrac = rgb_color.red || 0.0; 5426 # var greenFrac = rgb_color.green || 0.0; 5427 # var blueFrac = rgb_color.blue || 0.0; 5428 # var red = Math.floor(redFrac * 255); 5429 # var green = Math.floor(greenFrac * 255); 5430 # var blue = Math.floor(blueFrac * 255); 5431 # 5432 # if (!('alpha' in rgb_color)) { 5433 # return rgbToCssColor_(red, green, blue); 5434 # } 5435 # 5436 # var alphaFrac = rgb_color.alpha.value || 0.0; 5437 # var rgbParams = [red, green, blue].join(','); 5438 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 5439 # }; 5440 # 5441 # var rgbToCssColor_ = function(red, green, blue) { 5442 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 5443 # var hexString = rgbNumber.toString(16); 5444 # var missingZeros = 6 - hexString.length; 5445 # var resultBuilder = ['#']; 5446 # for (var i = 0; i < missingZeros; i++) { 5447 # resultBuilder.push('0'); 5448 # } 5449 # resultBuilder.push(hexString); 5450 # return resultBuilder.join(''); 5451 # }; 5452 # 5453 # // ... 5454 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 5455 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 5456 # the final pixel color is defined by the equation: 5457 # 5458 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 5459 # 5460 # This means that a value of 1.0 corresponds to a solid color, whereas 5461 # a value of 0.0 corresponds to a completely transparent color. This 5462 # uses a wrapper message rather than a simple float scalar so that it is 5463 # possible to distinguish between a default value and the value being unset. 5464 # If omitted, this color object is to be rendered as a solid color 5465 # (as if the alpha value had been explicitly given with a value of 1.0). 5466 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 5467 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 5468 }, 5469 "bold": True or False, # True if the text is bold. 5470 "strikethrough": True or False, # True if the text has a strikethrough. 5471 "fontFamily": "A String", # The font family. 5472 "fontSize": 42, # The size of the font. 5473 "italic": True or False, # True if the text is italicized. 5474 "underline": True or False, # True if the text is underlined. 5475 }, 5476 "title": "A String", # The title of this axis. If set, this overrides any title inferred 5477 # from headers of the data. 5478 }, 5479 ], 5480 }, 5481 "title": "A String", # The title of the chart. 5482 }, 5483 }, 5484 }, 5485 "addConditionalFormatRule": { # Adds a new conditional format rule at the given index. # Adds a new conditional format rule. 5486 # All subsequent rules' indexes are incremented. 5487 "index": 42, # The zero-based index where the rule should be inserted. 5488 "rule": { # A rule describing a conditional format. # The rule to add. 5489 "ranges": [ # The ranges that will be formatted if the condition is true. 5490 # All the ranges must be on the same grid. 5491 { # A range on a sheet. 5492 # All indexes are zero-based. 5493 # Indexes are half open, e.g the start index is inclusive 5494 # and the end index is exclusive -- [start_index, end_index). 5495 # Missing indexes indicate the range is unbounded on that side. 5496 # 5497 # For example, if `"Sheet1"` is sheet ID 0, then: 5498 # 5499 # `Sheet1!A1:A1 == sheet_id: 0, 5500 # start_row_index: 0, end_row_index: 1, 5501 # start_column_index: 0, end_column_index: 1` 5502 # 5503 # `Sheet1!A3:B4 == sheet_id: 0, 5504 # start_row_index: 2, end_row_index: 4, 5505 # start_column_index: 0, end_column_index: 2` 5506 # 5507 # `Sheet1!A:B == sheet_id: 0, 5508 # start_column_index: 0, end_column_index: 2` 5509 # 5510 # `Sheet1!A5:B == sheet_id: 0, 5511 # start_row_index: 4, 5512 # start_column_index: 0, end_column_index: 2` 5513 # 5514 # `Sheet1 == sheet_id:0` 5515 # 5516 # The start index must always be less than or equal to the end index. 5517 # If the start index equals the end index, then the range is empty. 5518 # Empty ranges are typically not meaningful and are usually rendered in the 5519 # UI as `#REF!`. 5520 "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded. 5521 "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded. 5522 "sheetId": 42, # The sheet this range is on. 5523 "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded. 5524 "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded. 5525 }, 5526 ], 5527 "booleanRule": { # A rule that may or may not match, depending on the condition. # The formatting is either "on" or "off" according to the rule. 5528 "condition": { # A condition that can evaluate to true or false. # The condition of the rule. If the condition evaluates to true, 5529 # the format will be applied. 5530 # BooleanConditions are used by conditional formatting, 5531 # data validation, and the criteria in filters. 5532 "values": [ # The values of the condition. The number of supported values depends 5533 # on the condition type. Some support zero values, 5534 # others one or two values, 5535 # and ConditionType.ONE_OF_LIST supports an arbitrary number of values. 5536 { # The value of the condition. 5537 "relativeDate": "A String", # A relative date (based on the current date). 5538 # Valid only if the type is 5539 # DATE_BEFORE, 5540 # DATE_AFTER, 5541 # DATE_ON_OR_BEFORE or 5542 # DATE_ON_OR_AFTER. 5543 # 5544 # Relative dates are not supported in data validation. 5545 # They are supported only in conditional formatting and 5546 # conditional filters. 5547 "userEnteredValue": "A String", # A value the condition is based on. 5548 # The value will be parsed as if the user typed into a cell. 5549 # Formulas are supported (and must begin with an `=`). 5550 }, 5551 ], 5552 "type": "A String", # The type of condition. 5553 }, 5554 "format": { # The format of a cell. # The format to apply. 5555 # Conditional formatting can only apply a subset of formatting: 5556 # bold, italic, 5557 # strikethrough, 5558 # foreground color & 5559 # background color. 5560 "numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user. 5561 "pattern": "A String", # Pattern string used for formatting. If not set, a default pattern based on 5562 # the user's locale will be used if necessary for the given type. 5563 # See the [Date and Number Formats guide](/sheets/api/guides/formats) for more 5564 # information about the supported patterns. 5565 "type": "A String", # The type of the number format. 5566 # When writing, this field must be set. 5567 }, 5568 "textDirection": "A String", # The direction of the text in the cell. 5569 "padding": { # The amount of padding around the cell, in pixels. # The padding of the cell. 5570 # When updating padding, every field must be specified. 5571 "top": 42, # The top padding of the cell. 5572 "right": 42, # The right padding of the cell. 5573 "bottom": 42, # The bottom padding of the cell. 5574 "left": 42, # The left padding of the cell. 5575 }, 5576 "verticalAlignment": "A String", # The vertical alignment of the value in the cell. 5577 "backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell. 5578 # for simplicity of conversion to/from color representations in various 5579 # languages over compactness; for example, the fields of this representation 5580 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 5581 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 5582 # method in iOS; and, with just a little work, it can be easily formatted into 5583 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 5584 # 5585 # Example (Java): 5586 # 5587 # import com.google.type.Color; 5588 # 5589 # // ... 5590 # public static java.awt.Color fromProto(Color protocolor) { 5591 # float alpha = protocolor.hasAlpha() 5592 # ? protocolor.getAlpha().getValue() 5593 # : 1.0; 5594 # 5595 # return new java.awt.Color( 5596 # protocolor.getRed(), 5597 # protocolor.getGreen(), 5598 # protocolor.getBlue(), 5599 # alpha); 5600 # } 5601 # 5602 # public static Color toProto(java.awt.Color color) { 5603 # float red = (float) color.getRed(); 5604 # float green = (float) color.getGreen(); 5605 # float blue = (float) color.getBlue(); 5606 # float denominator = 255.0; 5607 # Color.Builder resultBuilder = 5608 # Color 5609 # .newBuilder() 5610 # .setRed(red / denominator) 5611 # .setGreen(green / denominator) 5612 # .setBlue(blue / denominator); 5613 # int alpha = color.getAlpha(); 5614 # if (alpha != 255) { 5615 # result.setAlpha( 5616 # FloatValue 5617 # .newBuilder() 5618 # .setValue(((float) alpha) / denominator) 5619 # .build()); 5620 # } 5621 # return resultBuilder.build(); 5622 # } 5623 # // ... 5624 # 5625 # Example (iOS / Obj-C): 5626 # 5627 # // ... 5628 # static UIColor* fromProto(Color* protocolor) { 5629 # float red = [protocolor red]; 5630 # float green = [protocolor green]; 5631 # float blue = [protocolor blue]; 5632 # FloatValue* alpha_wrapper = [protocolor alpha]; 5633 # float alpha = 1.0; 5634 # if (alpha_wrapper != nil) { 5635 # alpha = [alpha_wrapper value]; 5636 # } 5637 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 5638 # } 5639 # 5640 # static Color* toProto(UIColor* color) { 5641 # CGFloat red, green, blue, alpha; 5642 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 5643 # return nil; 5644 # } 5645 # Color* result = [Color alloc] init]; 5646 # [result setRed:red]; 5647 # [result setGreen:green]; 5648 # [result setBlue:blue]; 5649 # if (alpha <= 0.9999) { 5650 # [result setAlpha:floatWrapperWithValue(alpha)]; 5651 # } 5652 # [result autorelease]; 5653 # return result; 5654 # } 5655 # // ... 5656 # 5657 # Example (JavaScript): 5658 # 5659 # // ... 5660 # 5661 # var protoToCssColor = function(rgb_color) { 5662 # var redFrac = rgb_color.red || 0.0; 5663 # var greenFrac = rgb_color.green || 0.0; 5664 # var blueFrac = rgb_color.blue || 0.0; 5665 # var red = Math.floor(redFrac * 255); 5666 # var green = Math.floor(greenFrac * 255); 5667 # var blue = Math.floor(blueFrac * 255); 5668 # 5669 # if (!('alpha' in rgb_color)) { 5670 # return rgbToCssColor_(red, green, blue); 5671 # } 5672 # 5673 # var alphaFrac = rgb_color.alpha.value || 0.0; 5674 # var rgbParams = [red, green, blue].join(','); 5675 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 5676 # }; 5677 # 5678 # var rgbToCssColor_ = function(red, green, blue) { 5679 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 5680 # var hexString = rgbNumber.toString(16); 5681 # var missingZeros = 6 - hexString.length; 5682 # var resultBuilder = ['#']; 5683 # for (var i = 0; i < missingZeros; i++) { 5684 # resultBuilder.push('0'); 5685 # } 5686 # resultBuilder.push(hexString); 5687 # return resultBuilder.join(''); 5688 # }; 5689 # 5690 # // ... 5691 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 5692 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 5693 # the final pixel color is defined by the equation: 5694 # 5695 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 5696 # 5697 # This means that a value of 1.0 corresponds to a solid color, whereas 5698 # a value of 0.0 corresponds to a completely transparent color. This 5699 # uses a wrapper message rather than a simple float scalar so that it is 5700 # possible to distinguish between a default value and the value being unset. 5701 # If omitted, this color object is to be rendered as a solid color 5702 # (as if the alpha value had been explicitly given with a value of 1.0). 5703 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 5704 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 5705 }, 5706 "horizontalAlignment": "A String", # The horizontal alignment of the value in the cell. 5707 "textFormat": { # The format of a run of text in a cell. # The format of the text in the cell (unless overridden by a format run). 5708 # Absent values indicate that the field isn't specified. 5709 "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text. 5710 # for simplicity of conversion to/from color representations in various 5711 # languages over compactness; for example, the fields of this representation 5712 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 5713 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 5714 # method in iOS; and, with just a little work, it can be easily formatted into 5715 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 5716 # 5717 # Example (Java): 5718 # 5719 # import com.google.type.Color; 5720 # 5721 # // ... 5722 # public static java.awt.Color fromProto(Color protocolor) { 5723 # float alpha = protocolor.hasAlpha() 5724 # ? protocolor.getAlpha().getValue() 5725 # : 1.0; 5726 # 5727 # return new java.awt.Color( 5728 # protocolor.getRed(), 5729 # protocolor.getGreen(), 5730 # protocolor.getBlue(), 5731 # alpha); 5732 # } 5733 # 5734 # public static Color toProto(java.awt.Color color) { 5735 # float red = (float) color.getRed(); 5736 # float green = (float) color.getGreen(); 5737 # float blue = (float) color.getBlue(); 5738 # float denominator = 255.0; 5739 # Color.Builder resultBuilder = 5740 # Color 5741 # .newBuilder() 5742 # .setRed(red / denominator) 5743 # .setGreen(green / denominator) 5744 # .setBlue(blue / denominator); 5745 # int alpha = color.getAlpha(); 5746 # if (alpha != 255) { 5747 # result.setAlpha( 5748 # FloatValue 5749 # .newBuilder() 5750 # .setValue(((float) alpha) / denominator) 5751 # .build()); 5752 # } 5753 # return resultBuilder.build(); 5754 # } 5755 # // ... 5756 # 5757 # Example (iOS / Obj-C): 5758 # 5759 # // ... 5760 # static UIColor* fromProto(Color* protocolor) { 5761 # float red = [protocolor red]; 5762 # float green = [protocolor green]; 5763 # float blue = [protocolor blue]; 5764 # FloatValue* alpha_wrapper = [protocolor alpha]; 5765 # float alpha = 1.0; 5766 # if (alpha_wrapper != nil) { 5767 # alpha = [alpha_wrapper value]; 5768 # } 5769 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 5770 # } 5771 # 5772 # static Color* toProto(UIColor* color) { 5773 # CGFloat red, green, blue, alpha; 5774 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 5775 # return nil; 5776 # } 5777 # Color* result = [Color alloc] init]; 5778 # [result setRed:red]; 5779 # [result setGreen:green]; 5780 # [result setBlue:blue]; 5781 # if (alpha <= 0.9999) { 5782 # [result setAlpha:floatWrapperWithValue(alpha)]; 5783 # } 5784 # [result autorelease]; 5785 # return result; 5786 # } 5787 # // ... 5788 # 5789 # Example (JavaScript): 5790 # 5791 # // ... 5792 # 5793 # var protoToCssColor = function(rgb_color) { 5794 # var redFrac = rgb_color.red || 0.0; 5795 # var greenFrac = rgb_color.green || 0.0; 5796 # var blueFrac = rgb_color.blue || 0.0; 5797 # var red = Math.floor(redFrac * 255); 5798 # var green = Math.floor(greenFrac * 255); 5799 # var blue = Math.floor(blueFrac * 255); 5800 # 5801 # if (!('alpha' in rgb_color)) { 5802 # return rgbToCssColor_(red, green, blue); 5803 # } 5804 # 5805 # var alphaFrac = rgb_color.alpha.value || 0.0; 5806 # var rgbParams = [red, green, blue].join(','); 5807 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 5808 # }; 5809 # 5810 # var rgbToCssColor_ = function(red, green, blue) { 5811 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 5812 # var hexString = rgbNumber.toString(16); 5813 # var missingZeros = 6 - hexString.length; 5814 # var resultBuilder = ['#']; 5815 # for (var i = 0; i < missingZeros; i++) { 5816 # resultBuilder.push('0'); 5817 # } 5818 # resultBuilder.push(hexString); 5819 # return resultBuilder.join(''); 5820 # }; 5821 # 5822 # // ... 5823 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 5824 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 5825 # the final pixel color is defined by the equation: 5826 # 5827 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 5828 # 5829 # This means that a value of 1.0 corresponds to a solid color, whereas 5830 # a value of 0.0 corresponds to a completely transparent color. This 5831 # uses a wrapper message rather than a simple float scalar so that it is 5832 # possible to distinguish between a default value and the value being unset. 5833 # If omitted, this color object is to be rendered as a solid color 5834 # (as if the alpha value had been explicitly given with a value of 1.0). 5835 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 5836 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 5837 }, 5838 "bold": True or False, # True if the text is bold. 5839 "strikethrough": True or False, # True if the text has a strikethrough. 5840 "fontFamily": "A String", # The font family. 5841 "fontSize": 42, # The size of the font. 5842 "italic": True or False, # True if the text is italicized. 5843 "underline": True or False, # True if the text is underlined. 5844 }, 5845 "textRotation": { # The rotation applied to text in a cell. # The rotation applied to text in a cell 5846 "angle": 42, # The angle between the standard orientation and the desired orientation. 5847 # Measured in degrees. Valid values are between -90 and 90. Positive 5848 # angles are angled upwards, negative are angled downwards. 5849 # 5850 # Note: For LTR text direction positive angles are in the counterclockwise 5851 # direction, whereas for RTL they are in the clockwise direction 5852 "vertical": True or False, # If true, text reads top to bottom, but the orientation of individual 5853 # characters is unchanged. 5854 # For example: 5855 # 5856 # | V | 5857 # | e | 5858 # | r | 5859 # | t | 5860 # | i | 5861 # | c | 5862 # | a | 5863 # | l | 5864 }, 5865 "hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell. 5866 "borders": { # The borders of the cell. # The borders of the cell. 5867 "top": { # A border along a cell. # The top border of the cell. 5868 "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border. 5869 # for simplicity of conversion to/from color representations in various 5870 # languages over compactness; for example, the fields of this representation 5871 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 5872 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 5873 # method in iOS; and, with just a little work, it can be easily formatted into 5874 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 5875 # 5876 # Example (Java): 5877 # 5878 # import com.google.type.Color; 5879 # 5880 # // ... 5881 # public static java.awt.Color fromProto(Color protocolor) { 5882 # float alpha = protocolor.hasAlpha() 5883 # ? protocolor.getAlpha().getValue() 5884 # : 1.0; 5885 # 5886 # return new java.awt.Color( 5887 # protocolor.getRed(), 5888 # protocolor.getGreen(), 5889 # protocolor.getBlue(), 5890 # alpha); 5891 # } 5892 # 5893 # public static Color toProto(java.awt.Color color) { 5894 # float red = (float) color.getRed(); 5895 # float green = (float) color.getGreen(); 5896 # float blue = (float) color.getBlue(); 5897 # float denominator = 255.0; 5898 # Color.Builder resultBuilder = 5899 # Color 5900 # .newBuilder() 5901 # .setRed(red / denominator) 5902 # .setGreen(green / denominator) 5903 # .setBlue(blue / denominator); 5904 # int alpha = color.getAlpha(); 5905 # if (alpha != 255) { 5906 # result.setAlpha( 5907 # FloatValue 5908 # .newBuilder() 5909 # .setValue(((float) alpha) / denominator) 5910 # .build()); 5911 # } 5912 # return resultBuilder.build(); 5913 # } 5914 # // ... 5915 # 5916 # Example (iOS / Obj-C): 5917 # 5918 # // ... 5919 # static UIColor* fromProto(Color* protocolor) { 5920 # float red = [protocolor red]; 5921 # float green = [protocolor green]; 5922 # float blue = [protocolor blue]; 5923 # FloatValue* alpha_wrapper = [protocolor alpha]; 5924 # float alpha = 1.0; 5925 # if (alpha_wrapper != nil) { 5926 # alpha = [alpha_wrapper value]; 5927 # } 5928 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 5929 # } 5930 # 5931 # static Color* toProto(UIColor* color) { 5932 # CGFloat red, green, blue, alpha; 5933 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 5934 # return nil; 5935 # } 5936 # Color* result = [Color alloc] init]; 5937 # [result setRed:red]; 5938 # [result setGreen:green]; 5939 # [result setBlue:blue]; 5940 # if (alpha <= 0.9999) { 5941 # [result setAlpha:floatWrapperWithValue(alpha)]; 5942 # } 5943 # [result autorelease]; 5944 # return result; 5945 # } 5946 # // ... 5947 # 5948 # Example (JavaScript): 5949 # 5950 # // ... 5951 # 5952 # var protoToCssColor = function(rgb_color) { 5953 # var redFrac = rgb_color.red || 0.0; 5954 # var greenFrac = rgb_color.green || 0.0; 5955 # var blueFrac = rgb_color.blue || 0.0; 5956 # var red = Math.floor(redFrac * 255); 5957 # var green = Math.floor(greenFrac * 255); 5958 # var blue = Math.floor(blueFrac * 255); 5959 # 5960 # if (!('alpha' in rgb_color)) { 5961 # return rgbToCssColor_(red, green, blue); 5962 # } 5963 # 5964 # var alphaFrac = rgb_color.alpha.value || 0.0; 5965 # var rgbParams = [red, green, blue].join(','); 5966 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 5967 # }; 5968 # 5969 # var rgbToCssColor_ = function(red, green, blue) { 5970 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 5971 # var hexString = rgbNumber.toString(16); 5972 # var missingZeros = 6 - hexString.length; 5973 # var resultBuilder = ['#']; 5974 # for (var i = 0; i < missingZeros; i++) { 5975 # resultBuilder.push('0'); 5976 # } 5977 # resultBuilder.push(hexString); 5978 # return resultBuilder.join(''); 5979 # }; 5980 # 5981 # // ... 5982 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 5983 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 5984 # the final pixel color is defined by the equation: 5985 # 5986 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 5987 # 5988 # This means that a value of 1.0 corresponds to a solid color, whereas 5989 # a value of 0.0 corresponds to a completely transparent color. This 5990 # uses a wrapper message rather than a simple float scalar so that it is 5991 # possible to distinguish between a default value and the value being unset. 5992 # If omitted, this color object is to be rendered as a solid color 5993 # (as if the alpha value had been explicitly given with a value of 1.0). 5994 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 5995 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 5996 }, 5997 "width": 42, # The width of the border, in pixels. 5998 # Deprecated; the width is determined by the "style" field. 5999 "style": "A String", # The style of the border. 6000 }, 6001 "right": { # A border along a cell. # The right border of the cell. 6002 "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border. 6003 # for simplicity of conversion to/from color representations in various 6004 # languages over compactness; for example, the fields of this representation 6005 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 6006 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 6007 # method in iOS; and, with just a little work, it can be easily formatted into 6008 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 6009 # 6010 # Example (Java): 6011 # 6012 # import com.google.type.Color; 6013 # 6014 # // ... 6015 # public static java.awt.Color fromProto(Color protocolor) { 6016 # float alpha = protocolor.hasAlpha() 6017 # ? protocolor.getAlpha().getValue() 6018 # : 1.0; 6019 # 6020 # return new java.awt.Color( 6021 # protocolor.getRed(), 6022 # protocolor.getGreen(), 6023 # protocolor.getBlue(), 6024 # alpha); 6025 # } 6026 # 6027 # public static Color toProto(java.awt.Color color) { 6028 # float red = (float) color.getRed(); 6029 # float green = (float) color.getGreen(); 6030 # float blue = (float) color.getBlue(); 6031 # float denominator = 255.0; 6032 # Color.Builder resultBuilder = 6033 # Color 6034 # .newBuilder() 6035 # .setRed(red / denominator) 6036 # .setGreen(green / denominator) 6037 # .setBlue(blue / denominator); 6038 # int alpha = color.getAlpha(); 6039 # if (alpha != 255) { 6040 # result.setAlpha( 6041 # FloatValue 6042 # .newBuilder() 6043 # .setValue(((float) alpha) / denominator) 6044 # .build()); 6045 # } 6046 # return resultBuilder.build(); 6047 # } 6048 # // ... 6049 # 6050 # Example (iOS / Obj-C): 6051 # 6052 # // ... 6053 # static UIColor* fromProto(Color* protocolor) { 6054 # float red = [protocolor red]; 6055 # float green = [protocolor green]; 6056 # float blue = [protocolor blue]; 6057 # FloatValue* alpha_wrapper = [protocolor alpha]; 6058 # float alpha = 1.0; 6059 # if (alpha_wrapper != nil) { 6060 # alpha = [alpha_wrapper value]; 6061 # } 6062 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 6063 # } 6064 # 6065 # static Color* toProto(UIColor* color) { 6066 # CGFloat red, green, blue, alpha; 6067 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 6068 # return nil; 6069 # } 6070 # Color* result = [Color alloc] init]; 6071 # [result setRed:red]; 6072 # [result setGreen:green]; 6073 # [result setBlue:blue]; 6074 # if (alpha <= 0.9999) { 6075 # [result setAlpha:floatWrapperWithValue(alpha)]; 6076 # } 6077 # [result autorelease]; 6078 # return result; 6079 # } 6080 # // ... 6081 # 6082 # Example (JavaScript): 6083 # 6084 # // ... 6085 # 6086 # var protoToCssColor = function(rgb_color) { 6087 # var redFrac = rgb_color.red || 0.0; 6088 # var greenFrac = rgb_color.green || 0.0; 6089 # var blueFrac = rgb_color.blue || 0.0; 6090 # var red = Math.floor(redFrac * 255); 6091 # var green = Math.floor(greenFrac * 255); 6092 # var blue = Math.floor(blueFrac * 255); 6093 # 6094 # if (!('alpha' in rgb_color)) { 6095 # return rgbToCssColor_(red, green, blue); 6096 # } 6097 # 6098 # var alphaFrac = rgb_color.alpha.value || 0.0; 6099 # var rgbParams = [red, green, blue].join(','); 6100 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 6101 # }; 6102 # 6103 # var rgbToCssColor_ = function(red, green, blue) { 6104 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 6105 # var hexString = rgbNumber.toString(16); 6106 # var missingZeros = 6 - hexString.length; 6107 # var resultBuilder = ['#']; 6108 # for (var i = 0; i < missingZeros; i++) { 6109 # resultBuilder.push('0'); 6110 # } 6111 # resultBuilder.push(hexString); 6112 # return resultBuilder.join(''); 6113 # }; 6114 # 6115 # // ... 6116 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 6117 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 6118 # the final pixel color is defined by the equation: 6119 # 6120 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 6121 # 6122 # This means that a value of 1.0 corresponds to a solid color, whereas 6123 # a value of 0.0 corresponds to a completely transparent color. This 6124 # uses a wrapper message rather than a simple float scalar so that it is 6125 # possible to distinguish between a default value and the value being unset. 6126 # If omitted, this color object is to be rendered as a solid color 6127 # (as if the alpha value had been explicitly given with a value of 1.0). 6128 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 6129 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 6130 }, 6131 "width": 42, # The width of the border, in pixels. 6132 # Deprecated; the width is determined by the "style" field. 6133 "style": "A String", # The style of the border. 6134 }, 6135 "bottom": { # A border along a cell. # The bottom border of the cell. 6136 "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border. 6137 # for simplicity of conversion to/from color representations in various 6138 # languages over compactness; for example, the fields of this representation 6139 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 6140 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 6141 # method in iOS; and, with just a little work, it can be easily formatted into 6142 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 6143 # 6144 # Example (Java): 6145 # 6146 # import com.google.type.Color; 6147 # 6148 # // ... 6149 # public static java.awt.Color fromProto(Color protocolor) { 6150 # float alpha = protocolor.hasAlpha() 6151 # ? protocolor.getAlpha().getValue() 6152 # : 1.0; 6153 # 6154 # return new java.awt.Color( 6155 # protocolor.getRed(), 6156 # protocolor.getGreen(), 6157 # protocolor.getBlue(), 6158 # alpha); 6159 # } 6160 # 6161 # public static Color toProto(java.awt.Color color) { 6162 # float red = (float) color.getRed(); 6163 # float green = (float) color.getGreen(); 6164 # float blue = (float) color.getBlue(); 6165 # float denominator = 255.0; 6166 # Color.Builder resultBuilder = 6167 # Color 6168 # .newBuilder() 6169 # .setRed(red / denominator) 6170 # .setGreen(green / denominator) 6171 # .setBlue(blue / denominator); 6172 # int alpha = color.getAlpha(); 6173 # if (alpha != 255) { 6174 # result.setAlpha( 6175 # FloatValue 6176 # .newBuilder() 6177 # .setValue(((float) alpha) / denominator) 6178 # .build()); 6179 # } 6180 # return resultBuilder.build(); 6181 # } 6182 # // ... 6183 # 6184 # Example (iOS / Obj-C): 6185 # 6186 # // ... 6187 # static UIColor* fromProto(Color* protocolor) { 6188 # float red = [protocolor red]; 6189 # float green = [protocolor green]; 6190 # float blue = [protocolor blue]; 6191 # FloatValue* alpha_wrapper = [protocolor alpha]; 6192 # float alpha = 1.0; 6193 # if (alpha_wrapper != nil) { 6194 # alpha = [alpha_wrapper value]; 6195 # } 6196 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 6197 # } 6198 # 6199 # static Color* toProto(UIColor* color) { 6200 # CGFloat red, green, blue, alpha; 6201 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 6202 # return nil; 6203 # } 6204 # Color* result = [Color alloc] init]; 6205 # [result setRed:red]; 6206 # [result setGreen:green]; 6207 # [result setBlue:blue]; 6208 # if (alpha <= 0.9999) { 6209 # [result setAlpha:floatWrapperWithValue(alpha)]; 6210 # } 6211 # [result autorelease]; 6212 # return result; 6213 # } 6214 # // ... 6215 # 6216 # Example (JavaScript): 6217 # 6218 # // ... 6219 # 6220 # var protoToCssColor = function(rgb_color) { 6221 # var redFrac = rgb_color.red || 0.0; 6222 # var greenFrac = rgb_color.green || 0.0; 6223 # var blueFrac = rgb_color.blue || 0.0; 6224 # var red = Math.floor(redFrac * 255); 6225 # var green = Math.floor(greenFrac * 255); 6226 # var blue = Math.floor(blueFrac * 255); 6227 # 6228 # if (!('alpha' in rgb_color)) { 6229 # return rgbToCssColor_(red, green, blue); 6230 # } 6231 # 6232 # var alphaFrac = rgb_color.alpha.value || 0.0; 6233 # var rgbParams = [red, green, blue].join(','); 6234 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 6235 # }; 6236 # 6237 # var rgbToCssColor_ = function(red, green, blue) { 6238 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 6239 # var hexString = rgbNumber.toString(16); 6240 # var missingZeros = 6 - hexString.length; 6241 # var resultBuilder = ['#']; 6242 # for (var i = 0; i < missingZeros; i++) { 6243 # resultBuilder.push('0'); 6244 # } 6245 # resultBuilder.push(hexString); 6246 # return resultBuilder.join(''); 6247 # }; 6248 # 6249 # // ... 6250 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 6251 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 6252 # the final pixel color is defined by the equation: 6253 # 6254 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 6255 # 6256 # This means that a value of 1.0 corresponds to a solid color, whereas 6257 # a value of 0.0 corresponds to a completely transparent color. This 6258 # uses a wrapper message rather than a simple float scalar so that it is 6259 # possible to distinguish between a default value and the value being unset. 6260 # If omitted, this color object is to be rendered as a solid color 6261 # (as if the alpha value had been explicitly given with a value of 1.0). 6262 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 6263 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 6264 }, 6265 "width": 42, # The width of the border, in pixels. 6266 # Deprecated; the width is determined by the "style" field. 6267 "style": "A String", # The style of the border. 6268 }, 6269 "left": { # A border along a cell. # The left border of the cell. 6270 "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border. 6271 # for simplicity of conversion to/from color representations in various 6272 # languages over compactness; for example, the fields of this representation 6273 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 6274 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 6275 # method in iOS; and, with just a little work, it can be easily formatted into 6276 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 6277 # 6278 # Example (Java): 6279 # 6280 # import com.google.type.Color; 6281 # 6282 # // ... 6283 # public static java.awt.Color fromProto(Color protocolor) { 6284 # float alpha = protocolor.hasAlpha() 6285 # ? protocolor.getAlpha().getValue() 6286 # : 1.0; 6287 # 6288 # return new java.awt.Color( 6289 # protocolor.getRed(), 6290 # protocolor.getGreen(), 6291 # protocolor.getBlue(), 6292 # alpha); 6293 # } 6294 # 6295 # public static Color toProto(java.awt.Color color) { 6296 # float red = (float) color.getRed(); 6297 # float green = (float) color.getGreen(); 6298 # float blue = (float) color.getBlue(); 6299 # float denominator = 255.0; 6300 # Color.Builder resultBuilder = 6301 # Color 6302 # .newBuilder() 6303 # .setRed(red / denominator) 6304 # .setGreen(green / denominator) 6305 # .setBlue(blue / denominator); 6306 # int alpha = color.getAlpha(); 6307 # if (alpha != 255) { 6308 # result.setAlpha( 6309 # FloatValue 6310 # .newBuilder() 6311 # .setValue(((float) alpha) / denominator) 6312 # .build()); 6313 # } 6314 # return resultBuilder.build(); 6315 # } 6316 # // ... 6317 # 6318 # Example (iOS / Obj-C): 6319 # 6320 # // ... 6321 # static UIColor* fromProto(Color* protocolor) { 6322 # float red = [protocolor red]; 6323 # float green = [protocolor green]; 6324 # float blue = [protocolor blue]; 6325 # FloatValue* alpha_wrapper = [protocolor alpha]; 6326 # float alpha = 1.0; 6327 # if (alpha_wrapper != nil) { 6328 # alpha = [alpha_wrapper value]; 6329 # } 6330 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 6331 # } 6332 # 6333 # static Color* toProto(UIColor* color) { 6334 # CGFloat red, green, blue, alpha; 6335 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 6336 # return nil; 6337 # } 6338 # Color* result = [Color alloc] init]; 6339 # [result setRed:red]; 6340 # [result setGreen:green]; 6341 # [result setBlue:blue]; 6342 # if (alpha <= 0.9999) { 6343 # [result setAlpha:floatWrapperWithValue(alpha)]; 6344 # } 6345 # [result autorelease]; 6346 # return result; 6347 # } 6348 # // ... 6349 # 6350 # Example (JavaScript): 6351 # 6352 # // ... 6353 # 6354 # var protoToCssColor = function(rgb_color) { 6355 # var redFrac = rgb_color.red || 0.0; 6356 # var greenFrac = rgb_color.green || 0.0; 6357 # var blueFrac = rgb_color.blue || 0.0; 6358 # var red = Math.floor(redFrac * 255); 6359 # var green = Math.floor(greenFrac * 255); 6360 # var blue = Math.floor(blueFrac * 255); 6361 # 6362 # if (!('alpha' in rgb_color)) { 6363 # return rgbToCssColor_(red, green, blue); 6364 # } 6365 # 6366 # var alphaFrac = rgb_color.alpha.value || 0.0; 6367 # var rgbParams = [red, green, blue].join(','); 6368 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 6369 # }; 6370 # 6371 # var rgbToCssColor_ = function(red, green, blue) { 6372 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 6373 # var hexString = rgbNumber.toString(16); 6374 # var missingZeros = 6 - hexString.length; 6375 # var resultBuilder = ['#']; 6376 # for (var i = 0; i < missingZeros; i++) { 6377 # resultBuilder.push('0'); 6378 # } 6379 # resultBuilder.push(hexString); 6380 # return resultBuilder.join(''); 6381 # }; 6382 # 6383 # // ... 6384 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 6385 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 6386 # the final pixel color is defined by the equation: 6387 # 6388 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 6389 # 6390 # This means that a value of 1.0 corresponds to a solid color, whereas 6391 # a value of 0.0 corresponds to a completely transparent color. This 6392 # uses a wrapper message rather than a simple float scalar so that it is 6393 # possible to distinguish between a default value and the value being unset. 6394 # If omitted, this color object is to be rendered as a solid color 6395 # (as if the alpha value had been explicitly given with a value of 1.0). 6396 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 6397 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 6398 }, 6399 "width": 42, # The width of the border, in pixels. 6400 # Deprecated; the width is determined by the "style" field. 6401 "style": "A String", # The style of the border. 6402 }, 6403 }, 6404 "wrapStrategy": "A String", # The wrap strategy for the value in the cell. 6405 }, 6406 }, 6407 "gradientRule": { # A rule that applies a gradient color scale format, based on # The formatting will vary based on the gradients in the rule. 6408 # the interpolation points listed. The format of a cell will vary 6409 # based on its contents as compared to the values of the interpolation 6410 # points. 6411 "maxpoint": { # A single interpolation point on a gradient conditional format. # The final interpolation point. 6412 # These pin the gradient color scale according to the color, 6413 # type and value chosen. 6414 "color": { # Represents a color in the RGBA color space. This representation is designed # The color this interpolation point should use. 6415 # for simplicity of conversion to/from color representations in various 6416 # languages over compactness; for example, the fields of this representation 6417 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 6418 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 6419 # method in iOS; and, with just a little work, it can be easily formatted into 6420 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 6421 # 6422 # Example (Java): 6423 # 6424 # import com.google.type.Color; 6425 # 6426 # // ... 6427 # public static java.awt.Color fromProto(Color protocolor) { 6428 # float alpha = protocolor.hasAlpha() 6429 # ? protocolor.getAlpha().getValue() 6430 # : 1.0; 6431 # 6432 # return new java.awt.Color( 6433 # protocolor.getRed(), 6434 # protocolor.getGreen(), 6435 # protocolor.getBlue(), 6436 # alpha); 6437 # } 6438 # 6439 # public static Color toProto(java.awt.Color color) { 6440 # float red = (float) color.getRed(); 6441 # float green = (float) color.getGreen(); 6442 # float blue = (float) color.getBlue(); 6443 # float denominator = 255.0; 6444 # Color.Builder resultBuilder = 6445 # Color 6446 # .newBuilder() 6447 # .setRed(red / denominator) 6448 # .setGreen(green / denominator) 6449 # .setBlue(blue / denominator); 6450 # int alpha = color.getAlpha(); 6451 # if (alpha != 255) { 6452 # result.setAlpha( 6453 # FloatValue 6454 # .newBuilder() 6455 # .setValue(((float) alpha) / denominator) 6456 # .build()); 6457 # } 6458 # return resultBuilder.build(); 6459 # } 6460 # // ... 6461 # 6462 # Example (iOS / Obj-C): 6463 # 6464 # // ... 6465 # static UIColor* fromProto(Color* protocolor) { 6466 # float red = [protocolor red]; 6467 # float green = [protocolor green]; 6468 # float blue = [protocolor blue]; 6469 # FloatValue* alpha_wrapper = [protocolor alpha]; 6470 # float alpha = 1.0; 6471 # if (alpha_wrapper != nil) { 6472 # alpha = [alpha_wrapper value]; 6473 # } 6474 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 6475 # } 6476 # 6477 # static Color* toProto(UIColor* color) { 6478 # CGFloat red, green, blue, alpha; 6479 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 6480 # return nil; 6481 # } 6482 # Color* result = [Color alloc] init]; 6483 # [result setRed:red]; 6484 # [result setGreen:green]; 6485 # [result setBlue:blue]; 6486 # if (alpha <= 0.9999) { 6487 # [result setAlpha:floatWrapperWithValue(alpha)]; 6488 # } 6489 # [result autorelease]; 6490 # return result; 6491 # } 6492 # // ... 6493 # 6494 # Example (JavaScript): 6495 # 6496 # // ... 6497 # 6498 # var protoToCssColor = function(rgb_color) { 6499 # var redFrac = rgb_color.red || 0.0; 6500 # var greenFrac = rgb_color.green || 0.0; 6501 # var blueFrac = rgb_color.blue || 0.0; 6502 # var red = Math.floor(redFrac * 255); 6503 # var green = Math.floor(greenFrac * 255); 6504 # var blue = Math.floor(blueFrac * 255); 6505 # 6506 # if (!('alpha' in rgb_color)) { 6507 # return rgbToCssColor_(red, green, blue); 6508 # } 6509 # 6510 # var alphaFrac = rgb_color.alpha.value || 0.0; 6511 # var rgbParams = [red, green, blue].join(','); 6512 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 6513 # }; 6514 # 6515 # var rgbToCssColor_ = function(red, green, blue) { 6516 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 6517 # var hexString = rgbNumber.toString(16); 6518 # var missingZeros = 6 - hexString.length; 6519 # var resultBuilder = ['#']; 6520 # for (var i = 0; i < missingZeros; i++) { 6521 # resultBuilder.push('0'); 6522 # } 6523 # resultBuilder.push(hexString); 6524 # return resultBuilder.join(''); 6525 # }; 6526 # 6527 # // ... 6528 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 6529 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 6530 # the final pixel color is defined by the equation: 6531 # 6532 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 6533 # 6534 # This means that a value of 1.0 corresponds to a solid color, whereas 6535 # a value of 0.0 corresponds to a completely transparent color. This 6536 # uses a wrapper message rather than a simple float scalar so that it is 6537 # possible to distinguish between a default value and the value being unset. 6538 # If omitted, this color object is to be rendered as a solid color 6539 # (as if the alpha value had been explicitly given with a value of 1.0). 6540 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 6541 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 6542 }, 6543 "type": "A String", # How the value should be interpreted. 6544 "value": "A String", # The value this interpolation point uses. May be a formula. 6545 # Unused if type is MIN or 6546 # MAX. 6547 }, 6548 "midpoint": { # A single interpolation point on a gradient conditional format. # An optional midway interpolation point. 6549 # These pin the gradient color scale according to the color, 6550 # type and value chosen. 6551 "color": { # Represents a color in the RGBA color space. This representation is designed # The color this interpolation point should use. 6552 # for simplicity of conversion to/from color representations in various 6553 # languages over compactness; for example, the fields of this representation 6554 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 6555 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 6556 # method in iOS; and, with just a little work, it can be easily formatted into 6557 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 6558 # 6559 # Example (Java): 6560 # 6561 # import com.google.type.Color; 6562 # 6563 # // ... 6564 # public static java.awt.Color fromProto(Color protocolor) { 6565 # float alpha = protocolor.hasAlpha() 6566 # ? protocolor.getAlpha().getValue() 6567 # : 1.0; 6568 # 6569 # return new java.awt.Color( 6570 # protocolor.getRed(), 6571 # protocolor.getGreen(), 6572 # protocolor.getBlue(), 6573 # alpha); 6574 # } 6575 # 6576 # public static Color toProto(java.awt.Color color) { 6577 # float red = (float) color.getRed(); 6578 # float green = (float) color.getGreen(); 6579 # float blue = (float) color.getBlue(); 6580 # float denominator = 255.0; 6581 # Color.Builder resultBuilder = 6582 # Color 6583 # .newBuilder() 6584 # .setRed(red / denominator) 6585 # .setGreen(green / denominator) 6586 # .setBlue(blue / denominator); 6587 # int alpha = color.getAlpha(); 6588 # if (alpha != 255) { 6589 # result.setAlpha( 6590 # FloatValue 6591 # .newBuilder() 6592 # .setValue(((float) alpha) / denominator) 6593 # .build()); 6594 # } 6595 # return resultBuilder.build(); 6596 # } 6597 # // ... 6598 # 6599 # Example (iOS / Obj-C): 6600 # 6601 # // ... 6602 # static UIColor* fromProto(Color* protocolor) { 6603 # float red = [protocolor red]; 6604 # float green = [protocolor green]; 6605 # float blue = [protocolor blue]; 6606 # FloatValue* alpha_wrapper = [protocolor alpha]; 6607 # float alpha = 1.0; 6608 # if (alpha_wrapper != nil) { 6609 # alpha = [alpha_wrapper value]; 6610 # } 6611 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 6612 # } 6613 # 6614 # static Color* toProto(UIColor* color) { 6615 # CGFloat red, green, blue, alpha; 6616 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 6617 # return nil; 6618 # } 6619 # Color* result = [Color alloc] init]; 6620 # [result setRed:red]; 6621 # [result setGreen:green]; 6622 # [result setBlue:blue]; 6623 # if (alpha <= 0.9999) { 6624 # [result setAlpha:floatWrapperWithValue(alpha)]; 6625 # } 6626 # [result autorelease]; 6627 # return result; 6628 # } 6629 # // ... 6630 # 6631 # Example (JavaScript): 6632 # 6633 # // ... 6634 # 6635 # var protoToCssColor = function(rgb_color) { 6636 # var redFrac = rgb_color.red || 0.0; 6637 # var greenFrac = rgb_color.green || 0.0; 6638 # var blueFrac = rgb_color.blue || 0.0; 6639 # var red = Math.floor(redFrac * 255); 6640 # var green = Math.floor(greenFrac * 255); 6641 # var blue = Math.floor(blueFrac * 255); 6642 # 6643 # if (!('alpha' in rgb_color)) { 6644 # return rgbToCssColor_(red, green, blue); 6645 # } 6646 # 6647 # var alphaFrac = rgb_color.alpha.value || 0.0; 6648 # var rgbParams = [red, green, blue].join(','); 6649 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 6650 # }; 6651 # 6652 # var rgbToCssColor_ = function(red, green, blue) { 6653 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 6654 # var hexString = rgbNumber.toString(16); 6655 # var missingZeros = 6 - hexString.length; 6656 # var resultBuilder = ['#']; 6657 # for (var i = 0; i < missingZeros; i++) { 6658 # resultBuilder.push('0'); 6659 # } 6660 # resultBuilder.push(hexString); 6661 # return resultBuilder.join(''); 6662 # }; 6663 # 6664 # // ... 6665 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 6666 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 6667 # the final pixel color is defined by the equation: 6668 # 6669 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 6670 # 6671 # This means that a value of 1.0 corresponds to a solid color, whereas 6672 # a value of 0.0 corresponds to a completely transparent color. This 6673 # uses a wrapper message rather than a simple float scalar so that it is 6674 # possible to distinguish between a default value and the value being unset. 6675 # If omitted, this color object is to be rendered as a solid color 6676 # (as if the alpha value had been explicitly given with a value of 1.0). 6677 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 6678 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 6679 }, 6680 "type": "A String", # How the value should be interpreted. 6681 "value": "A String", # The value this interpolation point uses. May be a formula. 6682 # Unused if type is MIN or 6683 # MAX. 6684 }, 6685 "minpoint": { # A single interpolation point on a gradient conditional format. # The starting interpolation point. 6686 # These pin the gradient color scale according to the color, 6687 # type and value chosen. 6688 "color": { # Represents a color in the RGBA color space. This representation is designed # The color this interpolation point should use. 6689 # for simplicity of conversion to/from color representations in various 6690 # languages over compactness; for example, the fields of this representation 6691 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 6692 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 6693 # method in iOS; and, with just a little work, it can be easily formatted into 6694 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 6695 # 6696 # Example (Java): 6697 # 6698 # import com.google.type.Color; 6699 # 6700 # // ... 6701 # public static java.awt.Color fromProto(Color protocolor) { 6702 # float alpha = protocolor.hasAlpha() 6703 # ? protocolor.getAlpha().getValue() 6704 # : 1.0; 6705 # 6706 # return new java.awt.Color( 6707 # protocolor.getRed(), 6708 # protocolor.getGreen(), 6709 # protocolor.getBlue(), 6710 # alpha); 6711 # } 6712 # 6713 # public static Color toProto(java.awt.Color color) { 6714 # float red = (float) color.getRed(); 6715 # float green = (float) color.getGreen(); 6716 # float blue = (float) color.getBlue(); 6717 # float denominator = 255.0; 6718 # Color.Builder resultBuilder = 6719 # Color 6720 # .newBuilder() 6721 # .setRed(red / denominator) 6722 # .setGreen(green / denominator) 6723 # .setBlue(blue / denominator); 6724 # int alpha = color.getAlpha(); 6725 # if (alpha != 255) { 6726 # result.setAlpha( 6727 # FloatValue 6728 # .newBuilder() 6729 # .setValue(((float) alpha) / denominator) 6730 # .build()); 6731 # } 6732 # return resultBuilder.build(); 6733 # } 6734 # // ... 6735 # 6736 # Example (iOS / Obj-C): 6737 # 6738 # // ... 6739 # static UIColor* fromProto(Color* protocolor) { 6740 # float red = [protocolor red]; 6741 # float green = [protocolor green]; 6742 # float blue = [protocolor blue]; 6743 # FloatValue* alpha_wrapper = [protocolor alpha]; 6744 # float alpha = 1.0; 6745 # if (alpha_wrapper != nil) { 6746 # alpha = [alpha_wrapper value]; 6747 # } 6748 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 6749 # } 6750 # 6751 # static Color* toProto(UIColor* color) { 6752 # CGFloat red, green, blue, alpha; 6753 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 6754 # return nil; 6755 # } 6756 # Color* result = [Color alloc] init]; 6757 # [result setRed:red]; 6758 # [result setGreen:green]; 6759 # [result setBlue:blue]; 6760 # if (alpha <= 0.9999) { 6761 # [result setAlpha:floatWrapperWithValue(alpha)]; 6762 # } 6763 # [result autorelease]; 6764 # return result; 6765 # } 6766 # // ... 6767 # 6768 # Example (JavaScript): 6769 # 6770 # // ... 6771 # 6772 # var protoToCssColor = function(rgb_color) { 6773 # var redFrac = rgb_color.red || 0.0; 6774 # var greenFrac = rgb_color.green || 0.0; 6775 # var blueFrac = rgb_color.blue || 0.0; 6776 # var red = Math.floor(redFrac * 255); 6777 # var green = Math.floor(greenFrac * 255); 6778 # var blue = Math.floor(blueFrac * 255); 6779 # 6780 # if (!('alpha' in rgb_color)) { 6781 # return rgbToCssColor_(red, green, blue); 6782 # } 6783 # 6784 # var alphaFrac = rgb_color.alpha.value || 0.0; 6785 # var rgbParams = [red, green, blue].join(','); 6786 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 6787 # }; 6788 # 6789 # var rgbToCssColor_ = function(red, green, blue) { 6790 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 6791 # var hexString = rgbNumber.toString(16); 6792 # var missingZeros = 6 - hexString.length; 6793 # var resultBuilder = ['#']; 6794 # for (var i = 0; i < missingZeros; i++) { 6795 # resultBuilder.push('0'); 6796 # } 6797 # resultBuilder.push(hexString); 6798 # return resultBuilder.join(''); 6799 # }; 6800 # 6801 # // ... 6802 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 6803 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 6804 # the final pixel color is defined by the equation: 6805 # 6806 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 6807 # 6808 # This means that a value of 1.0 corresponds to a solid color, whereas 6809 # a value of 0.0 corresponds to a completely transparent color. This 6810 # uses a wrapper message rather than a simple float scalar so that it is 6811 # possible to distinguish between a default value and the value being unset. 6812 # If omitted, this color object is to be rendered as a solid color 6813 # (as if the alpha value had been explicitly given with a value of 1.0). 6814 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 6815 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 6816 }, 6817 "type": "A String", # How the value should be interpreted. 6818 "value": "A String", # The value this interpolation point uses. May be a formula. 6819 # Unused if type is MIN or 6820 # MAX. 6821 }, 6822 }, 6823 }, 6824 }, 6825 "deleteBanding": { # Removes the banded range with the given ID from the spreadsheet. # Removes a banded range 6826 "bandedRangeId": 42, # The ID of the banded range to delete. 6827 }, 6828 "repeatCell": { # Updates all cells in the range to the values in the given Cell object. # Repeats a single cell across a range. 6829 # Only the fields listed in the fields field are updated; others are 6830 # unchanged. 6831 # 6832 # If writing a cell with a formula, the formula's ranges will automatically 6833 # increment for each field in the range. 6834 # For example, if writing a cell with formula `=A1` into range B2:C4, 6835 # B2 would be `=A1`, B3 would be `=A2`, B4 would be `=A3`, 6836 # C2 would be `=B1`, C3 would be `=B2`, C4 would be `=B3`. 6837 # 6838 # To keep the formula's ranges static, use the `$` indicator. 6839 # For example, use the formula `=$A$1` to prevent both the row and the 6840 # column from incrementing. 6841 "cell": { # Data about a specific cell. # The data to write. 6842 "pivotTable": { # A pivot table. # A pivot table anchored at this cell. The size of pivot table itself 6843 # is computed dynamically based on its data, grouping, filters, values, 6844 # etc. Only the top-left cell of the pivot table contains the pivot table 6845 # definition. The other cells will contain the calculated values of the 6846 # results of the pivot in their effective_value fields. 6847 "valueLayout": "A String", # Whether values should be listed horizontally (as columns) 6848 # or vertically (as rows). 6849 "rows": [ # Each row grouping in the pivot table. 6850 { # A single grouping (either row or column) in a pivot table. 6851 "showTotals": True or False, # True if the pivot table should include the totals for this grouping. 6852 "valueMetadata": [ # Metadata about values in the grouping. 6853 { # Metadata about a value in a pivot grouping. 6854 "collapsed": True or False, # True if the data corresponding to the value is collapsed. 6855 "value": { # The kinds of value that a cell in a spreadsheet can have. # The calculated value the metadata corresponds to. 6856 # (Note that formulaValue is not valid, 6857 # because the values will be calculated.) 6858 "stringValue": "A String", # Represents a string value. 6859 # Leading single quotes are not included. For example, if the user typed 6860 # `'123` into the UI, this would be represented as a `stringValue` of 6861 # `"123"`. 6862 "boolValue": True or False, # Represents a boolean value. 6863 "errorValue": { # An error in a cell. # Represents an error. 6864 # This field is read-only. 6865 "message": "A String", # A message with more information about the error 6866 # (in the spreadsheet's locale). 6867 "type": "A String", # The type of error. 6868 }, 6869 "formulaValue": "A String", # Represents a formula. 6870 "numberValue": 3.14, # Represents a double value. 6871 # Note: Dates, Times and DateTimes are represented as doubles in 6872 # "serial number" format. 6873 }, 6874 }, 6875 ], 6876 "valueBucket": { # Information about which values in a pivot group should be used for sorting. # The bucket of the opposite pivot group to sort by. 6877 # If not specified, sorting is alphabetical by this group's values. 6878 "buckets": [ # Determines the bucket from which values are chosen to sort. 6879 # 6880 # For example, in a pivot table with one row group & two column groups, 6881 # the row group can list up to two values. The first value corresponds 6882 # to a value within the first column group, and the second value 6883 # corresponds to a value in the second column group. If no values 6884 # are listed, this would indicate that the row should be sorted according 6885 # to the "Grand Total" over the column groups. If a single value is listed, 6886 # this would correspond to using the "Total" of that bucket. 6887 { # The kinds of value that a cell in a spreadsheet can have. 6888 "stringValue": "A String", # Represents a string value. 6889 # Leading single quotes are not included. For example, if the user typed 6890 # `'123` into the UI, this would be represented as a `stringValue` of 6891 # `"123"`. 6892 "boolValue": True or False, # Represents a boolean value. 6893 "errorValue": { # An error in a cell. # Represents an error. 6894 # This field is read-only. 6895 "message": "A String", # A message with more information about the error 6896 # (in the spreadsheet's locale). 6897 "type": "A String", # The type of error. 6898 }, 6899 "formulaValue": "A String", # Represents a formula. 6900 "numberValue": 3.14, # Represents a double value. 6901 # Note: Dates, Times and DateTimes are represented as doubles in 6902 # "serial number" format. 6903 }, 6904 ], 6905 "valuesIndex": 42, # The offset in the PivotTable.values list which the values in this 6906 # grouping should be sorted by. 6907 }, 6908 "sortOrder": "A String", # The order the values in this group should be sorted. 6909 "sourceColumnOffset": 42, # The column offset of the source range that this grouping is based on. 6910 # 6911 # For example, if the source was `C10:E15`, a `sourceColumnOffset` of `0` 6912 # means this group refers to column `C`, whereas the offset `1` would refer 6913 # to column `D`. 6914 }, 6915 ], 6916 "source": { # A range on a sheet. # The range the pivot table is reading data from. 6917 # All indexes are zero-based. 6918 # Indexes are half open, e.g the start index is inclusive 6919 # and the end index is exclusive -- [start_index, end_index). 6920 # Missing indexes indicate the range is unbounded on that side. 6921 # 6922 # For example, if `"Sheet1"` is sheet ID 0, then: 6923 # 6924 # `Sheet1!A1:A1 == sheet_id: 0, 6925 # start_row_index: 0, end_row_index: 1, 6926 # start_column_index: 0, end_column_index: 1` 6927 # 6928 # `Sheet1!A3:B4 == sheet_id: 0, 6929 # start_row_index: 2, end_row_index: 4, 6930 # start_column_index: 0, end_column_index: 2` 6931 # 6932 # `Sheet1!A:B == sheet_id: 0, 6933 # start_column_index: 0, end_column_index: 2` 6934 # 6935 # `Sheet1!A5:B == sheet_id: 0, 6936 # start_row_index: 4, 6937 # start_column_index: 0, end_column_index: 2` 6938 # 6939 # `Sheet1 == sheet_id:0` 6940 # 6941 # The start index must always be less than or equal to the end index. 6942 # If the start index equals the end index, then the range is empty. 6943 # Empty ranges are typically not meaningful and are usually rendered in the 6944 # UI as `#REF!`. 6945 "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded. 6946 "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded. 6947 "sheetId": 42, # The sheet this range is on. 6948 "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded. 6949 "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded. 6950 }, 6951 "values": [ # A list of values to include in the pivot table. 6952 { # The definition of how a value in a pivot table should be calculated. 6953 "formula": "A String", # A custom formula to calculate the value. The formula must start 6954 # with an `=` character. 6955 "sourceColumnOffset": 42, # The column offset of the source range that this value reads from. 6956 # 6957 # For example, if the source was `C10:E15`, a `sourceColumnOffset` of `0` 6958 # means this value refers to column `C`, whereas the offset `1` would 6959 # refer to column `D`. 6960 "summarizeFunction": "A String", # A function to summarize the value. 6961 # If formula is set, the only supported values are 6962 # SUM and 6963 # CUSTOM. 6964 # If sourceColumnOffset is set, then `CUSTOM` 6965 # is not supported. 6966 "name": "A String", # A name to use for the value. This is only used if formula was set. 6967 # Otherwise, the column name is used. 6968 }, 6969 ], 6970 "criteria": { # An optional mapping of filters per source column offset. 6971 # 6972 # The filters will be applied before aggregating data into the pivot table. 6973 # The map's key is the column offset of the source range that you want to 6974 # filter, and the value is the criteria for that column. 6975 # 6976 # For example, if the source was `C10:E15`, a key of `0` will have the filter 6977 # for column `C`, whereas the key `1` is for column `D`. 6978 "a_key": { # Criteria for showing/hiding rows in a pivot table. 6979 "visibleValues": [ # Values that should be included. Values not listed here are excluded. 6980 "A String", 6981 ], 6982 }, 6983 }, 6984 "columns": [ # Each column grouping in the pivot table. 6985 { # A single grouping (either row or column) in a pivot table. 6986 "showTotals": True or False, # True if the pivot table should include the totals for this grouping. 6987 "valueMetadata": [ # Metadata about values in the grouping. 6988 { # Metadata about a value in a pivot grouping. 6989 "collapsed": True or False, # True if the data corresponding to the value is collapsed. 6990 "value": { # The kinds of value that a cell in a spreadsheet can have. # The calculated value the metadata corresponds to. 6991 # (Note that formulaValue is not valid, 6992 # because the values will be calculated.) 6993 "stringValue": "A String", # Represents a string value. 6994 # Leading single quotes are not included. For example, if the user typed 6995 # `'123` into the UI, this would be represented as a `stringValue` of 6996 # `"123"`. 6997 "boolValue": True or False, # Represents a boolean value. 6998 "errorValue": { # An error in a cell. # Represents an error. 6999 # This field is read-only. 7000 "message": "A String", # A message with more information about the error 7001 # (in the spreadsheet's locale). 7002 "type": "A String", # The type of error. 7003 }, 7004 "formulaValue": "A String", # Represents a formula. 7005 "numberValue": 3.14, # Represents a double value. 7006 # Note: Dates, Times and DateTimes are represented as doubles in 7007 # "serial number" format. 7008 }, 7009 }, 7010 ], 7011 "valueBucket": { # Information about which values in a pivot group should be used for sorting. # The bucket of the opposite pivot group to sort by. 7012 # If not specified, sorting is alphabetical by this group's values. 7013 "buckets": [ # Determines the bucket from which values are chosen to sort. 7014 # 7015 # For example, in a pivot table with one row group & two column groups, 7016 # the row group can list up to two values. The first value corresponds 7017 # to a value within the first column group, and the second value 7018 # corresponds to a value in the second column group. If no values 7019 # are listed, this would indicate that the row should be sorted according 7020 # to the "Grand Total" over the column groups. If a single value is listed, 7021 # this would correspond to using the "Total" of that bucket. 7022 { # The kinds of value that a cell in a spreadsheet can have. 7023 "stringValue": "A String", # Represents a string value. 7024 # Leading single quotes are not included. For example, if the user typed 7025 # `'123` into the UI, this would be represented as a `stringValue` of 7026 # `"123"`. 7027 "boolValue": True or False, # Represents a boolean value. 7028 "errorValue": { # An error in a cell. # Represents an error. 7029 # This field is read-only. 7030 "message": "A String", # A message with more information about the error 7031 # (in the spreadsheet's locale). 7032 "type": "A String", # The type of error. 7033 }, 7034 "formulaValue": "A String", # Represents a formula. 7035 "numberValue": 3.14, # Represents a double value. 7036 # Note: Dates, Times and DateTimes are represented as doubles in 7037 # "serial number" format. 7038 }, 7039 ], 7040 "valuesIndex": 42, # The offset in the PivotTable.values list which the values in this 7041 # grouping should be sorted by. 7042 }, 7043 "sortOrder": "A String", # The order the values in this group should be sorted. 7044 "sourceColumnOffset": 42, # The column offset of the source range that this grouping is based on. 7045 # 7046 # For example, if the source was `C10:E15`, a `sourceColumnOffset` of `0` 7047 # means this group refers to column `C`, whereas the offset `1` would refer 7048 # to column `D`. 7049 }, 7050 ], 7051 }, 7052 "hyperlink": "A String", # A hyperlink this cell points to, if any. 7053 # This field is read-only. (To set it, use a `=HYPERLINK` formula 7054 # in the userEnteredValue.formulaValue 7055 # field.) 7056 "effectiveValue": { # The kinds of value that a cell in a spreadsheet can have. # The effective value of the cell. For cells with formulas, this will be 7057 # the calculated value. For cells with literals, this will be 7058 # the same as the user_entered_value. 7059 # This field is read-only. 7060 "stringValue": "A String", # Represents a string value. 7061 # Leading single quotes are not included. For example, if the user typed 7062 # `'123` into the UI, this would be represented as a `stringValue` of 7063 # `"123"`. 7064 "boolValue": True or False, # Represents a boolean value. 7065 "errorValue": { # An error in a cell. # Represents an error. 7066 # This field is read-only. 7067 "message": "A String", # A message with more information about the error 7068 # (in the spreadsheet's locale). 7069 "type": "A String", # The type of error. 7070 }, 7071 "formulaValue": "A String", # Represents a formula. 7072 "numberValue": 3.14, # Represents a double value. 7073 # Note: Dates, Times and DateTimes are represented as doubles in 7074 # "serial number" format. 7075 }, 7076 "formattedValue": "A String", # The formatted value of the cell. 7077 # This is the value as it's shown to the user. 7078 # This field is read-only. 7079 "userEnteredValue": { # The kinds of value that a cell in a spreadsheet can have. # The value the user entered in the cell. e.g, `1234`, `'Hello'`, or `=NOW()` 7080 # Note: Dates, Times and DateTimes are represented as doubles in 7081 # serial number format. 7082 "stringValue": "A String", # Represents a string value. 7083 # Leading single quotes are not included. For example, if the user typed 7084 # `'123` into the UI, this would be represented as a `stringValue` of 7085 # `"123"`. 7086 "boolValue": True or False, # Represents a boolean value. 7087 "errorValue": { # An error in a cell. # Represents an error. 7088 # This field is read-only. 7089 "message": "A String", # A message with more information about the error 7090 # (in the spreadsheet's locale). 7091 "type": "A String", # The type of error. 7092 }, 7093 "formulaValue": "A String", # Represents a formula. 7094 "numberValue": 3.14, # Represents a double value. 7095 # Note: Dates, Times and DateTimes are represented as doubles in 7096 # "serial number" format. 7097 }, 7098 "note": "A String", # Any note on the cell. 7099 "effectiveFormat": { # The format of a cell. # The effective format being used by the cell. 7100 # This includes the results of applying any conditional formatting and, 7101 # if the cell contains a formula, the computed number format. 7102 # If the effective format is the default format, effective format will 7103 # not be written. 7104 # This field is read-only. 7105 "numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user. 7106 "pattern": "A String", # Pattern string used for formatting. If not set, a default pattern based on 7107 # the user's locale will be used if necessary for the given type. 7108 # See the [Date and Number Formats guide](/sheets/api/guides/formats) for more 7109 # information about the supported patterns. 7110 "type": "A String", # The type of the number format. 7111 # When writing, this field must be set. 7112 }, 7113 "textDirection": "A String", # The direction of the text in the cell. 7114 "padding": { # The amount of padding around the cell, in pixels. # The padding of the cell. 7115 # When updating padding, every field must be specified. 7116 "top": 42, # The top padding of the cell. 7117 "right": 42, # The right padding of the cell. 7118 "bottom": 42, # The bottom padding of the cell. 7119 "left": 42, # The left padding of the cell. 7120 }, 7121 "verticalAlignment": "A String", # The vertical alignment of the value in the cell. 7122 "backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell. 7123 # for simplicity of conversion to/from color representations in various 7124 # languages over compactness; for example, the fields of this representation 7125 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 7126 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 7127 # method in iOS; and, with just a little work, it can be easily formatted into 7128 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 7129 # 7130 # Example (Java): 7131 # 7132 # import com.google.type.Color; 7133 # 7134 # // ... 7135 # public static java.awt.Color fromProto(Color protocolor) { 7136 # float alpha = protocolor.hasAlpha() 7137 # ? protocolor.getAlpha().getValue() 7138 # : 1.0; 7139 # 7140 # return new java.awt.Color( 7141 # protocolor.getRed(), 7142 # protocolor.getGreen(), 7143 # protocolor.getBlue(), 7144 # alpha); 7145 # } 7146 # 7147 # public static Color toProto(java.awt.Color color) { 7148 # float red = (float) color.getRed(); 7149 # float green = (float) color.getGreen(); 7150 # float blue = (float) color.getBlue(); 7151 # float denominator = 255.0; 7152 # Color.Builder resultBuilder = 7153 # Color 7154 # .newBuilder() 7155 # .setRed(red / denominator) 7156 # .setGreen(green / denominator) 7157 # .setBlue(blue / denominator); 7158 # int alpha = color.getAlpha(); 7159 # if (alpha != 255) { 7160 # result.setAlpha( 7161 # FloatValue 7162 # .newBuilder() 7163 # .setValue(((float) alpha) / denominator) 7164 # .build()); 7165 # } 7166 # return resultBuilder.build(); 7167 # } 7168 # // ... 7169 # 7170 # Example (iOS / Obj-C): 7171 # 7172 # // ... 7173 # static UIColor* fromProto(Color* protocolor) { 7174 # float red = [protocolor red]; 7175 # float green = [protocolor green]; 7176 # float blue = [protocolor blue]; 7177 # FloatValue* alpha_wrapper = [protocolor alpha]; 7178 # float alpha = 1.0; 7179 # if (alpha_wrapper != nil) { 7180 # alpha = [alpha_wrapper value]; 7181 # } 7182 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 7183 # } 7184 # 7185 # static Color* toProto(UIColor* color) { 7186 # CGFloat red, green, blue, alpha; 7187 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 7188 # return nil; 7189 # } 7190 # Color* result = [Color alloc] init]; 7191 # [result setRed:red]; 7192 # [result setGreen:green]; 7193 # [result setBlue:blue]; 7194 # if (alpha <= 0.9999) { 7195 # [result setAlpha:floatWrapperWithValue(alpha)]; 7196 # } 7197 # [result autorelease]; 7198 # return result; 7199 # } 7200 # // ... 7201 # 7202 # Example (JavaScript): 7203 # 7204 # // ... 7205 # 7206 # var protoToCssColor = function(rgb_color) { 7207 # var redFrac = rgb_color.red || 0.0; 7208 # var greenFrac = rgb_color.green || 0.0; 7209 # var blueFrac = rgb_color.blue || 0.0; 7210 # var red = Math.floor(redFrac * 255); 7211 # var green = Math.floor(greenFrac * 255); 7212 # var blue = Math.floor(blueFrac * 255); 7213 # 7214 # if (!('alpha' in rgb_color)) { 7215 # return rgbToCssColor_(red, green, blue); 7216 # } 7217 # 7218 # var alphaFrac = rgb_color.alpha.value || 0.0; 7219 # var rgbParams = [red, green, blue].join(','); 7220 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 7221 # }; 7222 # 7223 # var rgbToCssColor_ = function(red, green, blue) { 7224 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 7225 # var hexString = rgbNumber.toString(16); 7226 # var missingZeros = 6 - hexString.length; 7227 # var resultBuilder = ['#']; 7228 # for (var i = 0; i < missingZeros; i++) { 7229 # resultBuilder.push('0'); 7230 # } 7231 # resultBuilder.push(hexString); 7232 # return resultBuilder.join(''); 7233 # }; 7234 # 7235 # // ... 7236 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 7237 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 7238 # the final pixel color is defined by the equation: 7239 # 7240 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 7241 # 7242 # This means that a value of 1.0 corresponds to a solid color, whereas 7243 # a value of 0.0 corresponds to a completely transparent color. This 7244 # uses a wrapper message rather than a simple float scalar so that it is 7245 # possible to distinguish between a default value and the value being unset. 7246 # If omitted, this color object is to be rendered as a solid color 7247 # (as if the alpha value had been explicitly given with a value of 1.0). 7248 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 7249 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 7250 }, 7251 "horizontalAlignment": "A String", # The horizontal alignment of the value in the cell. 7252 "textFormat": { # The format of a run of text in a cell. # The format of the text in the cell (unless overridden by a format run). 7253 # Absent values indicate that the field isn't specified. 7254 "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text. 7255 # for simplicity of conversion to/from color representations in various 7256 # languages over compactness; for example, the fields of this representation 7257 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 7258 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 7259 # method in iOS; and, with just a little work, it can be easily formatted into 7260 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 7261 # 7262 # Example (Java): 7263 # 7264 # import com.google.type.Color; 7265 # 7266 # // ... 7267 # public static java.awt.Color fromProto(Color protocolor) { 7268 # float alpha = protocolor.hasAlpha() 7269 # ? protocolor.getAlpha().getValue() 7270 # : 1.0; 7271 # 7272 # return new java.awt.Color( 7273 # protocolor.getRed(), 7274 # protocolor.getGreen(), 7275 # protocolor.getBlue(), 7276 # alpha); 7277 # } 7278 # 7279 # public static Color toProto(java.awt.Color color) { 7280 # float red = (float) color.getRed(); 7281 # float green = (float) color.getGreen(); 7282 # float blue = (float) color.getBlue(); 7283 # float denominator = 255.0; 7284 # Color.Builder resultBuilder = 7285 # Color 7286 # .newBuilder() 7287 # .setRed(red / denominator) 7288 # .setGreen(green / denominator) 7289 # .setBlue(blue / denominator); 7290 # int alpha = color.getAlpha(); 7291 # if (alpha != 255) { 7292 # result.setAlpha( 7293 # FloatValue 7294 # .newBuilder() 7295 # .setValue(((float) alpha) / denominator) 7296 # .build()); 7297 # } 7298 # return resultBuilder.build(); 7299 # } 7300 # // ... 7301 # 7302 # Example (iOS / Obj-C): 7303 # 7304 # // ... 7305 # static UIColor* fromProto(Color* protocolor) { 7306 # float red = [protocolor red]; 7307 # float green = [protocolor green]; 7308 # float blue = [protocolor blue]; 7309 # FloatValue* alpha_wrapper = [protocolor alpha]; 7310 # float alpha = 1.0; 7311 # if (alpha_wrapper != nil) { 7312 # alpha = [alpha_wrapper value]; 7313 # } 7314 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 7315 # } 7316 # 7317 # static Color* toProto(UIColor* color) { 7318 # CGFloat red, green, blue, alpha; 7319 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 7320 # return nil; 7321 # } 7322 # Color* result = [Color alloc] init]; 7323 # [result setRed:red]; 7324 # [result setGreen:green]; 7325 # [result setBlue:blue]; 7326 # if (alpha <= 0.9999) { 7327 # [result setAlpha:floatWrapperWithValue(alpha)]; 7328 # } 7329 # [result autorelease]; 7330 # return result; 7331 # } 7332 # // ... 7333 # 7334 # Example (JavaScript): 7335 # 7336 # // ... 7337 # 7338 # var protoToCssColor = function(rgb_color) { 7339 # var redFrac = rgb_color.red || 0.0; 7340 # var greenFrac = rgb_color.green || 0.0; 7341 # var blueFrac = rgb_color.blue || 0.0; 7342 # var red = Math.floor(redFrac * 255); 7343 # var green = Math.floor(greenFrac * 255); 7344 # var blue = Math.floor(blueFrac * 255); 7345 # 7346 # if (!('alpha' in rgb_color)) { 7347 # return rgbToCssColor_(red, green, blue); 7348 # } 7349 # 7350 # var alphaFrac = rgb_color.alpha.value || 0.0; 7351 # var rgbParams = [red, green, blue].join(','); 7352 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 7353 # }; 7354 # 7355 # var rgbToCssColor_ = function(red, green, blue) { 7356 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 7357 # var hexString = rgbNumber.toString(16); 7358 # var missingZeros = 6 - hexString.length; 7359 # var resultBuilder = ['#']; 7360 # for (var i = 0; i < missingZeros; i++) { 7361 # resultBuilder.push('0'); 7362 # } 7363 # resultBuilder.push(hexString); 7364 # return resultBuilder.join(''); 7365 # }; 7366 # 7367 # // ... 7368 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 7369 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 7370 # the final pixel color is defined by the equation: 7371 # 7372 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 7373 # 7374 # This means that a value of 1.0 corresponds to a solid color, whereas 7375 # a value of 0.0 corresponds to a completely transparent color. This 7376 # uses a wrapper message rather than a simple float scalar so that it is 7377 # possible to distinguish between a default value and the value being unset. 7378 # If omitted, this color object is to be rendered as a solid color 7379 # (as if the alpha value had been explicitly given with a value of 1.0). 7380 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 7381 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 7382 }, 7383 "bold": True or False, # True if the text is bold. 7384 "strikethrough": True or False, # True if the text has a strikethrough. 7385 "fontFamily": "A String", # The font family. 7386 "fontSize": 42, # The size of the font. 7387 "italic": True or False, # True if the text is italicized. 7388 "underline": True or False, # True if the text is underlined. 7389 }, 7390 "textRotation": { # The rotation applied to text in a cell. # The rotation applied to text in a cell 7391 "angle": 42, # The angle between the standard orientation and the desired orientation. 7392 # Measured in degrees. Valid values are between -90 and 90. Positive 7393 # angles are angled upwards, negative are angled downwards. 7394 # 7395 # Note: For LTR text direction positive angles are in the counterclockwise 7396 # direction, whereas for RTL they are in the clockwise direction 7397 "vertical": True or False, # If true, text reads top to bottom, but the orientation of individual 7398 # characters is unchanged. 7399 # For example: 7400 # 7401 # | V | 7402 # | e | 7403 # | r | 7404 # | t | 7405 # | i | 7406 # | c | 7407 # | a | 7408 # | l | 7409 }, 7410 "hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell. 7411 "borders": { # The borders of the cell. # The borders of the cell. 7412 "top": { # A border along a cell. # The top border of the cell. 7413 "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border. 7414 # for simplicity of conversion to/from color representations in various 7415 # languages over compactness; for example, the fields of this representation 7416 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 7417 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 7418 # method in iOS; and, with just a little work, it can be easily formatted into 7419 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 7420 # 7421 # Example (Java): 7422 # 7423 # import com.google.type.Color; 7424 # 7425 # // ... 7426 # public static java.awt.Color fromProto(Color protocolor) { 7427 # float alpha = protocolor.hasAlpha() 7428 # ? protocolor.getAlpha().getValue() 7429 # : 1.0; 7430 # 7431 # return new java.awt.Color( 7432 # protocolor.getRed(), 7433 # protocolor.getGreen(), 7434 # protocolor.getBlue(), 7435 # alpha); 7436 # } 7437 # 7438 # public static Color toProto(java.awt.Color color) { 7439 # float red = (float) color.getRed(); 7440 # float green = (float) color.getGreen(); 7441 # float blue = (float) color.getBlue(); 7442 # float denominator = 255.0; 7443 # Color.Builder resultBuilder = 7444 # Color 7445 # .newBuilder() 7446 # .setRed(red / denominator) 7447 # .setGreen(green / denominator) 7448 # .setBlue(blue / denominator); 7449 # int alpha = color.getAlpha(); 7450 # if (alpha != 255) { 7451 # result.setAlpha( 7452 # FloatValue 7453 # .newBuilder() 7454 # .setValue(((float) alpha) / denominator) 7455 # .build()); 7456 # } 7457 # return resultBuilder.build(); 7458 # } 7459 # // ... 7460 # 7461 # Example (iOS / Obj-C): 7462 # 7463 # // ... 7464 # static UIColor* fromProto(Color* protocolor) { 7465 # float red = [protocolor red]; 7466 # float green = [protocolor green]; 7467 # float blue = [protocolor blue]; 7468 # FloatValue* alpha_wrapper = [protocolor alpha]; 7469 # float alpha = 1.0; 7470 # if (alpha_wrapper != nil) { 7471 # alpha = [alpha_wrapper value]; 7472 # } 7473 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 7474 # } 7475 # 7476 # static Color* toProto(UIColor* color) { 7477 # CGFloat red, green, blue, alpha; 7478 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 7479 # return nil; 7480 # } 7481 # Color* result = [Color alloc] init]; 7482 # [result setRed:red]; 7483 # [result setGreen:green]; 7484 # [result setBlue:blue]; 7485 # if (alpha <= 0.9999) { 7486 # [result setAlpha:floatWrapperWithValue(alpha)]; 7487 # } 7488 # [result autorelease]; 7489 # return result; 7490 # } 7491 # // ... 7492 # 7493 # Example (JavaScript): 7494 # 7495 # // ... 7496 # 7497 # var protoToCssColor = function(rgb_color) { 7498 # var redFrac = rgb_color.red || 0.0; 7499 # var greenFrac = rgb_color.green || 0.0; 7500 # var blueFrac = rgb_color.blue || 0.0; 7501 # var red = Math.floor(redFrac * 255); 7502 # var green = Math.floor(greenFrac * 255); 7503 # var blue = Math.floor(blueFrac * 255); 7504 # 7505 # if (!('alpha' in rgb_color)) { 7506 # return rgbToCssColor_(red, green, blue); 7507 # } 7508 # 7509 # var alphaFrac = rgb_color.alpha.value || 0.0; 7510 # var rgbParams = [red, green, blue].join(','); 7511 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 7512 # }; 7513 # 7514 # var rgbToCssColor_ = function(red, green, blue) { 7515 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 7516 # var hexString = rgbNumber.toString(16); 7517 # var missingZeros = 6 - hexString.length; 7518 # var resultBuilder = ['#']; 7519 # for (var i = 0; i < missingZeros; i++) { 7520 # resultBuilder.push('0'); 7521 # } 7522 # resultBuilder.push(hexString); 7523 # return resultBuilder.join(''); 7524 # }; 7525 # 7526 # // ... 7527 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 7528 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 7529 # the final pixel color is defined by the equation: 7530 # 7531 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 7532 # 7533 # This means that a value of 1.0 corresponds to a solid color, whereas 7534 # a value of 0.0 corresponds to a completely transparent color. This 7535 # uses a wrapper message rather than a simple float scalar so that it is 7536 # possible to distinguish between a default value and the value being unset. 7537 # If omitted, this color object is to be rendered as a solid color 7538 # (as if the alpha value had been explicitly given with a value of 1.0). 7539 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 7540 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 7541 }, 7542 "width": 42, # The width of the border, in pixels. 7543 # Deprecated; the width is determined by the "style" field. 7544 "style": "A String", # The style of the border. 7545 }, 7546 "right": { # A border along a cell. # The right border of the cell. 7547 "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border. 7548 # for simplicity of conversion to/from color representations in various 7549 # languages over compactness; for example, the fields of this representation 7550 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 7551 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 7552 # method in iOS; and, with just a little work, it can be easily formatted into 7553 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 7554 # 7555 # Example (Java): 7556 # 7557 # import com.google.type.Color; 7558 # 7559 # // ... 7560 # public static java.awt.Color fromProto(Color protocolor) { 7561 # float alpha = protocolor.hasAlpha() 7562 # ? protocolor.getAlpha().getValue() 7563 # : 1.0; 7564 # 7565 # return new java.awt.Color( 7566 # protocolor.getRed(), 7567 # protocolor.getGreen(), 7568 # protocolor.getBlue(), 7569 # alpha); 7570 # } 7571 # 7572 # public static Color toProto(java.awt.Color color) { 7573 # float red = (float) color.getRed(); 7574 # float green = (float) color.getGreen(); 7575 # float blue = (float) color.getBlue(); 7576 # float denominator = 255.0; 7577 # Color.Builder resultBuilder = 7578 # Color 7579 # .newBuilder() 7580 # .setRed(red / denominator) 7581 # .setGreen(green / denominator) 7582 # .setBlue(blue / denominator); 7583 # int alpha = color.getAlpha(); 7584 # if (alpha != 255) { 7585 # result.setAlpha( 7586 # FloatValue 7587 # .newBuilder() 7588 # .setValue(((float) alpha) / denominator) 7589 # .build()); 7590 # } 7591 # return resultBuilder.build(); 7592 # } 7593 # // ... 7594 # 7595 # Example (iOS / Obj-C): 7596 # 7597 # // ... 7598 # static UIColor* fromProto(Color* protocolor) { 7599 # float red = [protocolor red]; 7600 # float green = [protocolor green]; 7601 # float blue = [protocolor blue]; 7602 # FloatValue* alpha_wrapper = [protocolor alpha]; 7603 # float alpha = 1.0; 7604 # if (alpha_wrapper != nil) { 7605 # alpha = [alpha_wrapper value]; 7606 # } 7607 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 7608 # } 7609 # 7610 # static Color* toProto(UIColor* color) { 7611 # CGFloat red, green, blue, alpha; 7612 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 7613 # return nil; 7614 # } 7615 # Color* result = [Color alloc] init]; 7616 # [result setRed:red]; 7617 # [result setGreen:green]; 7618 # [result setBlue:blue]; 7619 # if (alpha <= 0.9999) { 7620 # [result setAlpha:floatWrapperWithValue(alpha)]; 7621 # } 7622 # [result autorelease]; 7623 # return result; 7624 # } 7625 # // ... 7626 # 7627 # Example (JavaScript): 7628 # 7629 # // ... 7630 # 7631 # var protoToCssColor = function(rgb_color) { 7632 # var redFrac = rgb_color.red || 0.0; 7633 # var greenFrac = rgb_color.green || 0.0; 7634 # var blueFrac = rgb_color.blue || 0.0; 7635 # var red = Math.floor(redFrac * 255); 7636 # var green = Math.floor(greenFrac * 255); 7637 # var blue = Math.floor(blueFrac * 255); 7638 # 7639 # if (!('alpha' in rgb_color)) { 7640 # return rgbToCssColor_(red, green, blue); 7641 # } 7642 # 7643 # var alphaFrac = rgb_color.alpha.value || 0.0; 7644 # var rgbParams = [red, green, blue].join(','); 7645 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 7646 # }; 7647 # 7648 # var rgbToCssColor_ = function(red, green, blue) { 7649 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 7650 # var hexString = rgbNumber.toString(16); 7651 # var missingZeros = 6 - hexString.length; 7652 # var resultBuilder = ['#']; 7653 # for (var i = 0; i < missingZeros; i++) { 7654 # resultBuilder.push('0'); 7655 # } 7656 # resultBuilder.push(hexString); 7657 # return resultBuilder.join(''); 7658 # }; 7659 # 7660 # // ... 7661 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 7662 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 7663 # the final pixel color is defined by the equation: 7664 # 7665 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 7666 # 7667 # This means that a value of 1.0 corresponds to a solid color, whereas 7668 # a value of 0.0 corresponds to a completely transparent color. This 7669 # uses a wrapper message rather than a simple float scalar so that it is 7670 # possible to distinguish between a default value and the value being unset. 7671 # If omitted, this color object is to be rendered as a solid color 7672 # (as if the alpha value had been explicitly given with a value of 1.0). 7673 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 7674 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 7675 }, 7676 "width": 42, # The width of the border, in pixels. 7677 # Deprecated; the width is determined by the "style" field. 7678 "style": "A String", # The style of the border. 7679 }, 7680 "bottom": { # A border along a cell. # The bottom border of the cell. 7681 "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border. 7682 # for simplicity of conversion to/from color representations in various 7683 # languages over compactness; for example, the fields of this representation 7684 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 7685 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 7686 # method in iOS; and, with just a little work, it can be easily formatted into 7687 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 7688 # 7689 # Example (Java): 7690 # 7691 # import com.google.type.Color; 7692 # 7693 # // ... 7694 # public static java.awt.Color fromProto(Color protocolor) { 7695 # float alpha = protocolor.hasAlpha() 7696 # ? protocolor.getAlpha().getValue() 7697 # : 1.0; 7698 # 7699 # return new java.awt.Color( 7700 # protocolor.getRed(), 7701 # protocolor.getGreen(), 7702 # protocolor.getBlue(), 7703 # alpha); 7704 # } 7705 # 7706 # public static Color toProto(java.awt.Color color) { 7707 # float red = (float) color.getRed(); 7708 # float green = (float) color.getGreen(); 7709 # float blue = (float) color.getBlue(); 7710 # float denominator = 255.0; 7711 # Color.Builder resultBuilder = 7712 # Color 7713 # .newBuilder() 7714 # .setRed(red / denominator) 7715 # .setGreen(green / denominator) 7716 # .setBlue(blue / denominator); 7717 # int alpha = color.getAlpha(); 7718 # if (alpha != 255) { 7719 # result.setAlpha( 7720 # FloatValue 7721 # .newBuilder() 7722 # .setValue(((float) alpha) / denominator) 7723 # .build()); 7724 # } 7725 # return resultBuilder.build(); 7726 # } 7727 # // ... 7728 # 7729 # Example (iOS / Obj-C): 7730 # 7731 # // ... 7732 # static UIColor* fromProto(Color* protocolor) { 7733 # float red = [protocolor red]; 7734 # float green = [protocolor green]; 7735 # float blue = [protocolor blue]; 7736 # FloatValue* alpha_wrapper = [protocolor alpha]; 7737 # float alpha = 1.0; 7738 # if (alpha_wrapper != nil) { 7739 # alpha = [alpha_wrapper value]; 7740 # } 7741 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 7742 # } 7743 # 7744 # static Color* toProto(UIColor* color) { 7745 # CGFloat red, green, blue, alpha; 7746 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 7747 # return nil; 7748 # } 7749 # Color* result = [Color alloc] init]; 7750 # [result setRed:red]; 7751 # [result setGreen:green]; 7752 # [result setBlue:blue]; 7753 # if (alpha <= 0.9999) { 7754 # [result setAlpha:floatWrapperWithValue(alpha)]; 7755 # } 7756 # [result autorelease]; 7757 # return result; 7758 # } 7759 # // ... 7760 # 7761 # Example (JavaScript): 7762 # 7763 # // ... 7764 # 7765 # var protoToCssColor = function(rgb_color) { 7766 # var redFrac = rgb_color.red || 0.0; 7767 # var greenFrac = rgb_color.green || 0.0; 7768 # var blueFrac = rgb_color.blue || 0.0; 7769 # var red = Math.floor(redFrac * 255); 7770 # var green = Math.floor(greenFrac * 255); 7771 # var blue = Math.floor(blueFrac * 255); 7772 # 7773 # if (!('alpha' in rgb_color)) { 7774 # return rgbToCssColor_(red, green, blue); 7775 # } 7776 # 7777 # var alphaFrac = rgb_color.alpha.value || 0.0; 7778 # var rgbParams = [red, green, blue].join(','); 7779 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 7780 # }; 7781 # 7782 # var rgbToCssColor_ = function(red, green, blue) { 7783 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 7784 # var hexString = rgbNumber.toString(16); 7785 # var missingZeros = 6 - hexString.length; 7786 # var resultBuilder = ['#']; 7787 # for (var i = 0; i < missingZeros; i++) { 7788 # resultBuilder.push('0'); 7789 # } 7790 # resultBuilder.push(hexString); 7791 # return resultBuilder.join(''); 7792 # }; 7793 # 7794 # // ... 7795 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 7796 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 7797 # the final pixel color is defined by the equation: 7798 # 7799 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 7800 # 7801 # This means that a value of 1.0 corresponds to a solid color, whereas 7802 # a value of 0.0 corresponds to a completely transparent color. This 7803 # uses a wrapper message rather than a simple float scalar so that it is 7804 # possible to distinguish between a default value and the value being unset. 7805 # If omitted, this color object is to be rendered as a solid color 7806 # (as if the alpha value had been explicitly given with a value of 1.0). 7807 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 7808 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 7809 }, 7810 "width": 42, # The width of the border, in pixels. 7811 # Deprecated; the width is determined by the "style" field. 7812 "style": "A String", # The style of the border. 7813 }, 7814 "left": { # A border along a cell. # The left border of the cell. 7815 "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border. 7816 # for simplicity of conversion to/from color representations in various 7817 # languages over compactness; for example, the fields of this representation 7818 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 7819 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 7820 # method in iOS; and, with just a little work, it can be easily formatted into 7821 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 7822 # 7823 # Example (Java): 7824 # 7825 # import com.google.type.Color; 7826 # 7827 # // ... 7828 # public static java.awt.Color fromProto(Color protocolor) { 7829 # float alpha = protocolor.hasAlpha() 7830 # ? protocolor.getAlpha().getValue() 7831 # : 1.0; 7832 # 7833 # return new java.awt.Color( 7834 # protocolor.getRed(), 7835 # protocolor.getGreen(), 7836 # protocolor.getBlue(), 7837 # alpha); 7838 # } 7839 # 7840 # public static Color toProto(java.awt.Color color) { 7841 # float red = (float) color.getRed(); 7842 # float green = (float) color.getGreen(); 7843 # float blue = (float) color.getBlue(); 7844 # float denominator = 255.0; 7845 # Color.Builder resultBuilder = 7846 # Color 7847 # .newBuilder() 7848 # .setRed(red / denominator) 7849 # .setGreen(green / denominator) 7850 # .setBlue(blue / denominator); 7851 # int alpha = color.getAlpha(); 7852 # if (alpha != 255) { 7853 # result.setAlpha( 7854 # FloatValue 7855 # .newBuilder() 7856 # .setValue(((float) alpha) / denominator) 7857 # .build()); 7858 # } 7859 # return resultBuilder.build(); 7860 # } 7861 # // ... 7862 # 7863 # Example (iOS / Obj-C): 7864 # 7865 # // ... 7866 # static UIColor* fromProto(Color* protocolor) { 7867 # float red = [protocolor red]; 7868 # float green = [protocolor green]; 7869 # float blue = [protocolor blue]; 7870 # FloatValue* alpha_wrapper = [protocolor alpha]; 7871 # float alpha = 1.0; 7872 # if (alpha_wrapper != nil) { 7873 # alpha = [alpha_wrapper value]; 7874 # } 7875 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 7876 # } 7877 # 7878 # static Color* toProto(UIColor* color) { 7879 # CGFloat red, green, blue, alpha; 7880 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 7881 # return nil; 7882 # } 7883 # Color* result = [Color alloc] init]; 7884 # [result setRed:red]; 7885 # [result setGreen:green]; 7886 # [result setBlue:blue]; 7887 # if (alpha <= 0.9999) { 7888 # [result setAlpha:floatWrapperWithValue(alpha)]; 7889 # } 7890 # [result autorelease]; 7891 # return result; 7892 # } 7893 # // ... 7894 # 7895 # Example (JavaScript): 7896 # 7897 # // ... 7898 # 7899 # var protoToCssColor = function(rgb_color) { 7900 # var redFrac = rgb_color.red || 0.0; 7901 # var greenFrac = rgb_color.green || 0.0; 7902 # var blueFrac = rgb_color.blue || 0.0; 7903 # var red = Math.floor(redFrac * 255); 7904 # var green = Math.floor(greenFrac * 255); 7905 # var blue = Math.floor(blueFrac * 255); 7906 # 7907 # if (!('alpha' in rgb_color)) { 7908 # return rgbToCssColor_(red, green, blue); 7909 # } 7910 # 7911 # var alphaFrac = rgb_color.alpha.value || 0.0; 7912 # var rgbParams = [red, green, blue].join(','); 7913 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 7914 # }; 7915 # 7916 # var rgbToCssColor_ = function(red, green, blue) { 7917 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 7918 # var hexString = rgbNumber.toString(16); 7919 # var missingZeros = 6 - hexString.length; 7920 # var resultBuilder = ['#']; 7921 # for (var i = 0; i < missingZeros; i++) { 7922 # resultBuilder.push('0'); 7923 # } 7924 # resultBuilder.push(hexString); 7925 # return resultBuilder.join(''); 7926 # }; 7927 # 7928 # // ... 7929 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 7930 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 7931 # the final pixel color is defined by the equation: 7932 # 7933 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 7934 # 7935 # This means that a value of 1.0 corresponds to a solid color, whereas 7936 # a value of 0.0 corresponds to a completely transparent color. This 7937 # uses a wrapper message rather than a simple float scalar so that it is 7938 # possible to distinguish between a default value and the value being unset. 7939 # If omitted, this color object is to be rendered as a solid color 7940 # (as if the alpha value had been explicitly given with a value of 1.0). 7941 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 7942 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 7943 }, 7944 "width": 42, # The width of the border, in pixels. 7945 # Deprecated; the width is determined by the "style" field. 7946 "style": "A String", # The style of the border. 7947 }, 7948 }, 7949 "wrapStrategy": "A String", # The wrap strategy for the value in the cell. 7950 }, 7951 "userEnteredFormat": { # The format of a cell. # The format the user entered for the cell. 7952 # 7953 # When writing, the new format will be merged with the existing format. 7954 "numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user. 7955 "pattern": "A String", # Pattern string used for formatting. If not set, a default pattern based on 7956 # the user's locale will be used if necessary for the given type. 7957 # See the [Date and Number Formats guide](/sheets/api/guides/formats) for more 7958 # information about the supported patterns. 7959 "type": "A String", # The type of the number format. 7960 # When writing, this field must be set. 7961 }, 7962 "textDirection": "A String", # The direction of the text in the cell. 7963 "padding": { # The amount of padding around the cell, in pixels. # The padding of the cell. 7964 # When updating padding, every field must be specified. 7965 "top": 42, # The top padding of the cell. 7966 "right": 42, # The right padding of the cell. 7967 "bottom": 42, # The bottom padding of the cell. 7968 "left": 42, # The left padding of the cell. 7969 }, 7970 "verticalAlignment": "A String", # The vertical alignment of the value in the cell. 7971 "backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell. 7972 # for simplicity of conversion to/from color representations in various 7973 # languages over compactness; for example, the fields of this representation 7974 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 7975 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 7976 # method in iOS; and, with just a little work, it can be easily formatted into 7977 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 7978 # 7979 # Example (Java): 7980 # 7981 # import com.google.type.Color; 7982 # 7983 # // ... 7984 # public static java.awt.Color fromProto(Color protocolor) { 7985 # float alpha = protocolor.hasAlpha() 7986 # ? protocolor.getAlpha().getValue() 7987 # : 1.0; 7988 # 7989 # return new java.awt.Color( 7990 # protocolor.getRed(), 7991 # protocolor.getGreen(), 7992 # protocolor.getBlue(), 7993 # alpha); 7994 # } 7995 # 7996 # public static Color toProto(java.awt.Color color) { 7997 # float red = (float) color.getRed(); 7998 # float green = (float) color.getGreen(); 7999 # float blue = (float) color.getBlue(); 8000 # float denominator = 255.0; 8001 # Color.Builder resultBuilder = 8002 # Color 8003 # .newBuilder() 8004 # .setRed(red / denominator) 8005 # .setGreen(green / denominator) 8006 # .setBlue(blue / denominator); 8007 # int alpha = color.getAlpha(); 8008 # if (alpha != 255) { 8009 # result.setAlpha( 8010 # FloatValue 8011 # .newBuilder() 8012 # .setValue(((float) alpha) / denominator) 8013 # .build()); 8014 # } 8015 # return resultBuilder.build(); 8016 # } 8017 # // ... 8018 # 8019 # Example (iOS / Obj-C): 8020 # 8021 # // ... 8022 # static UIColor* fromProto(Color* protocolor) { 8023 # float red = [protocolor red]; 8024 # float green = [protocolor green]; 8025 # float blue = [protocolor blue]; 8026 # FloatValue* alpha_wrapper = [protocolor alpha]; 8027 # float alpha = 1.0; 8028 # if (alpha_wrapper != nil) { 8029 # alpha = [alpha_wrapper value]; 8030 # } 8031 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 8032 # } 8033 # 8034 # static Color* toProto(UIColor* color) { 8035 # CGFloat red, green, blue, alpha; 8036 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 8037 # return nil; 8038 # } 8039 # Color* result = [Color alloc] init]; 8040 # [result setRed:red]; 8041 # [result setGreen:green]; 8042 # [result setBlue:blue]; 8043 # if (alpha <= 0.9999) { 8044 # [result setAlpha:floatWrapperWithValue(alpha)]; 8045 # } 8046 # [result autorelease]; 8047 # return result; 8048 # } 8049 # // ... 8050 # 8051 # Example (JavaScript): 8052 # 8053 # // ... 8054 # 8055 # var protoToCssColor = function(rgb_color) { 8056 # var redFrac = rgb_color.red || 0.0; 8057 # var greenFrac = rgb_color.green || 0.0; 8058 # var blueFrac = rgb_color.blue || 0.0; 8059 # var red = Math.floor(redFrac * 255); 8060 # var green = Math.floor(greenFrac * 255); 8061 # var blue = Math.floor(blueFrac * 255); 8062 # 8063 # if (!('alpha' in rgb_color)) { 8064 # return rgbToCssColor_(red, green, blue); 8065 # } 8066 # 8067 # var alphaFrac = rgb_color.alpha.value || 0.0; 8068 # var rgbParams = [red, green, blue].join(','); 8069 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 8070 # }; 8071 # 8072 # var rgbToCssColor_ = function(red, green, blue) { 8073 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 8074 # var hexString = rgbNumber.toString(16); 8075 # var missingZeros = 6 - hexString.length; 8076 # var resultBuilder = ['#']; 8077 # for (var i = 0; i < missingZeros; i++) { 8078 # resultBuilder.push('0'); 8079 # } 8080 # resultBuilder.push(hexString); 8081 # return resultBuilder.join(''); 8082 # }; 8083 # 8084 # // ... 8085 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 8086 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 8087 # the final pixel color is defined by the equation: 8088 # 8089 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 8090 # 8091 # This means that a value of 1.0 corresponds to a solid color, whereas 8092 # a value of 0.0 corresponds to a completely transparent color. This 8093 # uses a wrapper message rather than a simple float scalar so that it is 8094 # possible to distinguish between a default value and the value being unset. 8095 # If omitted, this color object is to be rendered as a solid color 8096 # (as if the alpha value had been explicitly given with a value of 1.0). 8097 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 8098 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 8099 }, 8100 "horizontalAlignment": "A String", # The horizontal alignment of the value in the cell. 8101 "textFormat": { # The format of a run of text in a cell. # The format of the text in the cell (unless overridden by a format run). 8102 # Absent values indicate that the field isn't specified. 8103 "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text. 8104 # for simplicity of conversion to/from color representations in various 8105 # languages over compactness; for example, the fields of this representation 8106 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 8107 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 8108 # method in iOS; and, with just a little work, it can be easily formatted into 8109 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 8110 # 8111 # Example (Java): 8112 # 8113 # import com.google.type.Color; 8114 # 8115 # // ... 8116 # public static java.awt.Color fromProto(Color protocolor) { 8117 # float alpha = protocolor.hasAlpha() 8118 # ? protocolor.getAlpha().getValue() 8119 # : 1.0; 8120 # 8121 # return new java.awt.Color( 8122 # protocolor.getRed(), 8123 # protocolor.getGreen(), 8124 # protocolor.getBlue(), 8125 # alpha); 8126 # } 8127 # 8128 # public static Color toProto(java.awt.Color color) { 8129 # float red = (float) color.getRed(); 8130 # float green = (float) color.getGreen(); 8131 # float blue = (float) color.getBlue(); 8132 # float denominator = 255.0; 8133 # Color.Builder resultBuilder = 8134 # Color 8135 # .newBuilder() 8136 # .setRed(red / denominator) 8137 # .setGreen(green / denominator) 8138 # .setBlue(blue / denominator); 8139 # int alpha = color.getAlpha(); 8140 # if (alpha != 255) { 8141 # result.setAlpha( 8142 # FloatValue 8143 # .newBuilder() 8144 # .setValue(((float) alpha) / denominator) 8145 # .build()); 8146 # } 8147 # return resultBuilder.build(); 8148 # } 8149 # // ... 8150 # 8151 # Example (iOS / Obj-C): 8152 # 8153 # // ... 8154 # static UIColor* fromProto(Color* protocolor) { 8155 # float red = [protocolor red]; 8156 # float green = [protocolor green]; 8157 # float blue = [protocolor blue]; 8158 # FloatValue* alpha_wrapper = [protocolor alpha]; 8159 # float alpha = 1.0; 8160 # if (alpha_wrapper != nil) { 8161 # alpha = [alpha_wrapper value]; 8162 # } 8163 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 8164 # } 8165 # 8166 # static Color* toProto(UIColor* color) { 8167 # CGFloat red, green, blue, alpha; 8168 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 8169 # return nil; 8170 # } 8171 # Color* result = [Color alloc] init]; 8172 # [result setRed:red]; 8173 # [result setGreen:green]; 8174 # [result setBlue:blue]; 8175 # if (alpha <= 0.9999) { 8176 # [result setAlpha:floatWrapperWithValue(alpha)]; 8177 # } 8178 # [result autorelease]; 8179 # return result; 8180 # } 8181 # // ... 8182 # 8183 # Example (JavaScript): 8184 # 8185 # // ... 8186 # 8187 # var protoToCssColor = function(rgb_color) { 8188 # var redFrac = rgb_color.red || 0.0; 8189 # var greenFrac = rgb_color.green || 0.0; 8190 # var blueFrac = rgb_color.blue || 0.0; 8191 # var red = Math.floor(redFrac * 255); 8192 # var green = Math.floor(greenFrac * 255); 8193 # var blue = Math.floor(blueFrac * 255); 8194 # 8195 # if (!('alpha' in rgb_color)) { 8196 # return rgbToCssColor_(red, green, blue); 8197 # } 8198 # 8199 # var alphaFrac = rgb_color.alpha.value || 0.0; 8200 # var rgbParams = [red, green, blue].join(','); 8201 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 8202 # }; 8203 # 8204 # var rgbToCssColor_ = function(red, green, blue) { 8205 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 8206 # var hexString = rgbNumber.toString(16); 8207 # var missingZeros = 6 - hexString.length; 8208 # var resultBuilder = ['#']; 8209 # for (var i = 0; i < missingZeros; i++) { 8210 # resultBuilder.push('0'); 8211 # } 8212 # resultBuilder.push(hexString); 8213 # return resultBuilder.join(''); 8214 # }; 8215 # 8216 # // ... 8217 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 8218 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 8219 # the final pixel color is defined by the equation: 8220 # 8221 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 8222 # 8223 # This means that a value of 1.0 corresponds to a solid color, whereas 8224 # a value of 0.0 corresponds to a completely transparent color. This 8225 # uses a wrapper message rather than a simple float scalar so that it is 8226 # possible to distinguish between a default value and the value being unset. 8227 # If omitted, this color object is to be rendered as a solid color 8228 # (as if the alpha value had been explicitly given with a value of 1.0). 8229 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 8230 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 8231 }, 8232 "bold": True or False, # True if the text is bold. 8233 "strikethrough": True or False, # True if the text has a strikethrough. 8234 "fontFamily": "A String", # The font family. 8235 "fontSize": 42, # The size of the font. 8236 "italic": True or False, # True if the text is italicized. 8237 "underline": True or False, # True if the text is underlined. 8238 }, 8239 "textRotation": { # The rotation applied to text in a cell. # The rotation applied to text in a cell 8240 "angle": 42, # The angle between the standard orientation and the desired orientation. 8241 # Measured in degrees. Valid values are between -90 and 90. Positive 8242 # angles are angled upwards, negative are angled downwards. 8243 # 8244 # Note: For LTR text direction positive angles are in the counterclockwise 8245 # direction, whereas for RTL they are in the clockwise direction 8246 "vertical": True or False, # If true, text reads top to bottom, but the orientation of individual 8247 # characters is unchanged. 8248 # For example: 8249 # 8250 # | V | 8251 # | e | 8252 # | r | 8253 # | t | 8254 # | i | 8255 # | c | 8256 # | a | 8257 # | l | 8258 }, 8259 "hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell. 8260 "borders": { # The borders of the cell. # The borders of the cell. 8261 "top": { # A border along a cell. # The top border of the cell. 8262 "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border. 8263 # for simplicity of conversion to/from color representations in various 8264 # languages over compactness; for example, the fields of this representation 8265 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 8266 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 8267 # method in iOS; and, with just a little work, it can be easily formatted into 8268 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 8269 # 8270 # Example (Java): 8271 # 8272 # import com.google.type.Color; 8273 # 8274 # // ... 8275 # public static java.awt.Color fromProto(Color protocolor) { 8276 # float alpha = protocolor.hasAlpha() 8277 # ? protocolor.getAlpha().getValue() 8278 # : 1.0; 8279 # 8280 # return new java.awt.Color( 8281 # protocolor.getRed(), 8282 # protocolor.getGreen(), 8283 # protocolor.getBlue(), 8284 # alpha); 8285 # } 8286 # 8287 # public static Color toProto(java.awt.Color color) { 8288 # float red = (float) color.getRed(); 8289 # float green = (float) color.getGreen(); 8290 # float blue = (float) color.getBlue(); 8291 # float denominator = 255.0; 8292 # Color.Builder resultBuilder = 8293 # Color 8294 # .newBuilder() 8295 # .setRed(red / denominator) 8296 # .setGreen(green / denominator) 8297 # .setBlue(blue / denominator); 8298 # int alpha = color.getAlpha(); 8299 # if (alpha != 255) { 8300 # result.setAlpha( 8301 # FloatValue 8302 # .newBuilder() 8303 # .setValue(((float) alpha) / denominator) 8304 # .build()); 8305 # } 8306 # return resultBuilder.build(); 8307 # } 8308 # // ... 8309 # 8310 # Example (iOS / Obj-C): 8311 # 8312 # // ... 8313 # static UIColor* fromProto(Color* protocolor) { 8314 # float red = [protocolor red]; 8315 # float green = [protocolor green]; 8316 # float blue = [protocolor blue]; 8317 # FloatValue* alpha_wrapper = [protocolor alpha]; 8318 # float alpha = 1.0; 8319 # if (alpha_wrapper != nil) { 8320 # alpha = [alpha_wrapper value]; 8321 # } 8322 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 8323 # } 8324 # 8325 # static Color* toProto(UIColor* color) { 8326 # CGFloat red, green, blue, alpha; 8327 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 8328 # return nil; 8329 # } 8330 # Color* result = [Color alloc] init]; 8331 # [result setRed:red]; 8332 # [result setGreen:green]; 8333 # [result setBlue:blue]; 8334 # if (alpha <= 0.9999) { 8335 # [result setAlpha:floatWrapperWithValue(alpha)]; 8336 # } 8337 # [result autorelease]; 8338 # return result; 8339 # } 8340 # // ... 8341 # 8342 # Example (JavaScript): 8343 # 8344 # // ... 8345 # 8346 # var protoToCssColor = function(rgb_color) { 8347 # var redFrac = rgb_color.red || 0.0; 8348 # var greenFrac = rgb_color.green || 0.0; 8349 # var blueFrac = rgb_color.blue || 0.0; 8350 # var red = Math.floor(redFrac * 255); 8351 # var green = Math.floor(greenFrac * 255); 8352 # var blue = Math.floor(blueFrac * 255); 8353 # 8354 # if (!('alpha' in rgb_color)) { 8355 # return rgbToCssColor_(red, green, blue); 8356 # } 8357 # 8358 # var alphaFrac = rgb_color.alpha.value || 0.0; 8359 # var rgbParams = [red, green, blue].join(','); 8360 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 8361 # }; 8362 # 8363 # var rgbToCssColor_ = function(red, green, blue) { 8364 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 8365 # var hexString = rgbNumber.toString(16); 8366 # var missingZeros = 6 - hexString.length; 8367 # var resultBuilder = ['#']; 8368 # for (var i = 0; i < missingZeros; i++) { 8369 # resultBuilder.push('0'); 8370 # } 8371 # resultBuilder.push(hexString); 8372 # return resultBuilder.join(''); 8373 # }; 8374 # 8375 # // ... 8376 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 8377 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 8378 # the final pixel color is defined by the equation: 8379 # 8380 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 8381 # 8382 # This means that a value of 1.0 corresponds to a solid color, whereas 8383 # a value of 0.0 corresponds to a completely transparent color. This 8384 # uses a wrapper message rather than a simple float scalar so that it is 8385 # possible to distinguish between a default value and the value being unset. 8386 # If omitted, this color object is to be rendered as a solid color 8387 # (as if the alpha value had been explicitly given with a value of 1.0). 8388 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 8389 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 8390 }, 8391 "width": 42, # The width of the border, in pixels. 8392 # Deprecated; the width is determined by the "style" field. 8393 "style": "A String", # The style of the border. 8394 }, 8395 "right": { # A border along a cell. # The right border of the cell. 8396 "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border. 8397 # for simplicity of conversion to/from color representations in various 8398 # languages over compactness; for example, the fields of this representation 8399 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 8400 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 8401 # method in iOS; and, with just a little work, it can be easily formatted into 8402 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 8403 # 8404 # Example (Java): 8405 # 8406 # import com.google.type.Color; 8407 # 8408 # // ... 8409 # public static java.awt.Color fromProto(Color protocolor) { 8410 # float alpha = protocolor.hasAlpha() 8411 # ? protocolor.getAlpha().getValue() 8412 # : 1.0; 8413 # 8414 # return new java.awt.Color( 8415 # protocolor.getRed(), 8416 # protocolor.getGreen(), 8417 # protocolor.getBlue(), 8418 # alpha); 8419 # } 8420 # 8421 # public static Color toProto(java.awt.Color color) { 8422 # float red = (float) color.getRed(); 8423 # float green = (float) color.getGreen(); 8424 # float blue = (float) color.getBlue(); 8425 # float denominator = 255.0; 8426 # Color.Builder resultBuilder = 8427 # Color 8428 # .newBuilder() 8429 # .setRed(red / denominator) 8430 # .setGreen(green / denominator) 8431 # .setBlue(blue / denominator); 8432 # int alpha = color.getAlpha(); 8433 # if (alpha != 255) { 8434 # result.setAlpha( 8435 # FloatValue 8436 # .newBuilder() 8437 # .setValue(((float) alpha) / denominator) 8438 # .build()); 8439 # } 8440 # return resultBuilder.build(); 8441 # } 8442 # // ... 8443 # 8444 # Example (iOS / Obj-C): 8445 # 8446 # // ... 8447 # static UIColor* fromProto(Color* protocolor) { 8448 # float red = [protocolor red]; 8449 # float green = [protocolor green]; 8450 # float blue = [protocolor blue]; 8451 # FloatValue* alpha_wrapper = [protocolor alpha]; 8452 # float alpha = 1.0; 8453 # if (alpha_wrapper != nil) { 8454 # alpha = [alpha_wrapper value]; 8455 # } 8456 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 8457 # } 8458 # 8459 # static Color* toProto(UIColor* color) { 8460 # CGFloat red, green, blue, alpha; 8461 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 8462 # return nil; 8463 # } 8464 # Color* result = [Color alloc] init]; 8465 # [result setRed:red]; 8466 # [result setGreen:green]; 8467 # [result setBlue:blue]; 8468 # if (alpha <= 0.9999) { 8469 # [result setAlpha:floatWrapperWithValue(alpha)]; 8470 # } 8471 # [result autorelease]; 8472 # return result; 8473 # } 8474 # // ... 8475 # 8476 # Example (JavaScript): 8477 # 8478 # // ... 8479 # 8480 # var protoToCssColor = function(rgb_color) { 8481 # var redFrac = rgb_color.red || 0.0; 8482 # var greenFrac = rgb_color.green || 0.0; 8483 # var blueFrac = rgb_color.blue || 0.0; 8484 # var red = Math.floor(redFrac * 255); 8485 # var green = Math.floor(greenFrac * 255); 8486 # var blue = Math.floor(blueFrac * 255); 8487 # 8488 # if (!('alpha' in rgb_color)) { 8489 # return rgbToCssColor_(red, green, blue); 8490 # } 8491 # 8492 # var alphaFrac = rgb_color.alpha.value || 0.0; 8493 # var rgbParams = [red, green, blue].join(','); 8494 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 8495 # }; 8496 # 8497 # var rgbToCssColor_ = function(red, green, blue) { 8498 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 8499 # var hexString = rgbNumber.toString(16); 8500 # var missingZeros = 6 - hexString.length; 8501 # var resultBuilder = ['#']; 8502 # for (var i = 0; i < missingZeros; i++) { 8503 # resultBuilder.push('0'); 8504 # } 8505 # resultBuilder.push(hexString); 8506 # return resultBuilder.join(''); 8507 # }; 8508 # 8509 # // ... 8510 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 8511 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 8512 # the final pixel color is defined by the equation: 8513 # 8514 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 8515 # 8516 # This means that a value of 1.0 corresponds to a solid color, whereas 8517 # a value of 0.0 corresponds to a completely transparent color. This 8518 # uses a wrapper message rather than a simple float scalar so that it is 8519 # possible to distinguish between a default value and the value being unset. 8520 # If omitted, this color object is to be rendered as a solid color 8521 # (as if the alpha value had been explicitly given with a value of 1.0). 8522 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 8523 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 8524 }, 8525 "width": 42, # The width of the border, in pixels. 8526 # Deprecated; the width is determined by the "style" field. 8527 "style": "A String", # The style of the border. 8528 }, 8529 "bottom": { # A border along a cell. # The bottom border of the cell. 8530 "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border. 8531 # for simplicity of conversion to/from color representations in various 8532 # languages over compactness; for example, the fields of this representation 8533 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 8534 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 8535 # method in iOS; and, with just a little work, it can be easily formatted into 8536 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 8537 # 8538 # Example (Java): 8539 # 8540 # import com.google.type.Color; 8541 # 8542 # // ... 8543 # public static java.awt.Color fromProto(Color protocolor) { 8544 # float alpha = protocolor.hasAlpha() 8545 # ? protocolor.getAlpha().getValue() 8546 # : 1.0; 8547 # 8548 # return new java.awt.Color( 8549 # protocolor.getRed(), 8550 # protocolor.getGreen(), 8551 # protocolor.getBlue(), 8552 # alpha); 8553 # } 8554 # 8555 # public static Color toProto(java.awt.Color color) { 8556 # float red = (float) color.getRed(); 8557 # float green = (float) color.getGreen(); 8558 # float blue = (float) color.getBlue(); 8559 # float denominator = 255.0; 8560 # Color.Builder resultBuilder = 8561 # Color 8562 # .newBuilder() 8563 # .setRed(red / denominator) 8564 # .setGreen(green / denominator) 8565 # .setBlue(blue / denominator); 8566 # int alpha = color.getAlpha(); 8567 # if (alpha != 255) { 8568 # result.setAlpha( 8569 # FloatValue 8570 # .newBuilder() 8571 # .setValue(((float) alpha) / denominator) 8572 # .build()); 8573 # } 8574 # return resultBuilder.build(); 8575 # } 8576 # // ... 8577 # 8578 # Example (iOS / Obj-C): 8579 # 8580 # // ... 8581 # static UIColor* fromProto(Color* protocolor) { 8582 # float red = [protocolor red]; 8583 # float green = [protocolor green]; 8584 # float blue = [protocolor blue]; 8585 # FloatValue* alpha_wrapper = [protocolor alpha]; 8586 # float alpha = 1.0; 8587 # if (alpha_wrapper != nil) { 8588 # alpha = [alpha_wrapper value]; 8589 # } 8590 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 8591 # } 8592 # 8593 # static Color* toProto(UIColor* color) { 8594 # CGFloat red, green, blue, alpha; 8595 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 8596 # return nil; 8597 # } 8598 # Color* result = [Color alloc] init]; 8599 # [result setRed:red]; 8600 # [result setGreen:green]; 8601 # [result setBlue:blue]; 8602 # if (alpha <= 0.9999) { 8603 # [result setAlpha:floatWrapperWithValue(alpha)]; 8604 # } 8605 # [result autorelease]; 8606 # return result; 8607 # } 8608 # // ... 8609 # 8610 # Example (JavaScript): 8611 # 8612 # // ... 8613 # 8614 # var protoToCssColor = function(rgb_color) { 8615 # var redFrac = rgb_color.red || 0.0; 8616 # var greenFrac = rgb_color.green || 0.0; 8617 # var blueFrac = rgb_color.blue || 0.0; 8618 # var red = Math.floor(redFrac * 255); 8619 # var green = Math.floor(greenFrac * 255); 8620 # var blue = Math.floor(blueFrac * 255); 8621 # 8622 # if (!('alpha' in rgb_color)) { 8623 # return rgbToCssColor_(red, green, blue); 8624 # } 8625 # 8626 # var alphaFrac = rgb_color.alpha.value || 0.0; 8627 # var rgbParams = [red, green, blue].join(','); 8628 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 8629 # }; 8630 # 8631 # var rgbToCssColor_ = function(red, green, blue) { 8632 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 8633 # var hexString = rgbNumber.toString(16); 8634 # var missingZeros = 6 - hexString.length; 8635 # var resultBuilder = ['#']; 8636 # for (var i = 0; i < missingZeros; i++) { 8637 # resultBuilder.push('0'); 8638 # } 8639 # resultBuilder.push(hexString); 8640 # return resultBuilder.join(''); 8641 # }; 8642 # 8643 # // ... 8644 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 8645 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 8646 # the final pixel color is defined by the equation: 8647 # 8648 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 8649 # 8650 # This means that a value of 1.0 corresponds to a solid color, whereas 8651 # a value of 0.0 corresponds to a completely transparent color. This 8652 # uses a wrapper message rather than a simple float scalar so that it is 8653 # possible to distinguish between a default value and the value being unset. 8654 # If omitted, this color object is to be rendered as a solid color 8655 # (as if the alpha value had been explicitly given with a value of 1.0). 8656 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 8657 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 8658 }, 8659 "width": 42, # The width of the border, in pixels. 8660 # Deprecated; the width is determined by the "style" field. 8661 "style": "A String", # The style of the border. 8662 }, 8663 "left": { # A border along a cell. # The left border of the cell. 8664 "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border. 8665 # for simplicity of conversion to/from color representations in various 8666 # languages over compactness; for example, the fields of this representation 8667 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 8668 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 8669 # method in iOS; and, with just a little work, it can be easily formatted into 8670 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 8671 # 8672 # Example (Java): 8673 # 8674 # import com.google.type.Color; 8675 # 8676 # // ... 8677 # public static java.awt.Color fromProto(Color protocolor) { 8678 # float alpha = protocolor.hasAlpha() 8679 # ? protocolor.getAlpha().getValue() 8680 # : 1.0; 8681 # 8682 # return new java.awt.Color( 8683 # protocolor.getRed(), 8684 # protocolor.getGreen(), 8685 # protocolor.getBlue(), 8686 # alpha); 8687 # } 8688 # 8689 # public static Color toProto(java.awt.Color color) { 8690 # float red = (float) color.getRed(); 8691 # float green = (float) color.getGreen(); 8692 # float blue = (float) color.getBlue(); 8693 # float denominator = 255.0; 8694 # Color.Builder resultBuilder = 8695 # Color 8696 # .newBuilder() 8697 # .setRed(red / denominator) 8698 # .setGreen(green / denominator) 8699 # .setBlue(blue / denominator); 8700 # int alpha = color.getAlpha(); 8701 # if (alpha != 255) { 8702 # result.setAlpha( 8703 # FloatValue 8704 # .newBuilder() 8705 # .setValue(((float) alpha) / denominator) 8706 # .build()); 8707 # } 8708 # return resultBuilder.build(); 8709 # } 8710 # // ... 8711 # 8712 # Example (iOS / Obj-C): 8713 # 8714 # // ... 8715 # static UIColor* fromProto(Color* protocolor) { 8716 # float red = [protocolor red]; 8717 # float green = [protocolor green]; 8718 # float blue = [protocolor blue]; 8719 # FloatValue* alpha_wrapper = [protocolor alpha]; 8720 # float alpha = 1.0; 8721 # if (alpha_wrapper != nil) { 8722 # alpha = [alpha_wrapper value]; 8723 # } 8724 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 8725 # } 8726 # 8727 # static Color* toProto(UIColor* color) { 8728 # CGFloat red, green, blue, alpha; 8729 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 8730 # return nil; 8731 # } 8732 # Color* result = [Color alloc] init]; 8733 # [result setRed:red]; 8734 # [result setGreen:green]; 8735 # [result setBlue:blue]; 8736 # if (alpha <= 0.9999) { 8737 # [result setAlpha:floatWrapperWithValue(alpha)]; 8738 # } 8739 # [result autorelease]; 8740 # return result; 8741 # } 8742 # // ... 8743 # 8744 # Example (JavaScript): 8745 # 8746 # // ... 8747 # 8748 # var protoToCssColor = function(rgb_color) { 8749 # var redFrac = rgb_color.red || 0.0; 8750 # var greenFrac = rgb_color.green || 0.0; 8751 # var blueFrac = rgb_color.blue || 0.0; 8752 # var red = Math.floor(redFrac * 255); 8753 # var green = Math.floor(greenFrac * 255); 8754 # var blue = Math.floor(blueFrac * 255); 8755 # 8756 # if (!('alpha' in rgb_color)) { 8757 # return rgbToCssColor_(red, green, blue); 8758 # } 8759 # 8760 # var alphaFrac = rgb_color.alpha.value || 0.0; 8761 # var rgbParams = [red, green, blue].join(','); 8762 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 8763 # }; 8764 # 8765 # var rgbToCssColor_ = function(red, green, blue) { 8766 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 8767 # var hexString = rgbNumber.toString(16); 8768 # var missingZeros = 6 - hexString.length; 8769 # var resultBuilder = ['#']; 8770 # for (var i = 0; i < missingZeros; i++) { 8771 # resultBuilder.push('0'); 8772 # } 8773 # resultBuilder.push(hexString); 8774 # return resultBuilder.join(''); 8775 # }; 8776 # 8777 # // ... 8778 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 8779 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 8780 # the final pixel color is defined by the equation: 8781 # 8782 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 8783 # 8784 # This means that a value of 1.0 corresponds to a solid color, whereas 8785 # a value of 0.0 corresponds to a completely transparent color. This 8786 # uses a wrapper message rather than a simple float scalar so that it is 8787 # possible to distinguish between a default value and the value being unset. 8788 # If omitted, this color object is to be rendered as a solid color 8789 # (as if the alpha value had been explicitly given with a value of 1.0). 8790 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 8791 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 8792 }, 8793 "width": 42, # The width of the border, in pixels. 8794 # Deprecated; the width is determined by the "style" field. 8795 "style": "A String", # The style of the border. 8796 }, 8797 }, 8798 "wrapStrategy": "A String", # The wrap strategy for the value in the cell. 8799 }, 8800 "dataValidation": { # A data validation rule. # A data validation rule on the cell, if any. 8801 # 8802 # When writing, the new data validation rule will overwrite any prior rule. 8803 "showCustomUi": True or False, # True if the UI should be customized based on the kind of condition. 8804 # If true, "List" conditions will show a dropdown. 8805 "strict": True or False, # True if invalid data should be rejected. 8806 "inputMessage": "A String", # A message to show the user when adding data to the cell. 8807 "condition": { # A condition that can evaluate to true or false. # The condition that data in the cell must match. 8808 # BooleanConditions are used by conditional formatting, 8809 # data validation, and the criteria in filters. 8810 "values": [ # The values of the condition. The number of supported values depends 8811 # on the condition type. Some support zero values, 8812 # others one or two values, 8813 # and ConditionType.ONE_OF_LIST supports an arbitrary number of values. 8814 { # The value of the condition. 8815 "relativeDate": "A String", # A relative date (based on the current date). 8816 # Valid only if the type is 8817 # DATE_BEFORE, 8818 # DATE_AFTER, 8819 # DATE_ON_OR_BEFORE or 8820 # DATE_ON_OR_AFTER. 8821 # 8822 # Relative dates are not supported in data validation. 8823 # They are supported only in conditional formatting and 8824 # conditional filters. 8825 "userEnteredValue": "A String", # A value the condition is based on. 8826 # The value will be parsed as if the user typed into a cell. 8827 # Formulas are supported (and must begin with an `=`). 8828 }, 8829 ], 8830 "type": "A String", # The type of condition. 8831 }, 8832 }, 8833 "textFormatRuns": [ # Runs of rich text applied to subsections of the cell. Runs are only valid 8834 # on user entered strings, not formulas, bools, or numbers. 8835 # Runs start at specific indexes in the text and continue until the next 8836 # run. Properties of a run will continue unless explicitly changed 8837 # in a subsequent run (and properties of the first run will continue 8838 # the properties of the cell unless explicitly changed). 8839 # 8840 # When writing, the new runs will overwrite any prior runs. When writing a 8841 # new user_entered_value, previous runs will be erased. 8842 { # A run of a text format. The format of this run continues until the start 8843 # index of the next run. 8844 # When updating, all fields must be set. 8845 "startIndex": 42, # The character index where this run starts. 8846 "format": { # The format of a run of text in a cell. # The format of this run. Absent values inherit the cell's format. 8847 # Absent values indicate that the field isn't specified. 8848 "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text. 8849 # for simplicity of conversion to/from color representations in various 8850 # languages over compactness; for example, the fields of this representation 8851 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 8852 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 8853 # method in iOS; and, with just a little work, it can be easily formatted into 8854 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 8855 # 8856 # Example (Java): 8857 # 8858 # import com.google.type.Color; 8859 # 8860 # // ... 8861 # public static java.awt.Color fromProto(Color protocolor) { 8862 # float alpha = protocolor.hasAlpha() 8863 # ? protocolor.getAlpha().getValue() 8864 # : 1.0; 8865 # 8866 # return new java.awt.Color( 8867 # protocolor.getRed(), 8868 # protocolor.getGreen(), 8869 # protocolor.getBlue(), 8870 # alpha); 8871 # } 8872 # 8873 # public static Color toProto(java.awt.Color color) { 8874 # float red = (float) color.getRed(); 8875 # float green = (float) color.getGreen(); 8876 # float blue = (float) color.getBlue(); 8877 # float denominator = 255.0; 8878 # Color.Builder resultBuilder = 8879 # Color 8880 # .newBuilder() 8881 # .setRed(red / denominator) 8882 # .setGreen(green / denominator) 8883 # .setBlue(blue / denominator); 8884 # int alpha = color.getAlpha(); 8885 # if (alpha != 255) { 8886 # result.setAlpha( 8887 # FloatValue 8888 # .newBuilder() 8889 # .setValue(((float) alpha) / denominator) 8890 # .build()); 8891 # } 8892 # return resultBuilder.build(); 8893 # } 8894 # // ... 8895 # 8896 # Example (iOS / Obj-C): 8897 # 8898 # // ... 8899 # static UIColor* fromProto(Color* protocolor) { 8900 # float red = [protocolor red]; 8901 # float green = [protocolor green]; 8902 # float blue = [protocolor blue]; 8903 # FloatValue* alpha_wrapper = [protocolor alpha]; 8904 # float alpha = 1.0; 8905 # if (alpha_wrapper != nil) { 8906 # alpha = [alpha_wrapper value]; 8907 # } 8908 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 8909 # } 8910 # 8911 # static Color* toProto(UIColor* color) { 8912 # CGFloat red, green, blue, alpha; 8913 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 8914 # return nil; 8915 # } 8916 # Color* result = [Color alloc] init]; 8917 # [result setRed:red]; 8918 # [result setGreen:green]; 8919 # [result setBlue:blue]; 8920 # if (alpha <= 0.9999) { 8921 # [result setAlpha:floatWrapperWithValue(alpha)]; 8922 # } 8923 # [result autorelease]; 8924 # return result; 8925 # } 8926 # // ... 8927 # 8928 # Example (JavaScript): 8929 # 8930 # // ... 8931 # 8932 # var protoToCssColor = function(rgb_color) { 8933 # var redFrac = rgb_color.red || 0.0; 8934 # var greenFrac = rgb_color.green || 0.0; 8935 # var blueFrac = rgb_color.blue || 0.0; 8936 # var red = Math.floor(redFrac * 255); 8937 # var green = Math.floor(greenFrac * 255); 8938 # var blue = Math.floor(blueFrac * 255); 8939 # 8940 # if (!('alpha' in rgb_color)) { 8941 # return rgbToCssColor_(red, green, blue); 8942 # } 8943 # 8944 # var alphaFrac = rgb_color.alpha.value || 0.0; 8945 # var rgbParams = [red, green, blue].join(','); 8946 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 8947 # }; 8948 # 8949 # var rgbToCssColor_ = function(red, green, blue) { 8950 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 8951 # var hexString = rgbNumber.toString(16); 8952 # var missingZeros = 6 - hexString.length; 8953 # var resultBuilder = ['#']; 8954 # for (var i = 0; i < missingZeros; i++) { 8955 # resultBuilder.push('0'); 8956 # } 8957 # resultBuilder.push(hexString); 8958 # return resultBuilder.join(''); 8959 # }; 8960 # 8961 # // ... 8962 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 8963 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 8964 # the final pixel color is defined by the equation: 8965 # 8966 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 8967 # 8968 # This means that a value of 1.0 corresponds to a solid color, whereas 8969 # a value of 0.0 corresponds to a completely transparent color. This 8970 # uses a wrapper message rather than a simple float scalar so that it is 8971 # possible to distinguish between a default value and the value being unset. 8972 # If omitted, this color object is to be rendered as a solid color 8973 # (as if the alpha value had been explicitly given with a value of 1.0). 8974 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 8975 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 8976 }, 8977 "bold": True or False, # True if the text is bold. 8978 "strikethrough": True or False, # True if the text has a strikethrough. 8979 "fontFamily": "A String", # The font family. 8980 "fontSize": 42, # The size of the font. 8981 "italic": True or False, # True if the text is italicized. 8982 "underline": True or False, # True if the text is underlined. 8983 }, 8984 }, 8985 ], 8986 }, 8987 "fields": "A String", # The fields that should be updated. At least one field must be specified. 8988 # The root `cell` is implied and should not be specified. 8989 # A single `"*"` can be used as short-hand for listing every field. 8990 "range": { # A range on a sheet. # The range to repeat the cell in. 8991 # All indexes are zero-based. 8992 # Indexes are half open, e.g the start index is inclusive 8993 # and the end index is exclusive -- [start_index, end_index). 8994 # Missing indexes indicate the range is unbounded on that side. 8995 # 8996 # For example, if `"Sheet1"` is sheet ID 0, then: 8997 # 8998 # `Sheet1!A1:A1 == sheet_id: 0, 8999 # start_row_index: 0, end_row_index: 1, 9000 # start_column_index: 0, end_column_index: 1` 9001 # 9002 # `Sheet1!A3:B4 == sheet_id: 0, 9003 # start_row_index: 2, end_row_index: 4, 9004 # start_column_index: 0, end_column_index: 2` 9005 # 9006 # `Sheet1!A:B == sheet_id: 0, 9007 # start_column_index: 0, end_column_index: 2` 9008 # 9009 # `Sheet1!A5:B == sheet_id: 0, 9010 # start_row_index: 4, 9011 # start_column_index: 0, end_column_index: 2` 9012 # 9013 # `Sheet1 == sheet_id:0` 9014 # 9015 # The start index must always be less than or equal to the end index. 9016 # If the start index equals the end index, then the range is empty. 9017 # Empty ranges are typically not meaningful and are usually rendered in the 9018 # UI as `#REF!`. 9019 "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded. 9020 "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded. 9021 "sheetId": 42, # The sheet this range is on. 9022 "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded. 9023 "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded. 9024 }, 9025 }, 9026 "findReplace": { # Finds and replaces data in cells over a range, sheet, or all sheets. # Finds and replaces occurrences of some text with other text. 9027 "includeFormulas": True or False, # True if the search should include cells with formulas. 9028 # False to skip cells with formulas. 9029 "matchEntireCell": True or False, # True if the find value should match the entire cell. 9030 "allSheets": True or False, # True to find/replace over all sheets. 9031 "matchCase": True or False, # True if the search is case sensitive. 9032 "find": "A String", # The value to search. 9033 "range": { # A range on a sheet. # The range to find/replace over. 9034 # All indexes are zero-based. 9035 # Indexes are half open, e.g the start index is inclusive 9036 # and the end index is exclusive -- [start_index, end_index). 9037 # Missing indexes indicate the range is unbounded on that side. 9038 # 9039 # For example, if `"Sheet1"` is sheet ID 0, then: 9040 # 9041 # `Sheet1!A1:A1 == sheet_id: 0, 9042 # start_row_index: 0, end_row_index: 1, 9043 # start_column_index: 0, end_column_index: 1` 9044 # 9045 # `Sheet1!A3:B4 == sheet_id: 0, 9046 # start_row_index: 2, end_row_index: 4, 9047 # start_column_index: 0, end_column_index: 2` 9048 # 9049 # `Sheet1!A:B == sheet_id: 0, 9050 # start_column_index: 0, end_column_index: 2` 9051 # 9052 # `Sheet1!A5:B == sheet_id: 0, 9053 # start_row_index: 4, 9054 # start_column_index: 0, end_column_index: 2` 9055 # 9056 # `Sheet1 == sheet_id:0` 9057 # 9058 # The start index must always be less than or equal to the end index. 9059 # If the start index equals the end index, then the range is empty. 9060 # Empty ranges are typically not meaningful and are usually rendered in the 9061 # UI as `#REF!`. 9062 "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded. 9063 "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded. 9064 "sheetId": 42, # The sheet this range is on. 9065 "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded. 9066 "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded. 9067 }, 9068 "searchByRegex": True or False, # True if the find value is a regex. 9069 # The regular expression and replacement should follow Java regex rules 9070 # at https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html. 9071 # The replacement string is allowed to refer to capturing groups. 9072 # For example, if one cell has the contents `"Google Sheets"` and another 9073 # has `"Google Docs"`, then searching for `"o.* (.*)"` with a replacement of 9074 # `"$1 Rocks"` would change the contents of the cells to 9075 # `"GSheets Rocks"` and `"GDocs Rocks"` respectively. 9076 "sheetId": 42, # The sheet to find/replace over. 9077 "replacement": "A String", # The value to use as the replacement. 9078 }, 9079 "setBasicFilter": { # Sets the basic filter associated with a sheet. # Sets the basic filter on a sheet. 9080 "filter": { # The default filter associated with a sheet. # The filter to set. 9081 "range": { # A range on a sheet. # The range the filter covers. 9082 # All indexes are zero-based. 9083 # Indexes are half open, e.g the start index is inclusive 9084 # and the end index is exclusive -- [start_index, end_index). 9085 # Missing indexes indicate the range is unbounded on that side. 9086 # 9087 # For example, if `"Sheet1"` is sheet ID 0, then: 9088 # 9089 # `Sheet1!A1:A1 == sheet_id: 0, 9090 # start_row_index: 0, end_row_index: 1, 9091 # start_column_index: 0, end_column_index: 1` 9092 # 9093 # `Sheet1!A3:B4 == sheet_id: 0, 9094 # start_row_index: 2, end_row_index: 4, 9095 # start_column_index: 0, end_column_index: 2` 9096 # 9097 # `Sheet1!A:B == sheet_id: 0, 9098 # start_column_index: 0, end_column_index: 2` 9099 # 9100 # `Sheet1!A5:B == sheet_id: 0, 9101 # start_row_index: 4, 9102 # start_column_index: 0, end_column_index: 2` 9103 # 9104 # `Sheet1 == sheet_id:0` 9105 # 9106 # The start index must always be less than or equal to the end index. 9107 # If the start index equals the end index, then the range is empty. 9108 # Empty ranges are typically not meaningful and are usually rendered in the 9109 # UI as `#REF!`. 9110 "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded. 9111 "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded. 9112 "sheetId": 42, # The sheet this range is on. 9113 "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded. 9114 "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded. 9115 }, 9116 "sortSpecs": [ # The sort order per column. Later specifications are used when values 9117 # are equal in the earlier specifications. 9118 { # A sort order associated with a specific column or row. 9119 "sortOrder": "A String", # The order data should be sorted. 9120 "dimensionIndex": 42, # The dimension the sort should be applied to. 9121 }, 9122 ], 9123 "criteria": { # The criteria for showing/hiding values per column. 9124 # The map's key is the column index, and the value is the criteria for 9125 # that column. 9126 "a_key": { # Criteria for showing/hiding rows in a filter or filter view. 9127 "hiddenValues": [ # Values that should be hidden. 9128 "A String", 9129 ], 9130 "condition": { # A condition that can evaluate to true or false. # A condition that must be true for values to be shown. 9131 # (This does not override hiddenValues -- if a value is listed there, 9132 # it will still be hidden.) 9133 # BooleanConditions are used by conditional formatting, 9134 # data validation, and the criteria in filters. 9135 "values": [ # The values of the condition. The number of supported values depends 9136 # on the condition type. Some support zero values, 9137 # others one or two values, 9138 # and ConditionType.ONE_OF_LIST supports an arbitrary number of values. 9139 { # The value of the condition. 9140 "relativeDate": "A String", # A relative date (based on the current date). 9141 # Valid only if the type is 9142 # DATE_BEFORE, 9143 # DATE_AFTER, 9144 # DATE_ON_OR_BEFORE or 9145 # DATE_ON_OR_AFTER. 9146 # 9147 # Relative dates are not supported in data validation. 9148 # They are supported only in conditional formatting and 9149 # conditional filters. 9150 "userEnteredValue": "A String", # A value the condition is based on. 9151 # The value will be parsed as if the user typed into a cell. 9152 # Formulas are supported (and must begin with an `=`). 9153 }, 9154 ], 9155 "type": "A String", # The type of condition. 9156 }, 9157 }, 9158 }, 9159 }, 9160 }, 9161 "addFilterView": { # Adds a filter view. # Adds a filter view. 9162 "filter": { # A filter view. # The filter to add. The filterViewId 9163 # field is optional; if one is not set, an id will be randomly generated. (It 9164 # is an error to specify the ID of a filter that already exists.) 9165 "title": "A String", # The name of the filter view. 9166 "namedRangeId": "A String", # The named range this filter view is backed by, if any. 9167 # 9168 # When writing, only one of range or named_range_id 9169 # may be set. 9170 "filterViewId": 42, # The ID of the filter view. 9171 "range": { # A range on a sheet. # The range this filter view covers. 9172 # 9173 # When writing, only one of range or named_range_id 9174 # may be set. 9175 # All indexes are zero-based. 9176 # Indexes are half open, e.g the start index is inclusive 9177 # and the end index is exclusive -- [start_index, end_index). 9178 # Missing indexes indicate the range is unbounded on that side. 9179 # 9180 # For example, if `"Sheet1"` is sheet ID 0, then: 9181 # 9182 # `Sheet1!A1:A1 == sheet_id: 0, 9183 # start_row_index: 0, end_row_index: 1, 9184 # start_column_index: 0, end_column_index: 1` 9185 # 9186 # `Sheet1!A3:B4 == sheet_id: 0, 9187 # start_row_index: 2, end_row_index: 4, 9188 # start_column_index: 0, end_column_index: 2` 9189 # 9190 # `Sheet1!A:B == sheet_id: 0, 9191 # start_column_index: 0, end_column_index: 2` 9192 # 9193 # `Sheet1!A5:B == sheet_id: 0, 9194 # start_row_index: 4, 9195 # start_column_index: 0, end_column_index: 2` 9196 # 9197 # `Sheet1 == sheet_id:0` 9198 # 9199 # The start index must always be less than or equal to the end index. 9200 # If the start index equals the end index, then the range is empty. 9201 # Empty ranges are typically not meaningful and are usually rendered in the 9202 # UI as `#REF!`. 9203 "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded. 9204 "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded. 9205 "sheetId": 42, # The sheet this range is on. 9206 "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded. 9207 "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded. 9208 }, 9209 "sortSpecs": [ # The sort order per column. Later specifications are used when values 9210 # are equal in the earlier specifications. 9211 { # A sort order associated with a specific column or row. 9212 "sortOrder": "A String", # The order data should be sorted. 9213 "dimensionIndex": 42, # The dimension the sort should be applied to. 9214 }, 9215 ], 9216 "criteria": { # The criteria for showing/hiding values per column. 9217 # The map's key is the column index, and the value is the criteria for 9218 # that column. 9219 "a_key": { # Criteria for showing/hiding rows in a filter or filter view. 9220 "hiddenValues": [ # Values that should be hidden. 9221 "A String", 9222 ], 9223 "condition": { # A condition that can evaluate to true or false. # A condition that must be true for values to be shown. 9224 # (This does not override hiddenValues -- if a value is listed there, 9225 # it will still be hidden.) 9226 # BooleanConditions are used by conditional formatting, 9227 # data validation, and the criteria in filters. 9228 "values": [ # The values of the condition. The number of supported values depends 9229 # on the condition type. Some support zero values, 9230 # others one or two values, 9231 # and ConditionType.ONE_OF_LIST supports an arbitrary number of values. 9232 { # The value of the condition. 9233 "relativeDate": "A String", # A relative date (based on the current date). 9234 # Valid only if the type is 9235 # DATE_BEFORE, 9236 # DATE_AFTER, 9237 # DATE_ON_OR_BEFORE or 9238 # DATE_ON_OR_AFTER. 9239 # 9240 # Relative dates are not supported in data validation. 9241 # They are supported only in conditional formatting and 9242 # conditional filters. 9243 "userEnteredValue": "A String", # A value the condition is based on. 9244 # The value will be parsed as if the user typed into a cell. 9245 # Formulas are supported (and must begin with an `=`). 9246 }, 9247 ], 9248 "type": "A String", # The type of condition. 9249 }, 9250 }, 9251 }, 9252 }, 9253 }, 9254 "updateCells": { # Updates all cells in a range with new data. # Updates many cells at once. 9255 "start": { # A coordinate in a sheet. # The coordinate to start writing data at. 9256 # Any number of rows and columns (including a different number of 9257 # columns per row) may be written. 9258 # All indexes are zero-based. 9259 "rowIndex": 42, # The row index of the coordinate. 9260 "columnIndex": 42, # The column index of the coordinate. 9261 "sheetId": 42, # The sheet this coordinate is on. 9262 }, 9263 "range": { # A range on a sheet. # The range to write data to. 9264 # 9265 # If the data in rows does not cover the entire requested range, 9266 # the fields matching those set in fields will be cleared. 9267 # All indexes are zero-based. 9268 # Indexes are half open, e.g the start index is inclusive 9269 # and the end index is exclusive -- [start_index, end_index). 9270 # Missing indexes indicate the range is unbounded on that side. 9271 # 9272 # For example, if `"Sheet1"` is sheet ID 0, then: 9273 # 9274 # `Sheet1!A1:A1 == sheet_id: 0, 9275 # start_row_index: 0, end_row_index: 1, 9276 # start_column_index: 0, end_column_index: 1` 9277 # 9278 # `Sheet1!A3:B4 == sheet_id: 0, 9279 # start_row_index: 2, end_row_index: 4, 9280 # start_column_index: 0, end_column_index: 2` 9281 # 9282 # `Sheet1!A:B == sheet_id: 0, 9283 # start_column_index: 0, end_column_index: 2` 9284 # 9285 # `Sheet1!A5:B == sheet_id: 0, 9286 # start_row_index: 4, 9287 # start_column_index: 0, end_column_index: 2` 9288 # 9289 # `Sheet1 == sheet_id:0` 9290 # 9291 # The start index must always be less than or equal to the end index. 9292 # If the start index equals the end index, then the range is empty. 9293 # Empty ranges are typically not meaningful and are usually rendered in the 9294 # UI as `#REF!`. 9295 "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded. 9296 "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded. 9297 "sheetId": 42, # The sheet this range is on. 9298 "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded. 9299 "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded. 9300 }, 9301 "rows": [ # The data to write. 9302 { # Data about each cell in a row. 9303 "values": [ # The values in the row, one per column. 9304 { # Data about a specific cell. 9305 "pivotTable": { # A pivot table. # A pivot table anchored at this cell. The size of pivot table itself 9306 # is computed dynamically based on its data, grouping, filters, values, 9307 # etc. Only the top-left cell of the pivot table contains the pivot table 9308 # definition. The other cells will contain the calculated values of the 9309 # results of the pivot in their effective_value fields. 9310 "valueLayout": "A String", # Whether values should be listed horizontally (as columns) 9311 # or vertically (as rows). 9312 "rows": [ # Each row grouping in the pivot table. 9313 { # A single grouping (either row or column) in a pivot table. 9314 "showTotals": True or False, # True if the pivot table should include the totals for this grouping. 9315 "valueMetadata": [ # Metadata about values in the grouping. 9316 { # Metadata about a value in a pivot grouping. 9317 "collapsed": True or False, # True if the data corresponding to the value is collapsed. 9318 "value": { # The kinds of value that a cell in a spreadsheet can have. # The calculated value the metadata corresponds to. 9319 # (Note that formulaValue is not valid, 9320 # because the values will be calculated.) 9321 "stringValue": "A String", # Represents a string value. 9322 # Leading single quotes are not included. For example, if the user typed 9323 # `'123` into the UI, this would be represented as a `stringValue` of 9324 # `"123"`. 9325 "boolValue": True or False, # Represents a boolean value. 9326 "errorValue": { # An error in a cell. # Represents an error. 9327 # This field is read-only. 9328 "message": "A String", # A message with more information about the error 9329 # (in the spreadsheet's locale). 9330 "type": "A String", # The type of error. 9331 }, 9332 "formulaValue": "A String", # Represents a formula. 9333 "numberValue": 3.14, # Represents a double value. 9334 # Note: Dates, Times and DateTimes are represented as doubles in 9335 # "serial number" format. 9336 }, 9337 }, 9338 ], 9339 "valueBucket": { # Information about which values in a pivot group should be used for sorting. # The bucket of the opposite pivot group to sort by. 9340 # If not specified, sorting is alphabetical by this group's values. 9341 "buckets": [ # Determines the bucket from which values are chosen to sort. 9342 # 9343 # For example, in a pivot table with one row group & two column groups, 9344 # the row group can list up to two values. The first value corresponds 9345 # to a value within the first column group, and the second value 9346 # corresponds to a value in the second column group. If no values 9347 # are listed, this would indicate that the row should be sorted according 9348 # to the "Grand Total" over the column groups. If a single value is listed, 9349 # this would correspond to using the "Total" of that bucket. 9350 { # The kinds of value that a cell in a spreadsheet can have. 9351 "stringValue": "A String", # Represents a string value. 9352 # Leading single quotes are not included. For example, if the user typed 9353 # `'123` into the UI, this would be represented as a `stringValue` of 9354 # `"123"`. 9355 "boolValue": True or False, # Represents a boolean value. 9356 "errorValue": { # An error in a cell. # Represents an error. 9357 # This field is read-only. 9358 "message": "A String", # A message with more information about the error 9359 # (in the spreadsheet's locale). 9360 "type": "A String", # The type of error. 9361 }, 9362 "formulaValue": "A String", # Represents a formula. 9363 "numberValue": 3.14, # Represents a double value. 9364 # Note: Dates, Times and DateTimes are represented as doubles in 9365 # "serial number" format. 9366 }, 9367 ], 9368 "valuesIndex": 42, # The offset in the PivotTable.values list which the values in this 9369 # grouping should be sorted by. 9370 }, 9371 "sortOrder": "A String", # The order the values in this group should be sorted. 9372 "sourceColumnOffset": 42, # The column offset of the source range that this grouping is based on. 9373 # 9374 # For example, if the source was `C10:E15`, a `sourceColumnOffset` of `0` 9375 # means this group refers to column `C`, whereas the offset `1` would refer 9376 # to column `D`. 9377 }, 9378 ], 9379 "source": { # A range on a sheet. # The range the pivot table is reading data from. 9380 # All indexes are zero-based. 9381 # Indexes are half open, e.g the start index is inclusive 9382 # and the end index is exclusive -- [start_index, end_index). 9383 # Missing indexes indicate the range is unbounded on that side. 9384 # 9385 # For example, if `"Sheet1"` is sheet ID 0, then: 9386 # 9387 # `Sheet1!A1:A1 == sheet_id: 0, 9388 # start_row_index: 0, end_row_index: 1, 9389 # start_column_index: 0, end_column_index: 1` 9390 # 9391 # `Sheet1!A3:B4 == sheet_id: 0, 9392 # start_row_index: 2, end_row_index: 4, 9393 # start_column_index: 0, end_column_index: 2` 9394 # 9395 # `Sheet1!A:B == sheet_id: 0, 9396 # start_column_index: 0, end_column_index: 2` 9397 # 9398 # `Sheet1!A5:B == sheet_id: 0, 9399 # start_row_index: 4, 9400 # start_column_index: 0, end_column_index: 2` 9401 # 9402 # `Sheet1 == sheet_id:0` 9403 # 9404 # The start index must always be less than or equal to the end index. 9405 # If the start index equals the end index, then the range is empty. 9406 # Empty ranges are typically not meaningful and are usually rendered in the 9407 # UI as `#REF!`. 9408 "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded. 9409 "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded. 9410 "sheetId": 42, # The sheet this range is on. 9411 "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded. 9412 "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded. 9413 }, 9414 "values": [ # A list of values to include in the pivot table. 9415 { # The definition of how a value in a pivot table should be calculated. 9416 "formula": "A String", # A custom formula to calculate the value. The formula must start 9417 # with an `=` character. 9418 "sourceColumnOffset": 42, # The column offset of the source range that this value reads from. 9419 # 9420 # For example, if the source was `C10:E15`, a `sourceColumnOffset` of `0` 9421 # means this value refers to column `C`, whereas the offset `1` would 9422 # refer to column `D`. 9423 "summarizeFunction": "A String", # A function to summarize the value. 9424 # If formula is set, the only supported values are 9425 # SUM and 9426 # CUSTOM. 9427 # If sourceColumnOffset is set, then `CUSTOM` 9428 # is not supported. 9429 "name": "A String", # A name to use for the value. This is only used if formula was set. 9430 # Otherwise, the column name is used. 9431 }, 9432 ], 9433 "criteria": { # An optional mapping of filters per source column offset. 9434 # 9435 # The filters will be applied before aggregating data into the pivot table. 9436 # The map's key is the column offset of the source range that you want to 9437 # filter, and the value is the criteria for that column. 9438 # 9439 # For example, if the source was `C10:E15`, a key of `0` will have the filter 9440 # for column `C`, whereas the key `1` is for column `D`. 9441 "a_key": { # Criteria for showing/hiding rows in a pivot table. 9442 "visibleValues": [ # Values that should be included. Values not listed here are excluded. 9443 "A String", 9444 ], 9445 }, 9446 }, 9447 "columns": [ # Each column grouping in the pivot table. 9448 { # A single grouping (either row or column) in a pivot table. 9449 "showTotals": True or False, # True if the pivot table should include the totals for this grouping. 9450 "valueMetadata": [ # Metadata about values in the grouping. 9451 { # Metadata about a value in a pivot grouping. 9452 "collapsed": True or False, # True if the data corresponding to the value is collapsed. 9453 "value": { # The kinds of value that a cell in a spreadsheet can have. # The calculated value the metadata corresponds to. 9454 # (Note that formulaValue is not valid, 9455 # because the values will be calculated.) 9456 "stringValue": "A String", # Represents a string value. 9457 # Leading single quotes are not included. For example, if the user typed 9458 # `'123` into the UI, this would be represented as a `stringValue` of 9459 # `"123"`. 9460 "boolValue": True or False, # Represents a boolean value. 9461 "errorValue": { # An error in a cell. # Represents an error. 9462 # This field is read-only. 9463 "message": "A String", # A message with more information about the error 9464 # (in the spreadsheet's locale). 9465 "type": "A String", # The type of error. 9466 }, 9467 "formulaValue": "A String", # Represents a formula. 9468 "numberValue": 3.14, # Represents a double value. 9469 # Note: Dates, Times and DateTimes are represented as doubles in 9470 # "serial number" format. 9471 }, 9472 }, 9473 ], 9474 "valueBucket": { # Information about which values in a pivot group should be used for sorting. # The bucket of the opposite pivot group to sort by. 9475 # If not specified, sorting is alphabetical by this group's values. 9476 "buckets": [ # Determines the bucket from which values are chosen to sort. 9477 # 9478 # For example, in a pivot table with one row group & two column groups, 9479 # the row group can list up to two values. The first value corresponds 9480 # to a value within the first column group, and the second value 9481 # corresponds to a value in the second column group. If no values 9482 # are listed, this would indicate that the row should be sorted according 9483 # to the "Grand Total" over the column groups. If a single value is listed, 9484 # this would correspond to using the "Total" of that bucket. 9485 { # The kinds of value that a cell in a spreadsheet can have. 9486 "stringValue": "A String", # Represents a string value. 9487 # Leading single quotes are not included. For example, if the user typed 9488 # `'123` into the UI, this would be represented as a `stringValue` of 9489 # `"123"`. 9490 "boolValue": True or False, # Represents a boolean value. 9491 "errorValue": { # An error in a cell. # Represents an error. 9492 # This field is read-only. 9493 "message": "A String", # A message with more information about the error 9494 # (in the spreadsheet's locale). 9495 "type": "A String", # The type of error. 9496 }, 9497 "formulaValue": "A String", # Represents a formula. 9498 "numberValue": 3.14, # Represents a double value. 9499 # Note: Dates, Times and DateTimes are represented as doubles in 9500 # "serial number" format. 9501 }, 9502 ], 9503 "valuesIndex": 42, # The offset in the PivotTable.values list which the values in this 9504 # grouping should be sorted by. 9505 }, 9506 "sortOrder": "A String", # The order the values in this group should be sorted. 9507 "sourceColumnOffset": 42, # The column offset of the source range that this grouping is based on. 9508 # 9509 # For example, if the source was `C10:E15`, a `sourceColumnOffset` of `0` 9510 # means this group refers to column `C`, whereas the offset `1` would refer 9511 # to column `D`. 9512 }, 9513 ], 9514 }, 9515 "hyperlink": "A String", # A hyperlink this cell points to, if any. 9516 # This field is read-only. (To set it, use a `=HYPERLINK` formula 9517 # in the userEnteredValue.formulaValue 9518 # field.) 9519 "effectiveValue": { # The kinds of value that a cell in a spreadsheet can have. # The effective value of the cell. For cells with formulas, this will be 9520 # the calculated value. For cells with literals, this will be 9521 # the same as the user_entered_value. 9522 # This field is read-only. 9523 "stringValue": "A String", # Represents a string value. 9524 # Leading single quotes are not included. For example, if the user typed 9525 # `'123` into the UI, this would be represented as a `stringValue` of 9526 # `"123"`. 9527 "boolValue": True or False, # Represents a boolean value. 9528 "errorValue": { # An error in a cell. # Represents an error. 9529 # This field is read-only. 9530 "message": "A String", # A message with more information about the error 9531 # (in the spreadsheet's locale). 9532 "type": "A String", # The type of error. 9533 }, 9534 "formulaValue": "A String", # Represents a formula. 9535 "numberValue": 3.14, # Represents a double value. 9536 # Note: Dates, Times and DateTimes are represented as doubles in 9537 # "serial number" format. 9538 }, 9539 "formattedValue": "A String", # The formatted value of the cell. 9540 # This is the value as it's shown to the user. 9541 # This field is read-only. 9542 "userEnteredValue": { # The kinds of value that a cell in a spreadsheet can have. # The value the user entered in the cell. e.g, `1234`, `'Hello'`, or `=NOW()` 9543 # Note: Dates, Times and DateTimes are represented as doubles in 9544 # serial number format. 9545 "stringValue": "A String", # Represents a string value. 9546 # Leading single quotes are not included. For example, if the user typed 9547 # `'123` into the UI, this would be represented as a `stringValue` of 9548 # `"123"`. 9549 "boolValue": True or False, # Represents a boolean value. 9550 "errorValue": { # An error in a cell. # Represents an error. 9551 # This field is read-only. 9552 "message": "A String", # A message with more information about the error 9553 # (in the spreadsheet's locale). 9554 "type": "A String", # The type of error. 9555 }, 9556 "formulaValue": "A String", # Represents a formula. 9557 "numberValue": 3.14, # Represents a double value. 9558 # Note: Dates, Times and DateTimes are represented as doubles in 9559 # "serial number" format. 9560 }, 9561 "note": "A String", # Any note on the cell. 9562 "effectiveFormat": { # The format of a cell. # The effective format being used by the cell. 9563 # This includes the results of applying any conditional formatting and, 9564 # if the cell contains a formula, the computed number format. 9565 # If the effective format is the default format, effective format will 9566 # not be written. 9567 # This field is read-only. 9568 "numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user. 9569 "pattern": "A String", # Pattern string used for formatting. If not set, a default pattern based on 9570 # the user's locale will be used if necessary for the given type. 9571 # See the [Date and Number Formats guide](/sheets/api/guides/formats) for more 9572 # information about the supported patterns. 9573 "type": "A String", # The type of the number format. 9574 # When writing, this field must be set. 9575 }, 9576 "textDirection": "A String", # The direction of the text in the cell. 9577 "padding": { # The amount of padding around the cell, in pixels. # The padding of the cell. 9578 # When updating padding, every field must be specified. 9579 "top": 42, # The top padding of the cell. 9580 "right": 42, # The right padding of the cell. 9581 "bottom": 42, # The bottom padding of the cell. 9582 "left": 42, # The left padding of the cell. 9583 }, 9584 "verticalAlignment": "A String", # The vertical alignment of the value in the cell. 9585 "backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell. 9586 # for simplicity of conversion to/from color representations in various 9587 # languages over compactness; for example, the fields of this representation 9588 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 9589 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 9590 # method in iOS; and, with just a little work, it can be easily formatted into 9591 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 9592 # 9593 # Example (Java): 9594 # 9595 # import com.google.type.Color; 9596 # 9597 # // ... 9598 # public static java.awt.Color fromProto(Color protocolor) { 9599 # float alpha = protocolor.hasAlpha() 9600 # ? protocolor.getAlpha().getValue() 9601 # : 1.0; 9602 # 9603 # return new java.awt.Color( 9604 # protocolor.getRed(), 9605 # protocolor.getGreen(), 9606 # protocolor.getBlue(), 9607 # alpha); 9608 # } 9609 # 9610 # public static Color toProto(java.awt.Color color) { 9611 # float red = (float) color.getRed(); 9612 # float green = (float) color.getGreen(); 9613 # float blue = (float) color.getBlue(); 9614 # float denominator = 255.0; 9615 # Color.Builder resultBuilder = 9616 # Color 9617 # .newBuilder() 9618 # .setRed(red / denominator) 9619 # .setGreen(green / denominator) 9620 # .setBlue(blue / denominator); 9621 # int alpha = color.getAlpha(); 9622 # if (alpha != 255) { 9623 # result.setAlpha( 9624 # FloatValue 9625 # .newBuilder() 9626 # .setValue(((float) alpha) / denominator) 9627 # .build()); 9628 # } 9629 # return resultBuilder.build(); 9630 # } 9631 # // ... 9632 # 9633 # Example (iOS / Obj-C): 9634 # 9635 # // ... 9636 # static UIColor* fromProto(Color* protocolor) { 9637 # float red = [protocolor red]; 9638 # float green = [protocolor green]; 9639 # float blue = [protocolor blue]; 9640 # FloatValue* alpha_wrapper = [protocolor alpha]; 9641 # float alpha = 1.0; 9642 # if (alpha_wrapper != nil) { 9643 # alpha = [alpha_wrapper value]; 9644 # } 9645 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 9646 # } 9647 # 9648 # static Color* toProto(UIColor* color) { 9649 # CGFloat red, green, blue, alpha; 9650 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 9651 # return nil; 9652 # } 9653 # Color* result = [Color alloc] init]; 9654 # [result setRed:red]; 9655 # [result setGreen:green]; 9656 # [result setBlue:blue]; 9657 # if (alpha <= 0.9999) { 9658 # [result setAlpha:floatWrapperWithValue(alpha)]; 9659 # } 9660 # [result autorelease]; 9661 # return result; 9662 # } 9663 # // ... 9664 # 9665 # Example (JavaScript): 9666 # 9667 # // ... 9668 # 9669 # var protoToCssColor = function(rgb_color) { 9670 # var redFrac = rgb_color.red || 0.0; 9671 # var greenFrac = rgb_color.green || 0.0; 9672 # var blueFrac = rgb_color.blue || 0.0; 9673 # var red = Math.floor(redFrac * 255); 9674 # var green = Math.floor(greenFrac * 255); 9675 # var blue = Math.floor(blueFrac * 255); 9676 # 9677 # if (!('alpha' in rgb_color)) { 9678 # return rgbToCssColor_(red, green, blue); 9679 # } 9680 # 9681 # var alphaFrac = rgb_color.alpha.value || 0.0; 9682 # var rgbParams = [red, green, blue].join(','); 9683 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 9684 # }; 9685 # 9686 # var rgbToCssColor_ = function(red, green, blue) { 9687 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 9688 # var hexString = rgbNumber.toString(16); 9689 # var missingZeros = 6 - hexString.length; 9690 # var resultBuilder = ['#']; 9691 # for (var i = 0; i < missingZeros; i++) { 9692 # resultBuilder.push('0'); 9693 # } 9694 # resultBuilder.push(hexString); 9695 # return resultBuilder.join(''); 9696 # }; 9697 # 9698 # // ... 9699 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 9700 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 9701 # the final pixel color is defined by the equation: 9702 # 9703 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 9704 # 9705 # This means that a value of 1.0 corresponds to a solid color, whereas 9706 # a value of 0.0 corresponds to a completely transparent color. This 9707 # uses a wrapper message rather than a simple float scalar so that it is 9708 # possible to distinguish between a default value and the value being unset. 9709 # If omitted, this color object is to be rendered as a solid color 9710 # (as if the alpha value had been explicitly given with a value of 1.0). 9711 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 9712 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 9713 }, 9714 "horizontalAlignment": "A String", # The horizontal alignment of the value in the cell. 9715 "textFormat": { # The format of a run of text in a cell. # The format of the text in the cell (unless overridden by a format run). 9716 # Absent values indicate that the field isn't specified. 9717 "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text. 9718 # for simplicity of conversion to/from color representations in various 9719 # languages over compactness; for example, the fields of this representation 9720 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 9721 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 9722 # method in iOS; and, with just a little work, it can be easily formatted into 9723 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 9724 # 9725 # Example (Java): 9726 # 9727 # import com.google.type.Color; 9728 # 9729 # // ... 9730 # public static java.awt.Color fromProto(Color protocolor) { 9731 # float alpha = protocolor.hasAlpha() 9732 # ? protocolor.getAlpha().getValue() 9733 # : 1.0; 9734 # 9735 # return new java.awt.Color( 9736 # protocolor.getRed(), 9737 # protocolor.getGreen(), 9738 # protocolor.getBlue(), 9739 # alpha); 9740 # } 9741 # 9742 # public static Color toProto(java.awt.Color color) { 9743 # float red = (float) color.getRed(); 9744 # float green = (float) color.getGreen(); 9745 # float blue = (float) color.getBlue(); 9746 # float denominator = 255.0; 9747 # Color.Builder resultBuilder = 9748 # Color 9749 # .newBuilder() 9750 # .setRed(red / denominator) 9751 # .setGreen(green / denominator) 9752 # .setBlue(blue / denominator); 9753 # int alpha = color.getAlpha(); 9754 # if (alpha != 255) { 9755 # result.setAlpha( 9756 # FloatValue 9757 # .newBuilder() 9758 # .setValue(((float) alpha) / denominator) 9759 # .build()); 9760 # } 9761 # return resultBuilder.build(); 9762 # } 9763 # // ... 9764 # 9765 # Example (iOS / Obj-C): 9766 # 9767 # // ... 9768 # static UIColor* fromProto(Color* protocolor) { 9769 # float red = [protocolor red]; 9770 # float green = [protocolor green]; 9771 # float blue = [protocolor blue]; 9772 # FloatValue* alpha_wrapper = [protocolor alpha]; 9773 # float alpha = 1.0; 9774 # if (alpha_wrapper != nil) { 9775 # alpha = [alpha_wrapper value]; 9776 # } 9777 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 9778 # } 9779 # 9780 # static Color* toProto(UIColor* color) { 9781 # CGFloat red, green, blue, alpha; 9782 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 9783 # return nil; 9784 # } 9785 # Color* result = [Color alloc] init]; 9786 # [result setRed:red]; 9787 # [result setGreen:green]; 9788 # [result setBlue:blue]; 9789 # if (alpha <= 0.9999) { 9790 # [result setAlpha:floatWrapperWithValue(alpha)]; 9791 # } 9792 # [result autorelease]; 9793 # return result; 9794 # } 9795 # // ... 9796 # 9797 # Example (JavaScript): 9798 # 9799 # // ... 9800 # 9801 # var protoToCssColor = function(rgb_color) { 9802 # var redFrac = rgb_color.red || 0.0; 9803 # var greenFrac = rgb_color.green || 0.0; 9804 # var blueFrac = rgb_color.blue || 0.0; 9805 # var red = Math.floor(redFrac * 255); 9806 # var green = Math.floor(greenFrac * 255); 9807 # var blue = Math.floor(blueFrac * 255); 9808 # 9809 # if (!('alpha' in rgb_color)) { 9810 # return rgbToCssColor_(red, green, blue); 9811 # } 9812 # 9813 # var alphaFrac = rgb_color.alpha.value || 0.0; 9814 # var rgbParams = [red, green, blue].join(','); 9815 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 9816 # }; 9817 # 9818 # var rgbToCssColor_ = function(red, green, blue) { 9819 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 9820 # var hexString = rgbNumber.toString(16); 9821 # var missingZeros = 6 - hexString.length; 9822 # var resultBuilder = ['#']; 9823 # for (var i = 0; i < missingZeros; i++) { 9824 # resultBuilder.push('0'); 9825 # } 9826 # resultBuilder.push(hexString); 9827 # return resultBuilder.join(''); 9828 # }; 9829 # 9830 # // ... 9831 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 9832 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 9833 # the final pixel color is defined by the equation: 9834 # 9835 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 9836 # 9837 # This means that a value of 1.0 corresponds to a solid color, whereas 9838 # a value of 0.0 corresponds to a completely transparent color. This 9839 # uses a wrapper message rather than a simple float scalar so that it is 9840 # possible to distinguish between a default value and the value being unset. 9841 # If omitted, this color object is to be rendered as a solid color 9842 # (as if the alpha value had been explicitly given with a value of 1.0). 9843 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 9844 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 9845 }, 9846 "bold": True or False, # True if the text is bold. 9847 "strikethrough": True or False, # True if the text has a strikethrough. 9848 "fontFamily": "A String", # The font family. 9849 "fontSize": 42, # The size of the font. 9850 "italic": True or False, # True if the text is italicized. 9851 "underline": True or False, # True if the text is underlined. 9852 }, 9853 "textRotation": { # The rotation applied to text in a cell. # The rotation applied to text in a cell 9854 "angle": 42, # The angle between the standard orientation and the desired orientation. 9855 # Measured in degrees. Valid values are between -90 and 90. Positive 9856 # angles are angled upwards, negative are angled downwards. 9857 # 9858 # Note: For LTR text direction positive angles are in the counterclockwise 9859 # direction, whereas for RTL they are in the clockwise direction 9860 "vertical": True or False, # If true, text reads top to bottom, but the orientation of individual 9861 # characters is unchanged. 9862 # For example: 9863 # 9864 # | V | 9865 # | e | 9866 # | r | 9867 # | t | 9868 # | i | 9869 # | c | 9870 # | a | 9871 # | l | 9872 }, 9873 "hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell. 9874 "borders": { # The borders of the cell. # The borders of the cell. 9875 "top": { # A border along a cell. # The top border of the cell. 9876 "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border. 9877 # for simplicity of conversion to/from color representations in various 9878 # languages over compactness; for example, the fields of this representation 9879 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 9880 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 9881 # method in iOS; and, with just a little work, it can be easily formatted into 9882 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 9883 # 9884 # Example (Java): 9885 # 9886 # import com.google.type.Color; 9887 # 9888 # // ... 9889 # public static java.awt.Color fromProto(Color protocolor) { 9890 # float alpha = protocolor.hasAlpha() 9891 # ? protocolor.getAlpha().getValue() 9892 # : 1.0; 9893 # 9894 # return new java.awt.Color( 9895 # protocolor.getRed(), 9896 # protocolor.getGreen(), 9897 # protocolor.getBlue(), 9898 # alpha); 9899 # } 9900 # 9901 # public static Color toProto(java.awt.Color color) { 9902 # float red = (float) color.getRed(); 9903 # float green = (float) color.getGreen(); 9904 # float blue = (float) color.getBlue(); 9905 # float denominator = 255.0; 9906 # Color.Builder resultBuilder = 9907 # Color 9908 # .newBuilder() 9909 # .setRed(red / denominator) 9910 # .setGreen(green / denominator) 9911 # .setBlue(blue / denominator); 9912 # int alpha = color.getAlpha(); 9913 # if (alpha != 255) { 9914 # result.setAlpha( 9915 # FloatValue 9916 # .newBuilder() 9917 # .setValue(((float) alpha) / denominator) 9918 # .build()); 9919 # } 9920 # return resultBuilder.build(); 9921 # } 9922 # // ... 9923 # 9924 # Example (iOS / Obj-C): 9925 # 9926 # // ... 9927 # static UIColor* fromProto(Color* protocolor) { 9928 # float red = [protocolor red]; 9929 # float green = [protocolor green]; 9930 # float blue = [protocolor blue]; 9931 # FloatValue* alpha_wrapper = [protocolor alpha]; 9932 # float alpha = 1.0; 9933 # if (alpha_wrapper != nil) { 9934 # alpha = [alpha_wrapper value]; 9935 # } 9936 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 9937 # } 9938 # 9939 # static Color* toProto(UIColor* color) { 9940 # CGFloat red, green, blue, alpha; 9941 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 9942 # return nil; 9943 # } 9944 # Color* result = [Color alloc] init]; 9945 # [result setRed:red]; 9946 # [result setGreen:green]; 9947 # [result setBlue:blue]; 9948 # if (alpha <= 0.9999) { 9949 # [result setAlpha:floatWrapperWithValue(alpha)]; 9950 # } 9951 # [result autorelease]; 9952 # return result; 9953 # } 9954 # // ... 9955 # 9956 # Example (JavaScript): 9957 # 9958 # // ... 9959 # 9960 # var protoToCssColor = function(rgb_color) { 9961 # var redFrac = rgb_color.red || 0.0; 9962 # var greenFrac = rgb_color.green || 0.0; 9963 # var blueFrac = rgb_color.blue || 0.0; 9964 # var red = Math.floor(redFrac * 255); 9965 # var green = Math.floor(greenFrac * 255); 9966 # var blue = Math.floor(blueFrac * 255); 9967 # 9968 # if (!('alpha' in rgb_color)) { 9969 # return rgbToCssColor_(red, green, blue); 9970 # } 9971 # 9972 # var alphaFrac = rgb_color.alpha.value || 0.0; 9973 # var rgbParams = [red, green, blue].join(','); 9974 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 9975 # }; 9976 # 9977 # var rgbToCssColor_ = function(red, green, blue) { 9978 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 9979 # var hexString = rgbNumber.toString(16); 9980 # var missingZeros = 6 - hexString.length; 9981 # var resultBuilder = ['#']; 9982 # for (var i = 0; i < missingZeros; i++) { 9983 # resultBuilder.push('0'); 9984 # } 9985 # resultBuilder.push(hexString); 9986 # return resultBuilder.join(''); 9987 # }; 9988 # 9989 # // ... 9990 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 9991 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 9992 # the final pixel color is defined by the equation: 9993 # 9994 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 9995 # 9996 # This means that a value of 1.0 corresponds to a solid color, whereas 9997 # a value of 0.0 corresponds to a completely transparent color. This 9998 # uses a wrapper message rather than a simple float scalar so that it is 9999 # possible to distinguish between a default value and the value being unset. 10000 # If omitted, this color object is to be rendered as a solid color 10001 # (as if the alpha value had been explicitly given with a value of 1.0). 10002 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 10003 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 10004 }, 10005 "width": 42, # The width of the border, in pixels. 10006 # Deprecated; the width is determined by the "style" field. 10007 "style": "A String", # The style of the border. 10008 }, 10009 "right": { # A border along a cell. # The right border of the cell. 10010 "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border. 10011 # for simplicity of conversion to/from color representations in various 10012 # languages over compactness; for example, the fields of this representation 10013 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 10014 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 10015 # method in iOS; and, with just a little work, it can be easily formatted into 10016 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 10017 # 10018 # Example (Java): 10019 # 10020 # import com.google.type.Color; 10021 # 10022 # // ... 10023 # public static java.awt.Color fromProto(Color protocolor) { 10024 # float alpha = protocolor.hasAlpha() 10025 # ? protocolor.getAlpha().getValue() 10026 # : 1.0; 10027 # 10028 # return new java.awt.Color( 10029 # protocolor.getRed(), 10030 # protocolor.getGreen(), 10031 # protocolor.getBlue(), 10032 # alpha); 10033 # } 10034 # 10035 # public static Color toProto(java.awt.Color color) { 10036 # float red = (float) color.getRed(); 10037 # float green = (float) color.getGreen(); 10038 # float blue = (float) color.getBlue(); 10039 # float denominator = 255.0; 10040 # Color.Builder resultBuilder = 10041 # Color 10042 # .newBuilder() 10043 # .setRed(red / denominator) 10044 # .setGreen(green / denominator) 10045 # .setBlue(blue / denominator); 10046 # int alpha = color.getAlpha(); 10047 # if (alpha != 255) { 10048 # result.setAlpha( 10049 # FloatValue 10050 # .newBuilder() 10051 # .setValue(((float) alpha) / denominator) 10052 # .build()); 10053 # } 10054 # return resultBuilder.build(); 10055 # } 10056 # // ... 10057 # 10058 # Example (iOS / Obj-C): 10059 # 10060 # // ... 10061 # static UIColor* fromProto(Color* protocolor) { 10062 # float red = [protocolor red]; 10063 # float green = [protocolor green]; 10064 # float blue = [protocolor blue]; 10065 # FloatValue* alpha_wrapper = [protocolor alpha]; 10066 # float alpha = 1.0; 10067 # if (alpha_wrapper != nil) { 10068 # alpha = [alpha_wrapper value]; 10069 # } 10070 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 10071 # } 10072 # 10073 # static Color* toProto(UIColor* color) { 10074 # CGFloat red, green, blue, alpha; 10075 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 10076 # return nil; 10077 # } 10078 # Color* result = [Color alloc] init]; 10079 # [result setRed:red]; 10080 # [result setGreen:green]; 10081 # [result setBlue:blue]; 10082 # if (alpha <= 0.9999) { 10083 # [result setAlpha:floatWrapperWithValue(alpha)]; 10084 # } 10085 # [result autorelease]; 10086 # return result; 10087 # } 10088 # // ... 10089 # 10090 # Example (JavaScript): 10091 # 10092 # // ... 10093 # 10094 # var protoToCssColor = function(rgb_color) { 10095 # var redFrac = rgb_color.red || 0.0; 10096 # var greenFrac = rgb_color.green || 0.0; 10097 # var blueFrac = rgb_color.blue || 0.0; 10098 # var red = Math.floor(redFrac * 255); 10099 # var green = Math.floor(greenFrac * 255); 10100 # var blue = Math.floor(blueFrac * 255); 10101 # 10102 # if (!('alpha' in rgb_color)) { 10103 # return rgbToCssColor_(red, green, blue); 10104 # } 10105 # 10106 # var alphaFrac = rgb_color.alpha.value || 0.0; 10107 # var rgbParams = [red, green, blue].join(','); 10108 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 10109 # }; 10110 # 10111 # var rgbToCssColor_ = function(red, green, blue) { 10112 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 10113 # var hexString = rgbNumber.toString(16); 10114 # var missingZeros = 6 - hexString.length; 10115 # var resultBuilder = ['#']; 10116 # for (var i = 0; i < missingZeros; i++) { 10117 # resultBuilder.push('0'); 10118 # } 10119 # resultBuilder.push(hexString); 10120 # return resultBuilder.join(''); 10121 # }; 10122 # 10123 # // ... 10124 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 10125 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 10126 # the final pixel color is defined by the equation: 10127 # 10128 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 10129 # 10130 # This means that a value of 1.0 corresponds to a solid color, whereas 10131 # a value of 0.0 corresponds to a completely transparent color. This 10132 # uses a wrapper message rather than a simple float scalar so that it is 10133 # possible to distinguish between a default value and the value being unset. 10134 # If omitted, this color object is to be rendered as a solid color 10135 # (as if the alpha value had been explicitly given with a value of 1.0). 10136 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 10137 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 10138 }, 10139 "width": 42, # The width of the border, in pixels. 10140 # Deprecated; the width is determined by the "style" field. 10141 "style": "A String", # The style of the border. 10142 }, 10143 "bottom": { # A border along a cell. # The bottom border of the cell. 10144 "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border. 10145 # for simplicity of conversion to/from color representations in various 10146 # languages over compactness; for example, the fields of this representation 10147 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 10148 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 10149 # method in iOS; and, with just a little work, it can be easily formatted into 10150 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 10151 # 10152 # Example (Java): 10153 # 10154 # import com.google.type.Color; 10155 # 10156 # // ... 10157 # public static java.awt.Color fromProto(Color protocolor) { 10158 # float alpha = protocolor.hasAlpha() 10159 # ? protocolor.getAlpha().getValue() 10160 # : 1.0; 10161 # 10162 # return new java.awt.Color( 10163 # protocolor.getRed(), 10164 # protocolor.getGreen(), 10165 # protocolor.getBlue(), 10166 # alpha); 10167 # } 10168 # 10169 # public static Color toProto(java.awt.Color color) { 10170 # float red = (float) color.getRed(); 10171 # float green = (float) color.getGreen(); 10172 # float blue = (float) color.getBlue(); 10173 # float denominator = 255.0; 10174 # Color.Builder resultBuilder = 10175 # Color 10176 # .newBuilder() 10177 # .setRed(red / denominator) 10178 # .setGreen(green / denominator) 10179 # .setBlue(blue / denominator); 10180 # int alpha = color.getAlpha(); 10181 # if (alpha != 255) { 10182 # result.setAlpha( 10183 # FloatValue 10184 # .newBuilder() 10185 # .setValue(((float) alpha) / denominator) 10186 # .build()); 10187 # } 10188 # return resultBuilder.build(); 10189 # } 10190 # // ... 10191 # 10192 # Example (iOS / Obj-C): 10193 # 10194 # // ... 10195 # static UIColor* fromProto(Color* protocolor) { 10196 # float red = [protocolor red]; 10197 # float green = [protocolor green]; 10198 # float blue = [protocolor blue]; 10199 # FloatValue* alpha_wrapper = [protocolor alpha]; 10200 # float alpha = 1.0; 10201 # if (alpha_wrapper != nil) { 10202 # alpha = [alpha_wrapper value]; 10203 # } 10204 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 10205 # } 10206 # 10207 # static Color* toProto(UIColor* color) { 10208 # CGFloat red, green, blue, alpha; 10209 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 10210 # return nil; 10211 # } 10212 # Color* result = [Color alloc] init]; 10213 # [result setRed:red]; 10214 # [result setGreen:green]; 10215 # [result setBlue:blue]; 10216 # if (alpha <= 0.9999) { 10217 # [result setAlpha:floatWrapperWithValue(alpha)]; 10218 # } 10219 # [result autorelease]; 10220 # return result; 10221 # } 10222 # // ... 10223 # 10224 # Example (JavaScript): 10225 # 10226 # // ... 10227 # 10228 # var protoToCssColor = function(rgb_color) { 10229 # var redFrac = rgb_color.red || 0.0; 10230 # var greenFrac = rgb_color.green || 0.0; 10231 # var blueFrac = rgb_color.blue || 0.0; 10232 # var red = Math.floor(redFrac * 255); 10233 # var green = Math.floor(greenFrac * 255); 10234 # var blue = Math.floor(blueFrac * 255); 10235 # 10236 # if (!('alpha' in rgb_color)) { 10237 # return rgbToCssColor_(red, green, blue); 10238 # } 10239 # 10240 # var alphaFrac = rgb_color.alpha.value || 0.0; 10241 # var rgbParams = [red, green, blue].join(','); 10242 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 10243 # }; 10244 # 10245 # var rgbToCssColor_ = function(red, green, blue) { 10246 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 10247 # var hexString = rgbNumber.toString(16); 10248 # var missingZeros = 6 - hexString.length; 10249 # var resultBuilder = ['#']; 10250 # for (var i = 0; i < missingZeros; i++) { 10251 # resultBuilder.push('0'); 10252 # } 10253 # resultBuilder.push(hexString); 10254 # return resultBuilder.join(''); 10255 # }; 10256 # 10257 # // ... 10258 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 10259 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 10260 # the final pixel color is defined by the equation: 10261 # 10262 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 10263 # 10264 # This means that a value of 1.0 corresponds to a solid color, whereas 10265 # a value of 0.0 corresponds to a completely transparent color. This 10266 # uses a wrapper message rather than a simple float scalar so that it is 10267 # possible to distinguish between a default value and the value being unset. 10268 # If omitted, this color object is to be rendered as a solid color 10269 # (as if the alpha value had been explicitly given with a value of 1.0). 10270 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 10271 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 10272 }, 10273 "width": 42, # The width of the border, in pixels. 10274 # Deprecated; the width is determined by the "style" field. 10275 "style": "A String", # The style of the border. 10276 }, 10277 "left": { # A border along a cell. # The left border of the cell. 10278 "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border. 10279 # for simplicity of conversion to/from color representations in various 10280 # languages over compactness; for example, the fields of this representation 10281 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 10282 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 10283 # method in iOS; and, with just a little work, it can be easily formatted into 10284 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 10285 # 10286 # Example (Java): 10287 # 10288 # import com.google.type.Color; 10289 # 10290 # // ... 10291 # public static java.awt.Color fromProto(Color protocolor) { 10292 # float alpha = protocolor.hasAlpha() 10293 # ? protocolor.getAlpha().getValue() 10294 # : 1.0; 10295 # 10296 # return new java.awt.Color( 10297 # protocolor.getRed(), 10298 # protocolor.getGreen(), 10299 # protocolor.getBlue(), 10300 # alpha); 10301 # } 10302 # 10303 # public static Color toProto(java.awt.Color color) { 10304 # float red = (float) color.getRed(); 10305 # float green = (float) color.getGreen(); 10306 # float blue = (float) color.getBlue(); 10307 # float denominator = 255.0; 10308 # Color.Builder resultBuilder = 10309 # Color 10310 # .newBuilder() 10311 # .setRed(red / denominator) 10312 # .setGreen(green / denominator) 10313 # .setBlue(blue / denominator); 10314 # int alpha = color.getAlpha(); 10315 # if (alpha != 255) { 10316 # result.setAlpha( 10317 # FloatValue 10318 # .newBuilder() 10319 # .setValue(((float) alpha) / denominator) 10320 # .build()); 10321 # } 10322 # return resultBuilder.build(); 10323 # } 10324 # // ... 10325 # 10326 # Example (iOS / Obj-C): 10327 # 10328 # // ... 10329 # static UIColor* fromProto(Color* protocolor) { 10330 # float red = [protocolor red]; 10331 # float green = [protocolor green]; 10332 # float blue = [protocolor blue]; 10333 # FloatValue* alpha_wrapper = [protocolor alpha]; 10334 # float alpha = 1.0; 10335 # if (alpha_wrapper != nil) { 10336 # alpha = [alpha_wrapper value]; 10337 # } 10338 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 10339 # } 10340 # 10341 # static Color* toProto(UIColor* color) { 10342 # CGFloat red, green, blue, alpha; 10343 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 10344 # return nil; 10345 # } 10346 # Color* result = [Color alloc] init]; 10347 # [result setRed:red]; 10348 # [result setGreen:green]; 10349 # [result setBlue:blue]; 10350 # if (alpha <= 0.9999) { 10351 # [result setAlpha:floatWrapperWithValue(alpha)]; 10352 # } 10353 # [result autorelease]; 10354 # return result; 10355 # } 10356 # // ... 10357 # 10358 # Example (JavaScript): 10359 # 10360 # // ... 10361 # 10362 # var protoToCssColor = function(rgb_color) { 10363 # var redFrac = rgb_color.red || 0.0; 10364 # var greenFrac = rgb_color.green || 0.0; 10365 # var blueFrac = rgb_color.blue || 0.0; 10366 # var red = Math.floor(redFrac * 255); 10367 # var green = Math.floor(greenFrac * 255); 10368 # var blue = Math.floor(blueFrac * 255); 10369 # 10370 # if (!('alpha' in rgb_color)) { 10371 # return rgbToCssColor_(red, green, blue); 10372 # } 10373 # 10374 # var alphaFrac = rgb_color.alpha.value || 0.0; 10375 # var rgbParams = [red, green, blue].join(','); 10376 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 10377 # }; 10378 # 10379 # var rgbToCssColor_ = function(red, green, blue) { 10380 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 10381 # var hexString = rgbNumber.toString(16); 10382 # var missingZeros = 6 - hexString.length; 10383 # var resultBuilder = ['#']; 10384 # for (var i = 0; i < missingZeros; i++) { 10385 # resultBuilder.push('0'); 10386 # } 10387 # resultBuilder.push(hexString); 10388 # return resultBuilder.join(''); 10389 # }; 10390 # 10391 # // ... 10392 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 10393 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 10394 # the final pixel color is defined by the equation: 10395 # 10396 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 10397 # 10398 # This means that a value of 1.0 corresponds to a solid color, whereas 10399 # a value of 0.0 corresponds to a completely transparent color. This 10400 # uses a wrapper message rather than a simple float scalar so that it is 10401 # possible to distinguish between a default value and the value being unset. 10402 # If omitted, this color object is to be rendered as a solid color 10403 # (as if the alpha value had been explicitly given with a value of 1.0). 10404 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 10405 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 10406 }, 10407 "width": 42, # The width of the border, in pixels. 10408 # Deprecated; the width is determined by the "style" field. 10409 "style": "A String", # The style of the border. 10410 }, 10411 }, 10412 "wrapStrategy": "A String", # The wrap strategy for the value in the cell. 10413 }, 10414 "userEnteredFormat": { # The format of a cell. # The format the user entered for the cell. 10415 # 10416 # When writing, the new format will be merged with the existing format. 10417 "numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user. 10418 "pattern": "A String", # Pattern string used for formatting. If not set, a default pattern based on 10419 # the user's locale will be used if necessary for the given type. 10420 # See the [Date and Number Formats guide](/sheets/api/guides/formats) for more 10421 # information about the supported patterns. 10422 "type": "A String", # The type of the number format. 10423 # When writing, this field must be set. 10424 }, 10425 "textDirection": "A String", # The direction of the text in the cell. 10426 "padding": { # The amount of padding around the cell, in pixels. # The padding of the cell. 10427 # When updating padding, every field must be specified. 10428 "top": 42, # The top padding of the cell. 10429 "right": 42, # The right padding of the cell. 10430 "bottom": 42, # The bottom padding of the cell. 10431 "left": 42, # The left padding of the cell. 10432 }, 10433 "verticalAlignment": "A String", # The vertical alignment of the value in the cell. 10434 "backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell. 10435 # for simplicity of conversion to/from color representations in various 10436 # languages over compactness; for example, the fields of this representation 10437 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 10438 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 10439 # method in iOS; and, with just a little work, it can be easily formatted into 10440 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 10441 # 10442 # Example (Java): 10443 # 10444 # import com.google.type.Color; 10445 # 10446 # // ... 10447 # public static java.awt.Color fromProto(Color protocolor) { 10448 # float alpha = protocolor.hasAlpha() 10449 # ? protocolor.getAlpha().getValue() 10450 # : 1.0; 10451 # 10452 # return new java.awt.Color( 10453 # protocolor.getRed(), 10454 # protocolor.getGreen(), 10455 # protocolor.getBlue(), 10456 # alpha); 10457 # } 10458 # 10459 # public static Color toProto(java.awt.Color color) { 10460 # float red = (float) color.getRed(); 10461 # float green = (float) color.getGreen(); 10462 # float blue = (float) color.getBlue(); 10463 # float denominator = 255.0; 10464 # Color.Builder resultBuilder = 10465 # Color 10466 # .newBuilder() 10467 # .setRed(red / denominator) 10468 # .setGreen(green / denominator) 10469 # .setBlue(blue / denominator); 10470 # int alpha = color.getAlpha(); 10471 # if (alpha != 255) { 10472 # result.setAlpha( 10473 # FloatValue 10474 # .newBuilder() 10475 # .setValue(((float) alpha) / denominator) 10476 # .build()); 10477 # } 10478 # return resultBuilder.build(); 10479 # } 10480 # // ... 10481 # 10482 # Example (iOS / Obj-C): 10483 # 10484 # // ... 10485 # static UIColor* fromProto(Color* protocolor) { 10486 # float red = [protocolor red]; 10487 # float green = [protocolor green]; 10488 # float blue = [protocolor blue]; 10489 # FloatValue* alpha_wrapper = [protocolor alpha]; 10490 # float alpha = 1.0; 10491 # if (alpha_wrapper != nil) { 10492 # alpha = [alpha_wrapper value]; 10493 # } 10494 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 10495 # } 10496 # 10497 # static Color* toProto(UIColor* color) { 10498 # CGFloat red, green, blue, alpha; 10499 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 10500 # return nil; 10501 # } 10502 # Color* result = [Color alloc] init]; 10503 # [result setRed:red]; 10504 # [result setGreen:green]; 10505 # [result setBlue:blue]; 10506 # if (alpha <= 0.9999) { 10507 # [result setAlpha:floatWrapperWithValue(alpha)]; 10508 # } 10509 # [result autorelease]; 10510 # return result; 10511 # } 10512 # // ... 10513 # 10514 # Example (JavaScript): 10515 # 10516 # // ... 10517 # 10518 # var protoToCssColor = function(rgb_color) { 10519 # var redFrac = rgb_color.red || 0.0; 10520 # var greenFrac = rgb_color.green || 0.0; 10521 # var blueFrac = rgb_color.blue || 0.0; 10522 # var red = Math.floor(redFrac * 255); 10523 # var green = Math.floor(greenFrac * 255); 10524 # var blue = Math.floor(blueFrac * 255); 10525 # 10526 # if (!('alpha' in rgb_color)) { 10527 # return rgbToCssColor_(red, green, blue); 10528 # } 10529 # 10530 # var alphaFrac = rgb_color.alpha.value || 0.0; 10531 # var rgbParams = [red, green, blue].join(','); 10532 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 10533 # }; 10534 # 10535 # var rgbToCssColor_ = function(red, green, blue) { 10536 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 10537 # var hexString = rgbNumber.toString(16); 10538 # var missingZeros = 6 - hexString.length; 10539 # var resultBuilder = ['#']; 10540 # for (var i = 0; i < missingZeros; i++) { 10541 # resultBuilder.push('0'); 10542 # } 10543 # resultBuilder.push(hexString); 10544 # return resultBuilder.join(''); 10545 # }; 10546 # 10547 # // ... 10548 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 10549 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 10550 # the final pixel color is defined by the equation: 10551 # 10552 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 10553 # 10554 # This means that a value of 1.0 corresponds to a solid color, whereas 10555 # a value of 0.0 corresponds to a completely transparent color. This 10556 # uses a wrapper message rather than a simple float scalar so that it is 10557 # possible to distinguish between a default value and the value being unset. 10558 # If omitted, this color object is to be rendered as a solid color 10559 # (as if the alpha value had been explicitly given with a value of 1.0). 10560 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 10561 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 10562 }, 10563 "horizontalAlignment": "A String", # The horizontal alignment of the value in the cell. 10564 "textFormat": { # The format of a run of text in a cell. # The format of the text in the cell (unless overridden by a format run). 10565 # Absent values indicate that the field isn't specified. 10566 "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text. 10567 # for simplicity of conversion to/from color representations in various 10568 # languages over compactness; for example, the fields of this representation 10569 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 10570 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 10571 # method in iOS; and, with just a little work, it can be easily formatted into 10572 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 10573 # 10574 # Example (Java): 10575 # 10576 # import com.google.type.Color; 10577 # 10578 # // ... 10579 # public static java.awt.Color fromProto(Color protocolor) { 10580 # float alpha = protocolor.hasAlpha() 10581 # ? protocolor.getAlpha().getValue() 10582 # : 1.0; 10583 # 10584 # return new java.awt.Color( 10585 # protocolor.getRed(), 10586 # protocolor.getGreen(), 10587 # protocolor.getBlue(), 10588 # alpha); 10589 # } 10590 # 10591 # public static Color toProto(java.awt.Color color) { 10592 # float red = (float) color.getRed(); 10593 # float green = (float) color.getGreen(); 10594 # float blue = (float) color.getBlue(); 10595 # float denominator = 255.0; 10596 # Color.Builder resultBuilder = 10597 # Color 10598 # .newBuilder() 10599 # .setRed(red / denominator) 10600 # .setGreen(green / denominator) 10601 # .setBlue(blue / denominator); 10602 # int alpha = color.getAlpha(); 10603 # if (alpha != 255) { 10604 # result.setAlpha( 10605 # FloatValue 10606 # .newBuilder() 10607 # .setValue(((float) alpha) / denominator) 10608 # .build()); 10609 # } 10610 # return resultBuilder.build(); 10611 # } 10612 # // ... 10613 # 10614 # Example (iOS / Obj-C): 10615 # 10616 # // ... 10617 # static UIColor* fromProto(Color* protocolor) { 10618 # float red = [protocolor red]; 10619 # float green = [protocolor green]; 10620 # float blue = [protocolor blue]; 10621 # FloatValue* alpha_wrapper = [protocolor alpha]; 10622 # float alpha = 1.0; 10623 # if (alpha_wrapper != nil) { 10624 # alpha = [alpha_wrapper value]; 10625 # } 10626 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 10627 # } 10628 # 10629 # static Color* toProto(UIColor* color) { 10630 # CGFloat red, green, blue, alpha; 10631 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 10632 # return nil; 10633 # } 10634 # Color* result = [Color alloc] init]; 10635 # [result setRed:red]; 10636 # [result setGreen:green]; 10637 # [result setBlue:blue]; 10638 # if (alpha <= 0.9999) { 10639 # [result setAlpha:floatWrapperWithValue(alpha)]; 10640 # } 10641 # [result autorelease]; 10642 # return result; 10643 # } 10644 # // ... 10645 # 10646 # Example (JavaScript): 10647 # 10648 # // ... 10649 # 10650 # var protoToCssColor = function(rgb_color) { 10651 # var redFrac = rgb_color.red || 0.0; 10652 # var greenFrac = rgb_color.green || 0.0; 10653 # var blueFrac = rgb_color.blue || 0.0; 10654 # var red = Math.floor(redFrac * 255); 10655 # var green = Math.floor(greenFrac * 255); 10656 # var blue = Math.floor(blueFrac * 255); 10657 # 10658 # if (!('alpha' in rgb_color)) { 10659 # return rgbToCssColor_(red, green, blue); 10660 # } 10661 # 10662 # var alphaFrac = rgb_color.alpha.value || 0.0; 10663 # var rgbParams = [red, green, blue].join(','); 10664 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 10665 # }; 10666 # 10667 # var rgbToCssColor_ = function(red, green, blue) { 10668 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 10669 # var hexString = rgbNumber.toString(16); 10670 # var missingZeros = 6 - hexString.length; 10671 # var resultBuilder = ['#']; 10672 # for (var i = 0; i < missingZeros; i++) { 10673 # resultBuilder.push('0'); 10674 # } 10675 # resultBuilder.push(hexString); 10676 # return resultBuilder.join(''); 10677 # }; 10678 # 10679 # // ... 10680 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 10681 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 10682 # the final pixel color is defined by the equation: 10683 # 10684 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 10685 # 10686 # This means that a value of 1.0 corresponds to a solid color, whereas 10687 # a value of 0.0 corresponds to a completely transparent color. This 10688 # uses a wrapper message rather than a simple float scalar so that it is 10689 # possible to distinguish between a default value and the value being unset. 10690 # If omitted, this color object is to be rendered as a solid color 10691 # (as if the alpha value had been explicitly given with a value of 1.0). 10692 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 10693 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 10694 }, 10695 "bold": True or False, # True if the text is bold. 10696 "strikethrough": True or False, # True if the text has a strikethrough. 10697 "fontFamily": "A String", # The font family. 10698 "fontSize": 42, # The size of the font. 10699 "italic": True or False, # True if the text is italicized. 10700 "underline": True or False, # True if the text is underlined. 10701 }, 10702 "textRotation": { # The rotation applied to text in a cell. # The rotation applied to text in a cell 10703 "angle": 42, # The angle between the standard orientation and the desired orientation. 10704 # Measured in degrees. Valid values are between -90 and 90. Positive 10705 # angles are angled upwards, negative are angled downwards. 10706 # 10707 # Note: For LTR text direction positive angles are in the counterclockwise 10708 # direction, whereas for RTL they are in the clockwise direction 10709 "vertical": True or False, # If true, text reads top to bottom, but the orientation of individual 10710 # characters is unchanged. 10711 # For example: 10712 # 10713 # | V | 10714 # | e | 10715 # | r | 10716 # | t | 10717 # | i | 10718 # | c | 10719 # | a | 10720 # | l | 10721 }, 10722 "hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell. 10723 "borders": { # The borders of the cell. # The borders of the cell. 10724 "top": { # A border along a cell. # The top border of the cell. 10725 "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border. 10726 # for simplicity of conversion to/from color representations in various 10727 # languages over compactness; for example, the fields of this representation 10728 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 10729 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 10730 # method in iOS; and, with just a little work, it can be easily formatted into 10731 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 10732 # 10733 # Example (Java): 10734 # 10735 # import com.google.type.Color; 10736 # 10737 # // ... 10738 # public static java.awt.Color fromProto(Color protocolor) { 10739 # float alpha = protocolor.hasAlpha() 10740 # ? protocolor.getAlpha().getValue() 10741 # : 1.0; 10742 # 10743 # return new java.awt.Color( 10744 # protocolor.getRed(), 10745 # protocolor.getGreen(), 10746 # protocolor.getBlue(), 10747 # alpha); 10748 # } 10749 # 10750 # public static Color toProto(java.awt.Color color) { 10751 # float red = (float) color.getRed(); 10752 # float green = (float) color.getGreen(); 10753 # float blue = (float) color.getBlue(); 10754 # float denominator = 255.0; 10755 # Color.Builder resultBuilder = 10756 # Color 10757 # .newBuilder() 10758 # .setRed(red / denominator) 10759 # .setGreen(green / denominator) 10760 # .setBlue(blue / denominator); 10761 # int alpha = color.getAlpha(); 10762 # if (alpha != 255) { 10763 # result.setAlpha( 10764 # FloatValue 10765 # .newBuilder() 10766 # .setValue(((float) alpha) / denominator) 10767 # .build()); 10768 # } 10769 # return resultBuilder.build(); 10770 # } 10771 # // ... 10772 # 10773 # Example (iOS / Obj-C): 10774 # 10775 # // ... 10776 # static UIColor* fromProto(Color* protocolor) { 10777 # float red = [protocolor red]; 10778 # float green = [protocolor green]; 10779 # float blue = [protocolor blue]; 10780 # FloatValue* alpha_wrapper = [protocolor alpha]; 10781 # float alpha = 1.0; 10782 # if (alpha_wrapper != nil) { 10783 # alpha = [alpha_wrapper value]; 10784 # } 10785 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 10786 # } 10787 # 10788 # static Color* toProto(UIColor* color) { 10789 # CGFloat red, green, blue, alpha; 10790 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 10791 # return nil; 10792 # } 10793 # Color* result = [Color alloc] init]; 10794 # [result setRed:red]; 10795 # [result setGreen:green]; 10796 # [result setBlue:blue]; 10797 # if (alpha <= 0.9999) { 10798 # [result setAlpha:floatWrapperWithValue(alpha)]; 10799 # } 10800 # [result autorelease]; 10801 # return result; 10802 # } 10803 # // ... 10804 # 10805 # Example (JavaScript): 10806 # 10807 # // ... 10808 # 10809 # var protoToCssColor = function(rgb_color) { 10810 # var redFrac = rgb_color.red || 0.0; 10811 # var greenFrac = rgb_color.green || 0.0; 10812 # var blueFrac = rgb_color.blue || 0.0; 10813 # var red = Math.floor(redFrac * 255); 10814 # var green = Math.floor(greenFrac * 255); 10815 # var blue = Math.floor(blueFrac * 255); 10816 # 10817 # if (!('alpha' in rgb_color)) { 10818 # return rgbToCssColor_(red, green, blue); 10819 # } 10820 # 10821 # var alphaFrac = rgb_color.alpha.value || 0.0; 10822 # var rgbParams = [red, green, blue].join(','); 10823 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 10824 # }; 10825 # 10826 # var rgbToCssColor_ = function(red, green, blue) { 10827 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 10828 # var hexString = rgbNumber.toString(16); 10829 # var missingZeros = 6 - hexString.length; 10830 # var resultBuilder = ['#']; 10831 # for (var i = 0; i < missingZeros; i++) { 10832 # resultBuilder.push('0'); 10833 # } 10834 # resultBuilder.push(hexString); 10835 # return resultBuilder.join(''); 10836 # }; 10837 # 10838 # // ... 10839 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 10840 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 10841 # the final pixel color is defined by the equation: 10842 # 10843 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 10844 # 10845 # This means that a value of 1.0 corresponds to a solid color, whereas 10846 # a value of 0.0 corresponds to a completely transparent color. This 10847 # uses a wrapper message rather than a simple float scalar so that it is 10848 # possible to distinguish between a default value and the value being unset. 10849 # If omitted, this color object is to be rendered as a solid color 10850 # (as if the alpha value had been explicitly given with a value of 1.0). 10851 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 10852 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 10853 }, 10854 "width": 42, # The width of the border, in pixels. 10855 # Deprecated; the width is determined by the "style" field. 10856 "style": "A String", # The style of the border. 10857 }, 10858 "right": { # A border along a cell. # The right border of the cell. 10859 "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border. 10860 # for simplicity of conversion to/from color representations in various 10861 # languages over compactness; for example, the fields of this representation 10862 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 10863 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 10864 # method in iOS; and, with just a little work, it can be easily formatted into 10865 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 10866 # 10867 # Example (Java): 10868 # 10869 # import com.google.type.Color; 10870 # 10871 # // ... 10872 # public static java.awt.Color fromProto(Color protocolor) { 10873 # float alpha = protocolor.hasAlpha() 10874 # ? protocolor.getAlpha().getValue() 10875 # : 1.0; 10876 # 10877 # return new java.awt.Color( 10878 # protocolor.getRed(), 10879 # protocolor.getGreen(), 10880 # protocolor.getBlue(), 10881 # alpha); 10882 # } 10883 # 10884 # public static Color toProto(java.awt.Color color) { 10885 # float red = (float) color.getRed(); 10886 # float green = (float) color.getGreen(); 10887 # float blue = (float) color.getBlue(); 10888 # float denominator = 255.0; 10889 # Color.Builder resultBuilder = 10890 # Color 10891 # .newBuilder() 10892 # .setRed(red / denominator) 10893 # .setGreen(green / denominator) 10894 # .setBlue(blue / denominator); 10895 # int alpha = color.getAlpha(); 10896 # if (alpha != 255) { 10897 # result.setAlpha( 10898 # FloatValue 10899 # .newBuilder() 10900 # .setValue(((float) alpha) / denominator) 10901 # .build()); 10902 # } 10903 # return resultBuilder.build(); 10904 # } 10905 # // ... 10906 # 10907 # Example (iOS / Obj-C): 10908 # 10909 # // ... 10910 # static UIColor* fromProto(Color* protocolor) { 10911 # float red = [protocolor red]; 10912 # float green = [protocolor green]; 10913 # float blue = [protocolor blue]; 10914 # FloatValue* alpha_wrapper = [protocolor alpha]; 10915 # float alpha = 1.0; 10916 # if (alpha_wrapper != nil) { 10917 # alpha = [alpha_wrapper value]; 10918 # } 10919 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 10920 # } 10921 # 10922 # static Color* toProto(UIColor* color) { 10923 # CGFloat red, green, blue, alpha; 10924 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 10925 # return nil; 10926 # } 10927 # Color* result = [Color alloc] init]; 10928 # [result setRed:red]; 10929 # [result setGreen:green]; 10930 # [result setBlue:blue]; 10931 # if (alpha <= 0.9999) { 10932 # [result setAlpha:floatWrapperWithValue(alpha)]; 10933 # } 10934 # [result autorelease]; 10935 # return result; 10936 # } 10937 # // ... 10938 # 10939 # Example (JavaScript): 10940 # 10941 # // ... 10942 # 10943 # var protoToCssColor = function(rgb_color) { 10944 # var redFrac = rgb_color.red || 0.0; 10945 # var greenFrac = rgb_color.green || 0.0; 10946 # var blueFrac = rgb_color.blue || 0.0; 10947 # var red = Math.floor(redFrac * 255); 10948 # var green = Math.floor(greenFrac * 255); 10949 # var blue = Math.floor(blueFrac * 255); 10950 # 10951 # if (!('alpha' in rgb_color)) { 10952 # return rgbToCssColor_(red, green, blue); 10953 # } 10954 # 10955 # var alphaFrac = rgb_color.alpha.value || 0.0; 10956 # var rgbParams = [red, green, blue].join(','); 10957 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 10958 # }; 10959 # 10960 # var rgbToCssColor_ = function(red, green, blue) { 10961 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 10962 # var hexString = rgbNumber.toString(16); 10963 # var missingZeros = 6 - hexString.length; 10964 # var resultBuilder = ['#']; 10965 # for (var i = 0; i < missingZeros; i++) { 10966 # resultBuilder.push('0'); 10967 # } 10968 # resultBuilder.push(hexString); 10969 # return resultBuilder.join(''); 10970 # }; 10971 # 10972 # // ... 10973 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 10974 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 10975 # the final pixel color is defined by the equation: 10976 # 10977 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 10978 # 10979 # This means that a value of 1.0 corresponds to a solid color, whereas 10980 # a value of 0.0 corresponds to a completely transparent color. This 10981 # uses a wrapper message rather than a simple float scalar so that it is 10982 # possible to distinguish between a default value and the value being unset. 10983 # If omitted, this color object is to be rendered as a solid color 10984 # (as if the alpha value had been explicitly given with a value of 1.0). 10985 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 10986 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 10987 }, 10988 "width": 42, # The width of the border, in pixels. 10989 # Deprecated; the width is determined by the "style" field. 10990 "style": "A String", # The style of the border. 10991 }, 10992 "bottom": { # A border along a cell. # The bottom border of the cell. 10993 "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border. 10994 # for simplicity of conversion to/from color representations in various 10995 # languages over compactness; for example, the fields of this representation 10996 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 10997 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 10998 # method in iOS; and, with just a little work, it can be easily formatted into 10999 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 11000 # 11001 # Example (Java): 11002 # 11003 # import com.google.type.Color; 11004 # 11005 # // ... 11006 # public static java.awt.Color fromProto(Color protocolor) { 11007 # float alpha = protocolor.hasAlpha() 11008 # ? protocolor.getAlpha().getValue() 11009 # : 1.0; 11010 # 11011 # return new java.awt.Color( 11012 # protocolor.getRed(), 11013 # protocolor.getGreen(), 11014 # protocolor.getBlue(), 11015 # alpha); 11016 # } 11017 # 11018 # public static Color toProto(java.awt.Color color) { 11019 # float red = (float) color.getRed(); 11020 # float green = (float) color.getGreen(); 11021 # float blue = (float) color.getBlue(); 11022 # float denominator = 255.0; 11023 # Color.Builder resultBuilder = 11024 # Color 11025 # .newBuilder() 11026 # .setRed(red / denominator) 11027 # .setGreen(green / denominator) 11028 # .setBlue(blue / denominator); 11029 # int alpha = color.getAlpha(); 11030 # if (alpha != 255) { 11031 # result.setAlpha( 11032 # FloatValue 11033 # .newBuilder() 11034 # .setValue(((float) alpha) / denominator) 11035 # .build()); 11036 # } 11037 # return resultBuilder.build(); 11038 # } 11039 # // ... 11040 # 11041 # Example (iOS / Obj-C): 11042 # 11043 # // ... 11044 # static UIColor* fromProto(Color* protocolor) { 11045 # float red = [protocolor red]; 11046 # float green = [protocolor green]; 11047 # float blue = [protocolor blue]; 11048 # FloatValue* alpha_wrapper = [protocolor alpha]; 11049 # float alpha = 1.0; 11050 # if (alpha_wrapper != nil) { 11051 # alpha = [alpha_wrapper value]; 11052 # } 11053 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 11054 # } 11055 # 11056 # static Color* toProto(UIColor* color) { 11057 # CGFloat red, green, blue, alpha; 11058 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 11059 # return nil; 11060 # } 11061 # Color* result = [Color alloc] init]; 11062 # [result setRed:red]; 11063 # [result setGreen:green]; 11064 # [result setBlue:blue]; 11065 # if (alpha <= 0.9999) { 11066 # [result setAlpha:floatWrapperWithValue(alpha)]; 11067 # } 11068 # [result autorelease]; 11069 # return result; 11070 # } 11071 # // ... 11072 # 11073 # Example (JavaScript): 11074 # 11075 # // ... 11076 # 11077 # var protoToCssColor = function(rgb_color) { 11078 # var redFrac = rgb_color.red || 0.0; 11079 # var greenFrac = rgb_color.green || 0.0; 11080 # var blueFrac = rgb_color.blue || 0.0; 11081 # var red = Math.floor(redFrac * 255); 11082 # var green = Math.floor(greenFrac * 255); 11083 # var blue = Math.floor(blueFrac * 255); 11084 # 11085 # if (!('alpha' in rgb_color)) { 11086 # return rgbToCssColor_(red, green, blue); 11087 # } 11088 # 11089 # var alphaFrac = rgb_color.alpha.value || 0.0; 11090 # var rgbParams = [red, green, blue].join(','); 11091 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 11092 # }; 11093 # 11094 # var rgbToCssColor_ = function(red, green, blue) { 11095 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 11096 # var hexString = rgbNumber.toString(16); 11097 # var missingZeros = 6 - hexString.length; 11098 # var resultBuilder = ['#']; 11099 # for (var i = 0; i < missingZeros; i++) { 11100 # resultBuilder.push('0'); 11101 # } 11102 # resultBuilder.push(hexString); 11103 # return resultBuilder.join(''); 11104 # }; 11105 # 11106 # // ... 11107 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 11108 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 11109 # the final pixel color is defined by the equation: 11110 # 11111 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 11112 # 11113 # This means that a value of 1.0 corresponds to a solid color, whereas 11114 # a value of 0.0 corresponds to a completely transparent color. This 11115 # uses a wrapper message rather than a simple float scalar so that it is 11116 # possible to distinguish between a default value and the value being unset. 11117 # If omitted, this color object is to be rendered as a solid color 11118 # (as if the alpha value had been explicitly given with a value of 1.0). 11119 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 11120 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 11121 }, 11122 "width": 42, # The width of the border, in pixels. 11123 # Deprecated; the width is determined by the "style" field. 11124 "style": "A String", # The style of the border. 11125 }, 11126 "left": { # A border along a cell. # The left border of the cell. 11127 "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border. 11128 # for simplicity of conversion to/from color representations in various 11129 # languages over compactness; for example, the fields of this representation 11130 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 11131 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 11132 # method in iOS; and, with just a little work, it can be easily formatted into 11133 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 11134 # 11135 # Example (Java): 11136 # 11137 # import com.google.type.Color; 11138 # 11139 # // ... 11140 # public static java.awt.Color fromProto(Color protocolor) { 11141 # float alpha = protocolor.hasAlpha() 11142 # ? protocolor.getAlpha().getValue() 11143 # : 1.0; 11144 # 11145 # return new java.awt.Color( 11146 # protocolor.getRed(), 11147 # protocolor.getGreen(), 11148 # protocolor.getBlue(), 11149 # alpha); 11150 # } 11151 # 11152 # public static Color toProto(java.awt.Color color) { 11153 # float red = (float) color.getRed(); 11154 # float green = (float) color.getGreen(); 11155 # float blue = (float) color.getBlue(); 11156 # float denominator = 255.0; 11157 # Color.Builder resultBuilder = 11158 # Color 11159 # .newBuilder() 11160 # .setRed(red / denominator) 11161 # .setGreen(green / denominator) 11162 # .setBlue(blue / denominator); 11163 # int alpha = color.getAlpha(); 11164 # if (alpha != 255) { 11165 # result.setAlpha( 11166 # FloatValue 11167 # .newBuilder() 11168 # .setValue(((float) alpha) / denominator) 11169 # .build()); 11170 # } 11171 # return resultBuilder.build(); 11172 # } 11173 # // ... 11174 # 11175 # Example (iOS / Obj-C): 11176 # 11177 # // ... 11178 # static UIColor* fromProto(Color* protocolor) { 11179 # float red = [protocolor red]; 11180 # float green = [protocolor green]; 11181 # float blue = [protocolor blue]; 11182 # FloatValue* alpha_wrapper = [protocolor alpha]; 11183 # float alpha = 1.0; 11184 # if (alpha_wrapper != nil) { 11185 # alpha = [alpha_wrapper value]; 11186 # } 11187 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 11188 # } 11189 # 11190 # static Color* toProto(UIColor* color) { 11191 # CGFloat red, green, blue, alpha; 11192 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 11193 # return nil; 11194 # } 11195 # Color* result = [Color alloc] init]; 11196 # [result setRed:red]; 11197 # [result setGreen:green]; 11198 # [result setBlue:blue]; 11199 # if (alpha <= 0.9999) { 11200 # [result setAlpha:floatWrapperWithValue(alpha)]; 11201 # } 11202 # [result autorelease]; 11203 # return result; 11204 # } 11205 # // ... 11206 # 11207 # Example (JavaScript): 11208 # 11209 # // ... 11210 # 11211 # var protoToCssColor = function(rgb_color) { 11212 # var redFrac = rgb_color.red || 0.0; 11213 # var greenFrac = rgb_color.green || 0.0; 11214 # var blueFrac = rgb_color.blue || 0.0; 11215 # var red = Math.floor(redFrac * 255); 11216 # var green = Math.floor(greenFrac * 255); 11217 # var blue = Math.floor(blueFrac * 255); 11218 # 11219 # if (!('alpha' in rgb_color)) { 11220 # return rgbToCssColor_(red, green, blue); 11221 # } 11222 # 11223 # var alphaFrac = rgb_color.alpha.value || 0.0; 11224 # var rgbParams = [red, green, blue].join(','); 11225 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 11226 # }; 11227 # 11228 # var rgbToCssColor_ = function(red, green, blue) { 11229 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 11230 # var hexString = rgbNumber.toString(16); 11231 # var missingZeros = 6 - hexString.length; 11232 # var resultBuilder = ['#']; 11233 # for (var i = 0; i < missingZeros; i++) { 11234 # resultBuilder.push('0'); 11235 # } 11236 # resultBuilder.push(hexString); 11237 # return resultBuilder.join(''); 11238 # }; 11239 # 11240 # // ... 11241 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 11242 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 11243 # the final pixel color is defined by the equation: 11244 # 11245 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 11246 # 11247 # This means that a value of 1.0 corresponds to a solid color, whereas 11248 # a value of 0.0 corresponds to a completely transparent color. This 11249 # uses a wrapper message rather than a simple float scalar so that it is 11250 # possible to distinguish between a default value and the value being unset. 11251 # If omitted, this color object is to be rendered as a solid color 11252 # (as if the alpha value had been explicitly given with a value of 1.0). 11253 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 11254 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 11255 }, 11256 "width": 42, # The width of the border, in pixels. 11257 # Deprecated; the width is determined by the "style" field. 11258 "style": "A String", # The style of the border. 11259 }, 11260 }, 11261 "wrapStrategy": "A String", # The wrap strategy for the value in the cell. 11262 }, 11263 "dataValidation": { # A data validation rule. # A data validation rule on the cell, if any. 11264 # 11265 # When writing, the new data validation rule will overwrite any prior rule. 11266 "showCustomUi": True or False, # True if the UI should be customized based on the kind of condition. 11267 # If true, "List" conditions will show a dropdown. 11268 "strict": True or False, # True if invalid data should be rejected. 11269 "inputMessage": "A String", # A message to show the user when adding data to the cell. 11270 "condition": { # A condition that can evaluate to true or false. # The condition that data in the cell must match. 11271 # BooleanConditions are used by conditional formatting, 11272 # data validation, and the criteria in filters. 11273 "values": [ # The values of the condition. The number of supported values depends 11274 # on the condition type. Some support zero values, 11275 # others one or two values, 11276 # and ConditionType.ONE_OF_LIST supports an arbitrary number of values. 11277 { # The value of the condition. 11278 "relativeDate": "A String", # A relative date (based on the current date). 11279 # Valid only if the type is 11280 # DATE_BEFORE, 11281 # DATE_AFTER, 11282 # DATE_ON_OR_BEFORE or 11283 # DATE_ON_OR_AFTER. 11284 # 11285 # Relative dates are not supported in data validation. 11286 # They are supported only in conditional formatting and 11287 # conditional filters. 11288 "userEnteredValue": "A String", # A value the condition is based on. 11289 # The value will be parsed as if the user typed into a cell. 11290 # Formulas are supported (and must begin with an `=`). 11291 }, 11292 ], 11293 "type": "A String", # The type of condition. 11294 }, 11295 }, 11296 "textFormatRuns": [ # Runs of rich text applied to subsections of the cell. Runs are only valid 11297 # on user entered strings, not formulas, bools, or numbers. 11298 # Runs start at specific indexes in the text and continue until the next 11299 # run. Properties of a run will continue unless explicitly changed 11300 # in a subsequent run (and properties of the first run will continue 11301 # the properties of the cell unless explicitly changed). 11302 # 11303 # When writing, the new runs will overwrite any prior runs. When writing a 11304 # new user_entered_value, previous runs will be erased. 11305 { # A run of a text format. The format of this run continues until the start 11306 # index of the next run. 11307 # When updating, all fields must be set. 11308 "startIndex": 42, # The character index where this run starts. 11309 "format": { # The format of a run of text in a cell. # The format of this run. Absent values inherit the cell's format. 11310 # Absent values indicate that the field isn't specified. 11311 "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text. 11312 # for simplicity of conversion to/from color representations in various 11313 # languages over compactness; for example, the fields of this representation 11314 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 11315 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 11316 # method in iOS; and, with just a little work, it can be easily formatted into 11317 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 11318 # 11319 # Example (Java): 11320 # 11321 # import com.google.type.Color; 11322 # 11323 # // ... 11324 # public static java.awt.Color fromProto(Color protocolor) { 11325 # float alpha = protocolor.hasAlpha() 11326 # ? protocolor.getAlpha().getValue() 11327 # : 1.0; 11328 # 11329 # return new java.awt.Color( 11330 # protocolor.getRed(), 11331 # protocolor.getGreen(), 11332 # protocolor.getBlue(), 11333 # alpha); 11334 # } 11335 # 11336 # public static Color toProto(java.awt.Color color) { 11337 # float red = (float) color.getRed(); 11338 # float green = (float) color.getGreen(); 11339 # float blue = (float) color.getBlue(); 11340 # float denominator = 255.0; 11341 # Color.Builder resultBuilder = 11342 # Color 11343 # .newBuilder() 11344 # .setRed(red / denominator) 11345 # .setGreen(green / denominator) 11346 # .setBlue(blue / denominator); 11347 # int alpha = color.getAlpha(); 11348 # if (alpha != 255) { 11349 # result.setAlpha( 11350 # FloatValue 11351 # .newBuilder() 11352 # .setValue(((float) alpha) / denominator) 11353 # .build()); 11354 # } 11355 # return resultBuilder.build(); 11356 # } 11357 # // ... 11358 # 11359 # Example (iOS / Obj-C): 11360 # 11361 # // ... 11362 # static UIColor* fromProto(Color* protocolor) { 11363 # float red = [protocolor red]; 11364 # float green = [protocolor green]; 11365 # float blue = [protocolor blue]; 11366 # FloatValue* alpha_wrapper = [protocolor alpha]; 11367 # float alpha = 1.0; 11368 # if (alpha_wrapper != nil) { 11369 # alpha = [alpha_wrapper value]; 11370 # } 11371 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 11372 # } 11373 # 11374 # static Color* toProto(UIColor* color) { 11375 # CGFloat red, green, blue, alpha; 11376 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 11377 # return nil; 11378 # } 11379 # Color* result = [Color alloc] init]; 11380 # [result setRed:red]; 11381 # [result setGreen:green]; 11382 # [result setBlue:blue]; 11383 # if (alpha <= 0.9999) { 11384 # [result setAlpha:floatWrapperWithValue(alpha)]; 11385 # } 11386 # [result autorelease]; 11387 # return result; 11388 # } 11389 # // ... 11390 # 11391 # Example (JavaScript): 11392 # 11393 # // ... 11394 # 11395 # var protoToCssColor = function(rgb_color) { 11396 # var redFrac = rgb_color.red || 0.0; 11397 # var greenFrac = rgb_color.green || 0.0; 11398 # var blueFrac = rgb_color.blue || 0.0; 11399 # var red = Math.floor(redFrac * 255); 11400 # var green = Math.floor(greenFrac * 255); 11401 # var blue = Math.floor(blueFrac * 255); 11402 # 11403 # if (!('alpha' in rgb_color)) { 11404 # return rgbToCssColor_(red, green, blue); 11405 # } 11406 # 11407 # var alphaFrac = rgb_color.alpha.value || 0.0; 11408 # var rgbParams = [red, green, blue].join(','); 11409 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 11410 # }; 11411 # 11412 # var rgbToCssColor_ = function(red, green, blue) { 11413 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 11414 # var hexString = rgbNumber.toString(16); 11415 # var missingZeros = 6 - hexString.length; 11416 # var resultBuilder = ['#']; 11417 # for (var i = 0; i < missingZeros; i++) { 11418 # resultBuilder.push('0'); 11419 # } 11420 # resultBuilder.push(hexString); 11421 # return resultBuilder.join(''); 11422 # }; 11423 # 11424 # // ... 11425 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 11426 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 11427 # the final pixel color is defined by the equation: 11428 # 11429 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 11430 # 11431 # This means that a value of 1.0 corresponds to a solid color, whereas 11432 # a value of 0.0 corresponds to a completely transparent color. This 11433 # uses a wrapper message rather than a simple float scalar so that it is 11434 # possible to distinguish between a default value and the value being unset. 11435 # If omitted, this color object is to be rendered as a solid color 11436 # (as if the alpha value had been explicitly given with a value of 1.0). 11437 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 11438 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 11439 }, 11440 "bold": True or False, # True if the text is bold. 11441 "strikethrough": True or False, # True if the text has a strikethrough. 11442 "fontFamily": "A String", # The font family. 11443 "fontSize": 42, # The size of the font. 11444 "italic": True or False, # True if the text is italicized. 11445 "underline": True or False, # True if the text is underlined. 11446 }, 11447 }, 11448 ], 11449 }, 11450 ], 11451 }, 11452 ], 11453 "fields": "A String", # The fields of CellData that should be updated. 11454 # At least one field must be specified. 11455 # The root is the CellData; 'row.values.' should not be specified. 11456 # A single `"*"` can be used as short-hand for listing every field. 11457 }, 11458 "autoFill": { # Fills in more data based on existing data. # Automatically fills in more data based on existing data. 11459 "useAlternateSeries": True or False, # True if we should generate data with the "alternate" series. 11460 # This differs based on the type and amount of source data. 11461 "sourceAndDestination": { # A combination of a source range and how to extend that source. # The source and destination areas to autofill. 11462 # This explicitly lists the source of the autofill and where to 11463 # extend that data. 11464 "source": { # A range on a sheet. # The location of the data to use as the source of the autofill. 11465 # All indexes are zero-based. 11466 # Indexes are half open, e.g the start index is inclusive 11467 # and the end index is exclusive -- [start_index, end_index). 11468 # Missing indexes indicate the range is unbounded on that side. 11469 # 11470 # For example, if `"Sheet1"` is sheet ID 0, then: 11471 # 11472 # `Sheet1!A1:A1 == sheet_id: 0, 11473 # start_row_index: 0, end_row_index: 1, 11474 # start_column_index: 0, end_column_index: 1` 11475 # 11476 # `Sheet1!A3:B4 == sheet_id: 0, 11477 # start_row_index: 2, end_row_index: 4, 11478 # start_column_index: 0, end_column_index: 2` 11479 # 11480 # `Sheet1!A:B == sheet_id: 0, 11481 # start_column_index: 0, end_column_index: 2` 11482 # 11483 # `Sheet1!A5:B == sheet_id: 0, 11484 # start_row_index: 4, 11485 # start_column_index: 0, end_column_index: 2` 11486 # 11487 # `Sheet1 == sheet_id:0` 11488 # 11489 # The start index must always be less than or equal to the end index. 11490 # If the start index equals the end index, then the range is empty. 11491 # Empty ranges are typically not meaningful and are usually rendered in the 11492 # UI as `#REF!`. 11493 "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded. 11494 "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded. 11495 "sheetId": 42, # The sheet this range is on. 11496 "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded. 11497 "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded. 11498 }, 11499 "dimension": "A String", # The dimension that data should be filled into. 11500 "fillLength": 42, # The number of rows or columns that data should be filled into. 11501 # Positive numbers expand beyond the last row or last column 11502 # of the source. Negative numbers expand before the first row 11503 # or first column of the source. 11504 }, 11505 "range": { # A range on a sheet. # The range to autofill. This will examine the range and detect 11506 # the location that has data and automatically fill that data 11507 # in to the rest of the range. 11508 # All indexes are zero-based. 11509 # Indexes are half open, e.g the start index is inclusive 11510 # and the end index is exclusive -- [start_index, end_index). 11511 # Missing indexes indicate the range is unbounded on that side. 11512 # 11513 # For example, if `"Sheet1"` is sheet ID 0, then: 11514 # 11515 # `Sheet1!A1:A1 == sheet_id: 0, 11516 # start_row_index: 0, end_row_index: 1, 11517 # start_column_index: 0, end_column_index: 1` 11518 # 11519 # `Sheet1!A3:B4 == sheet_id: 0, 11520 # start_row_index: 2, end_row_index: 4, 11521 # start_column_index: 0, end_column_index: 2` 11522 # 11523 # `Sheet1!A:B == sheet_id: 0, 11524 # start_column_index: 0, end_column_index: 2` 11525 # 11526 # `Sheet1!A5:B == sheet_id: 0, 11527 # start_row_index: 4, 11528 # start_column_index: 0, end_column_index: 2` 11529 # 11530 # `Sheet1 == sheet_id:0` 11531 # 11532 # The start index must always be less than or equal to the end index. 11533 # If the start index equals the end index, then the range is empty. 11534 # Empty ranges are typically not meaningful and are usually rendered in the 11535 # UI as `#REF!`. 11536 "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded. 11537 "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded. 11538 "sheetId": 42, # The sheet this range is on. 11539 "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded. 11540 "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded. 11541 }, 11542 }, 11543 "appendDimension": { # Appends rows or columns to the end of a sheet. # Appends dimensions to the end of a sheet. 11544 "length": 42, # The number of rows or columns to append. 11545 "dimension": "A String", # Whether rows or columns should be appended. 11546 "sheetId": 42, # The sheet to append rows or columns to. 11547 }, 11548 "updateBanding": { # Updates properties of the supplied banded range. # Updates a banded range 11549 "fields": "A String", # The fields that should be updated. At least one field must be specified. 11550 # The root `bandedRange` is implied and should not be specified. 11551 # A single `"*"` can be used as short-hand for listing every field. 11552 "bandedRange": { # A banded (alternating colors) range in a sheet. # The banded range to update with the new properties. 11553 "range": { # A range on a sheet. # The range over which these properties are applied. 11554 # All indexes are zero-based. 11555 # Indexes are half open, e.g the start index is inclusive 11556 # and the end index is exclusive -- [start_index, end_index). 11557 # Missing indexes indicate the range is unbounded on that side. 11558 # 11559 # For example, if `"Sheet1"` is sheet ID 0, then: 11560 # 11561 # `Sheet1!A1:A1 == sheet_id: 0, 11562 # start_row_index: 0, end_row_index: 1, 11563 # start_column_index: 0, end_column_index: 1` 11564 # 11565 # `Sheet1!A3:B4 == sheet_id: 0, 11566 # start_row_index: 2, end_row_index: 4, 11567 # start_column_index: 0, end_column_index: 2` 11568 # 11569 # `Sheet1!A:B == sheet_id: 0, 11570 # start_column_index: 0, end_column_index: 2` 11571 # 11572 # `Sheet1!A5:B == sheet_id: 0, 11573 # start_row_index: 4, 11574 # start_column_index: 0, end_column_index: 2` 11575 # 11576 # `Sheet1 == sheet_id:0` 11577 # 11578 # The start index must always be less than or equal to the end index. 11579 # If the start index equals the end index, then the range is empty. 11580 # Empty ranges are typically not meaningful and are usually rendered in the 11581 # UI as `#REF!`. 11582 "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded. 11583 "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded. 11584 "sheetId": 42, # The sheet this range is on. 11585 "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded. 11586 "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded. 11587 }, 11588 "columnProperties": { # Properties referring a single dimension (either row or column). If both # Properties for column bands. These properties will be applied on a column- 11589 # by-column basis throughout all the columns in the range. At least one of 11590 # row_properties or column_properties must be specified. 11591 # BandedRange.row_properties and BandedRange.column_properties are 11592 # set, the fill colors are applied to cells according to the following rules: 11593 # 11594 # * header_color and footer_color take priority over band colors. 11595 # * first_band_color takes priority over second_band_color. 11596 # * row_properties takes priority over column_properties. 11597 # 11598 # For example, the first row color takes priority over the first column 11599 # color, but the first column color takes priority over the second row color. 11600 # Similarly, the row header takes priority over the column header in the 11601 # top left cell, but the column header takes priority over the first row 11602 # color if the row header is not set. 11603 "secondBandColor": { # Represents a color in the RGBA color space. This representation is designed # The second color that is alternating. (Required) 11604 # for simplicity of conversion to/from color representations in various 11605 # languages over compactness; for example, the fields of this representation 11606 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 11607 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 11608 # method in iOS; and, with just a little work, it can be easily formatted into 11609 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 11610 # 11611 # Example (Java): 11612 # 11613 # import com.google.type.Color; 11614 # 11615 # // ... 11616 # public static java.awt.Color fromProto(Color protocolor) { 11617 # float alpha = protocolor.hasAlpha() 11618 # ? protocolor.getAlpha().getValue() 11619 # : 1.0; 11620 # 11621 # return new java.awt.Color( 11622 # protocolor.getRed(), 11623 # protocolor.getGreen(), 11624 # protocolor.getBlue(), 11625 # alpha); 11626 # } 11627 # 11628 # public static Color toProto(java.awt.Color color) { 11629 # float red = (float) color.getRed(); 11630 # float green = (float) color.getGreen(); 11631 # float blue = (float) color.getBlue(); 11632 # float denominator = 255.0; 11633 # Color.Builder resultBuilder = 11634 # Color 11635 # .newBuilder() 11636 # .setRed(red / denominator) 11637 # .setGreen(green / denominator) 11638 # .setBlue(blue / denominator); 11639 # int alpha = color.getAlpha(); 11640 # if (alpha != 255) { 11641 # result.setAlpha( 11642 # FloatValue 11643 # .newBuilder() 11644 # .setValue(((float) alpha) / denominator) 11645 # .build()); 11646 # } 11647 # return resultBuilder.build(); 11648 # } 11649 # // ... 11650 # 11651 # Example (iOS / Obj-C): 11652 # 11653 # // ... 11654 # static UIColor* fromProto(Color* protocolor) { 11655 # float red = [protocolor red]; 11656 # float green = [protocolor green]; 11657 # float blue = [protocolor blue]; 11658 # FloatValue* alpha_wrapper = [protocolor alpha]; 11659 # float alpha = 1.0; 11660 # if (alpha_wrapper != nil) { 11661 # alpha = [alpha_wrapper value]; 11662 # } 11663 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 11664 # } 11665 # 11666 # static Color* toProto(UIColor* color) { 11667 # CGFloat red, green, blue, alpha; 11668 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 11669 # return nil; 11670 # } 11671 # Color* result = [Color alloc] init]; 11672 # [result setRed:red]; 11673 # [result setGreen:green]; 11674 # [result setBlue:blue]; 11675 # if (alpha <= 0.9999) { 11676 # [result setAlpha:floatWrapperWithValue(alpha)]; 11677 # } 11678 # [result autorelease]; 11679 # return result; 11680 # } 11681 # // ... 11682 # 11683 # Example (JavaScript): 11684 # 11685 # // ... 11686 # 11687 # var protoToCssColor = function(rgb_color) { 11688 # var redFrac = rgb_color.red || 0.0; 11689 # var greenFrac = rgb_color.green || 0.0; 11690 # var blueFrac = rgb_color.blue || 0.0; 11691 # var red = Math.floor(redFrac * 255); 11692 # var green = Math.floor(greenFrac * 255); 11693 # var blue = Math.floor(blueFrac * 255); 11694 # 11695 # if (!('alpha' in rgb_color)) { 11696 # return rgbToCssColor_(red, green, blue); 11697 # } 11698 # 11699 # var alphaFrac = rgb_color.alpha.value || 0.0; 11700 # var rgbParams = [red, green, blue].join(','); 11701 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 11702 # }; 11703 # 11704 # var rgbToCssColor_ = function(red, green, blue) { 11705 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 11706 # var hexString = rgbNumber.toString(16); 11707 # var missingZeros = 6 - hexString.length; 11708 # var resultBuilder = ['#']; 11709 # for (var i = 0; i < missingZeros; i++) { 11710 # resultBuilder.push('0'); 11711 # } 11712 # resultBuilder.push(hexString); 11713 # return resultBuilder.join(''); 11714 # }; 11715 # 11716 # // ... 11717 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 11718 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 11719 # the final pixel color is defined by the equation: 11720 # 11721 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 11722 # 11723 # This means that a value of 1.0 corresponds to a solid color, whereas 11724 # a value of 0.0 corresponds to a completely transparent color. This 11725 # uses a wrapper message rather than a simple float scalar so that it is 11726 # possible to distinguish between a default value and the value being unset. 11727 # If omitted, this color object is to be rendered as a solid color 11728 # (as if the alpha value had been explicitly given with a value of 1.0). 11729 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 11730 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 11731 }, 11732 "headerColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the first row or column. If this field is set, the first 11733 # row or column will be filled with this color and the colors will 11734 # alternate between first_band_color and second_band_color starting 11735 # from the second row or column. Otherwise, the first row or column will be 11736 # filled with first_band_color and the colors will proceed to alternate 11737 # as they normally would. 11738 # for simplicity of conversion to/from color representations in various 11739 # languages over compactness; for example, the fields of this representation 11740 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 11741 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 11742 # method in iOS; and, with just a little work, it can be easily formatted into 11743 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 11744 # 11745 # Example (Java): 11746 # 11747 # import com.google.type.Color; 11748 # 11749 # // ... 11750 # public static java.awt.Color fromProto(Color protocolor) { 11751 # float alpha = protocolor.hasAlpha() 11752 # ? protocolor.getAlpha().getValue() 11753 # : 1.0; 11754 # 11755 # return new java.awt.Color( 11756 # protocolor.getRed(), 11757 # protocolor.getGreen(), 11758 # protocolor.getBlue(), 11759 # alpha); 11760 # } 11761 # 11762 # public static Color toProto(java.awt.Color color) { 11763 # float red = (float) color.getRed(); 11764 # float green = (float) color.getGreen(); 11765 # float blue = (float) color.getBlue(); 11766 # float denominator = 255.0; 11767 # Color.Builder resultBuilder = 11768 # Color 11769 # .newBuilder() 11770 # .setRed(red / denominator) 11771 # .setGreen(green / denominator) 11772 # .setBlue(blue / denominator); 11773 # int alpha = color.getAlpha(); 11774 # if (alpha != 255) { 11775 # result.setAlpha( 11776 # FloatValue 11777 # .newBuilder() 11778 # .setValue(((float) alpha) / denominator) 11779 # .build()); 11780 # } 11781 # return resultBuilder.build(); 11782 # } 11783 # // ... 11784 # 11785 # Example (iOS / Obj-C): 11786 # 11787 # // ... 11788 # static UIColor* fromProto(Color* protocolor) { 11789 # float red = [protocolor red]; 11790 # float green = [protocolor green]; 11791 # float blue = [protocolor blue]; 11792 # FloatValue* alpha_wrapper = [protocolor alpha]; 11793 # float alpha = 1.0; 11794 # if (alpha_wrapper != nil) { 11795 # alpha = [alpha_wrapper value]; 11796 # } 11797 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 11798 # } 11799 # 11800 # static Color* toProto(UIColor* color) { 11801 # CGFloat red, green, blue, alpha; 11802 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 11803 # return nil; 11804 # } 11805 # Color* result = [Color alloc] init]; 11806 # [result setRed:red]; 11807 # [result setGreen:green]; 11808 # [result setBlue:blue]; 11809 # if (alpha <= 0.9999) { 11810 # [result setAlpha:floatWrapperWithValue(alpha)]; 11811 # } 11812 # [result autorelease]; 11813 # return result; 11814 # } 11815 # // ... 11816 # 11817 # Example (JavaScript): 11818 # 11819 # // ... 11820 # 11821 # var protoToCssColor = function(rgb_color) { 11822 # var redFrac = rgb_color.red || 0.0; 11823 # var greenFrac = rgb_color.green || 0.0; 11824 # var blueFrac = rgb_color.blue || 0.0; 11825 # var red = Math.floor(redFrac * 255); 11826 # var green = Math.floor(greenFrac * 255); 11827 # var blue = Math.floor(blueFrac * 255); 11828 # 11829 # if (!('alpha' in rgb_color)) { 11830 # return rgbToCssColor_(red, green, blue); 11831 # } 11832 # 11833 # var alphaFrac = rgb_color.alpha.value || 0.0; 11834 # var rgbParams = [red, green, blue].join(','); 11835 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 11836 # }; 11837 # 11838 # var rgbToCssColor_ = function(red, green, blue) { 11839 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 11840 # var hexString = rgbNumber.toString(16); 11841 # var missingZeros = 6 - hexString.length; 11842 # var resultBuilder = ['#']; 11843 # for (var i = 0; i < missingZeros; i++) { 11844 # resultBuilder.push('0'); 11845 # } 11846 # resultBuilder.push(hexString); 11847 # return resultBuilder.join(''); 11848 # }; 11849 # 11850 # // ... 11851 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 11852 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 11853 # the final pixel color is defined by the equation: 11854 # 11855 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 11856 # 11857 # This means that a value of 1.0 corresponds to a solid color, whereas 11858 # a value of 0.0 corresponds to a completely transparent color. This 11859 # uses a wrapper message rather than a simple float scalar so that it is 11860 # possible to distinguish between a default value and the value being unset. 11861 # If omitted, this color object is to be rendered as a solid color 11862 # (as if the alpha value had been explicitly given with a value of 1.0). 11863 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 11864 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 11865 }, 11866 "footerColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the last row or column. If this field is not set, the last 11867 # row or column will be filled with either first_band_color or 11868 # second_band_color, depending on the color of the previous row or 11869 # column. 11870 # for simplicity of conversion to/from color representations in various 11871 # languages over compactness; for example, the fields of this representation 11872 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 11873 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 11874 # method in iOS; and, with just a little work, it can be easily formatted into 11875 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 11876 # 11877 # Example (Java): 11878 # 11879 # import com.google.type.Color; 11880 # 11881 # // ... 11882 # public static java.awt.Color fromProto(Color protocolor) { 11883 # float alpha = protocolor.hasAlpha() 11884 # ? protocolor.getAlpha().getValue() 11885 # : 1.0; 11886 # 11887 # return new java.awt.Color( 11888 # protocolor.getRed(), 11889 # protocolor.getGreen(), 11890 # protocolor.getBlue(), 11891 # alpha); 11892 # } 11893 # 11894 # public static Color toProto(java.awt.Color color) { 11895 # float red = (float) color.getRed(); 11896 # float green = (float) color.getGreen(); 11897 # float blue = (float) color.getBlue(); 11898 # float denominator = 255.0; 11899 # Color.Builder resultBuilder = 11900 # Color 11901 # .newBuilder() 11902 # .setRed(red / denominator) 11903 # .setGreen(green / denominator) 11904 # .setBlue(blue / denominator); 11905 # int alpha = color.getAlpha(); 11906 # if (alpha != 255) { 11907 # result.setAlpha( 11908 # FloatValue 11909 # .newBuilder() 11910 # .setValue(((float) alpha) / denominator) 11911 # .build()); 11912 # } 11913 # return resultBuilder.build(); 11914 # } 11915 # // ... 11916 # 11917 # Example (iOS / Obj-C): 11918 # 11919 # // ... 11920 # static UIColor* fromProto(Color* protocolor) { 11921 # float red = [protocolor red]; 11922 # float green = [protocolor green]; 11923 # float blue = [protocolor blue]; 11924 # FloatValue* alpha_wrapper = [protocolor alpha]; 11925 # float alpha = 1.0; 11926 # if (alpha_wrapper != nil) { 11927 # alpha = [alpha_wrapper value]; 11928 # } 11929 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 11930 # } 11931 # 11932 # static Color* toProto(UIColor* color) { 11933 # CGFloat red, green, blue, alpha; 11934 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 11935 # return nil; 11936 # } 11937 # Color* result = [Color alloc] init]; 11938 # [result setRed:red]; 11939 # [result setGreen:green]; 11940 # [result setBlue:blue]; 11941 # if (alpha <= 0.9999) { 11942 # [result setAlpha:floatWrapperWithValue(alpha)]; 11943 # } 11944 # [result autorelease]; 11945 # return result; 11946 # } 11947 # // ... 11948 # 11949 # Example (JavaScript): 11950 # 11951 # // ... 11952 # 11953 # var protoToCssColor = function(rgb_color) { 11954 # var redFrac = rgb_color.red || 0.0; 11955 # var greenFrac = rgb_color.green || 0.0; 11956 # var blueFrac = rgb_color.blue || 0.0; 11957 # var red = Math.floor(redFrac * 255); 11958 # var green = Math.floor(greenFrac * 255); 11959 # var blue = Math.floor(blueFrac * 255); 11960 # 11961 # if (!('alpha' in rgb_color)) { 11962 # return rgbToCssColor_(red, green, blue); 11963 # } 11964 # 11965 # var alphaFrac = rgb_color.alpha.value || 0.0; 11966 # var rgbParams = [red, green, blue].join(','); 11967 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 11968 # }; 11969 # 11970 # var rgbToCssColor_ = function(red, green, blue) { 11971 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 11972 # var hexString = rgbNumber.toString(16); 11973 # var missingZeros = 6 - hexString.length; 11974 # var resultBuilder = ['#']; 11975 # for (var i = 0; i < missingZeros; i++) { 11976 # resultBuilder.push('0'); 11977 # } 11978 # resultBuilder.push(hexString); 11979 # return resultBuilder.join(''); 11980 # }; 11981 # 11982 # // ... 11983 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 11984 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 11985 # the final pixel color is defined by the equation: 11986 # 11987 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 11988 # 11989 # This means that a value of 1.0 corresponds to a solid color, whereas 11990 # a value of 0.0 corresponds to a completely transparent color. This 11991 # uses a wrapper message rather than a simple float scalar so that it is 11992 # possible to distinguish between a default value and the value being unset. 11993 # If omitted, this color object is to be rendered as a solid color 11994 # (as if the alpha value had been explicitly given with a value of 1.0). 11995 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 11996 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 11997 }, 11998 "firstBandColor": { # Represents a color in the RGBA color space. This representation is designed # The first color that is alternating. (Required) 11999 # for simplicity of conversion to/from color representations in various 12000 # languages over compactness; for example, the fields of this representation 12001 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 12002 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 12003 # method in iOS; and, with just a little work, it can be easily formatted into 12004 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 12005 # 12006 # Example (Java): 12007 # 12008 # import com.google.type.Color; 12009 # 12010 # // ... 12011 # public static java.awt.Color fromProto(Color protocolor) { 12012 # float alpha = protocolor.hasAlpha() 12013 # ? protocolor.getAlpha().getValue() 12014 # : 1.0; 12015 # 12016 # return new java.awt.Color( 12017 # protocolor.getRed(), 12018 # protocolor.getGreen(), 12019 # protocolor.getBlue(), 12020 # alpha); 12021 # } 12022 # 12023 # public static Color toProto(java.awt.Color color) { 12024 # float red = (float) color.getRed(); 12025 # float green = (float) color.getGreen(); 12026 # float blue = (float) color.getBlue(); 12027 # float denominator = 255.0; 12028 # Color.Builder resultBuilder = 12029 # Color 12030 # .newBuilder() 12031 # .setRed(red / denominator) 12032 # .setGreen(green / denominator) 12033 # .setBlue(blue / denominator); 12034 # int alpha = color.getAlpha(); 12035 # if (alpha != 255) { 12036 # result.setAlpha( 12037 # FloatValue 12038 # .newBuilder() 12039 # .setValue(((float) alpha) / denominator) 12040 # .build()); 12041 # } 12042 # return resultBuilder.build(); 12043 # } 12044 # // ... 12045 # 12046 # Example (iOS / Obj-C): 12047 # 12048 # // ... 12049 # static UIColor* fromProto(Color* protocolor) { 12050 # float red = [protocolor red]; 12051 # float green = [protocolor green]; 12052 # float blue = [protocolor blue]; 12053 # FloatValue* alpha_wrapper = [protocolor alpha]; 12054 # float alpha = 1.0; 12055 # if (alpha_wrapper != nil) { 12056 # alpha = [alpha_wrapper value]; 12057 # } 12058 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 12059 # } 12060 # 12061 # static Color* toProto(UIColor* color) { 12062 # CGFloat red, green, blue, alpha; 12063 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 12064 # return nil; 12065 # } 12066 # Color* result = [Color alloc] init]; 12067 # [result setRed:red]; 12068 # [result setGreen:green]; 12069 # [result setBlue:blue]; 12070 # if (alpha <= 0.9999) { 12071 # [result setAlpha:floatWrapperWithValue(alpha)]; 12072 # } 12073 # [result autorelease]; 12074 # return result; 12075 # } 12076 # // ... 12077 # 12078 # Example (JavaScript): 12079 # 12080 # // ... 12081 # 12082 # var protoToCssColor = function(rgb_color) { 12083 # var redFrac = rgb_color.red || 0.0; 12084 # var greenFrac = rgb_color.green || 0.0; 12085 # var blueFrac = rgb_color.blue || 0.0; 12086 # var red = Math.floor(redFrac * 255); 12087 # var green = Math.floor(greenFrac * 255); 12088 # var blue = Math.floor(blueFrac * 255); 12089 # 12090 # if (!('alpha' in rgb_color)) { 12091 # return rgbToCssColor_(red, green, blue); 12092 # } 12093 # 12094 # var alphaFrac = rgb_color.alpha.value || 0.0; 12095 # var rgbParams = [red, green, blue].join(','); 12096 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 12097 # }; 12098 # 12099 # var rgbToCssColor_ = function(red, green, blue) { 12100 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 12101 # var hexString = rgbNumber.toString(16); 12102 # var missingZeros = 6 - hexString.length; 12103 # var resultBuilder = ['#']; 12104 # for (var i = 0; i < missingZeros; i++) { 12105 # resultBuilder.push('0'); 12106 # } 12107 # resultBuilder.push(hexString); 12108 # return resultBuilder.join(''); 12109 # }; 12110 # 12111 # // ... 12112 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 12113 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 12114 # the final pixel color is defined by the equation: 12115 # 12116 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 12117 # 12118 # This means that a value of 1.0 corresponds to a solid color, whereas 12119 # a value of 0.0 corresponds to a completely transparent color. This 12120 # uses a wrapper message rather than a simple float scalar so that it is 12121 # possible to distinguish between a default value and the value being unset. 12122 # If omitted, this color object is to be rendered as a solid color 12123 # (as if the alpha value had been explicitly given with a value of 1.0). 12124 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 12125 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 12126 }, 12127 }, 12128 "rowProperties": { # Properties referring a single dimension (either row or column). If both # Properties for row bands. These properties will be applied on a row-by-row 12129 # basis throughout all the rows in the range. At least one of 12130 # row_properties or column_properties must be specified. 12131 # BandedRange.row_properties and BandedRange.column_properties are 12132 # set, the fill colors are applied to cells according to the following rules: 12133 # 12134 # * header_color and footer_color take priority over band colors. 12135 # * first_band_color takes priority over second_band_color. 12136 # * row_properties takes priority over column_properties. 12137 # 12138 # For example, the first row color takes priority over the first column 12139 # color, but the first column color takes priority over the second row color. 12140 # Similarly, the row header takes priority over the column header in the 12141 # top left cell, but the column header takes priority over the first row 12142 # color if the row header is not set. 12143 "secondBandColor": { # Represents a color in the RGBA color space. This representation is designed # The second color that is alternating. (Required) 12144 # for simplicity of conversion to/from color representations in various 12145 # languages over compactness; for example, the fields of this representation 12146 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 12147 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 12148 # method in iOS; and, with just a little work, it can be easily formatted into 12149 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 12150 # 12151 # Example (Java): 12152 # 12153 # import com.google.type.Color; 12154 # 12155 # // ... 12156 # public static java.awt.Color fromProto(Color protocolor) { 12157 # float alpha = protocolor.hasAlpha() 12158 # ? protocolor.getAlpha().getValue() 12159 # : 1.0; 12160 # 12161 # return new java.awt.Color( 12162 # protocolor.getRed(), 12163 # protocolor.getGreen(), 12164 # protocolor.getBlue(), 12165 # alpha); 12166 # } 12167 # 12168 # public static Color toProto(java.awt.Color color) { 12169 # float red = (float) color.getRed(); 12170 # float green = (float) color.getGreen(); 12171 # float blue = (float) color.getBlue(); 12172 # float denominator = 255.0; 12173 # Color.Builder resultBuilder = 12174 # Color 12175 # .newBuilder() 12176 # .setRed(red / denominator) 12177 # .setGreen(green / denominator) 12178 # .setBlue(blue / denominator); 12179 # int alpha = color.getAlpha(); 12180 # if (alpha != 255) { 12181 # result.setAlpha( 12182 # FloatValue 12183 # .newBuilder() 12184 # .setValue(((float) alpha) / denominator) 12185 # .build()); 12186 # } 12187 # return resultBuilder.build(); 12188 # } 12189 # // ... 12190 # 12191 # Example (iOS / Obj-C): 12192 # 12193 # // ... 12194 # static UIColor* fromProto(Color* protocolor) { 12195 # float red = [protocolor red]; 12196 # float green = [protocolor green]; 12197 # float blue = [protocolor blue]; 12198 # FloatValue* alpha_wrapper = [protocolor alpha]; 12199 # float alpha = 1.0; 12200 # if (alpha_wrapper != nil) { 12201 # alpha = [alpha_wrapper value]; 12202 # } 12203 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 12204 # } 12205 # 12206 # static Color* toProto(UIColor* color) { 12207 # CGFloat red, green, blue, alpha; 12208 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 12209 # return nil; 12210 # } 12211 # Color* result = [Color alloc] init]; 12212 # [result setRed:red]; 12213 # [result setGreen:green]; 12214 # [result setBlue:blue]; 12215 # if (alpha <= 0.9999) { 12216 # [result setAlpha:floatWrapperWithValue(alpha)]; 12217 # } 12218 # [result autorelease]; 12219 # return result; 12220 # } 12221 # // ... 12222 # 12223 # Example (JavaScript): 12224 # 12225 # // ... 12226 # 12227 # var protoToCssColor = function(rgb_color) { 12228 # var redFrac = rgb_color.red || 0.0; 12229 # var greenFrac = rgb_color.green || 0.0; 12230 # var blueFrac = rgb_color.blue || 0.0; 12231 # var red = Math.floor(redFrac * 255); 12232 # var green = Math.floor(greenFrac * 255); 12233 # var blue = Math.floor(blueFrac * 255); 12234 # 12235 # if (!('alpha' in rgb_color)) { 12236 # return rgbToCssColor_(red, green, blue); 12237 # } 12238 # 12239 # var alphaFrac = rgb_color.alpha.value || 0.0; 12240 # var rgbParams = [red, green, blue].join(','); 12241 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 12242 # }; 12243 # 12244 # var rgbToCssColor_ = function(red, green, blue) { 12245 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 12246 # var hexString = rgbNumber.toString(16); 12247 # var missingZeros = 6 - hexString.length; 12248 # var resultBuilder = ['#']; 12249 # for (var i = 0; i < missingZeros; i++) { 12250 # resultBuilder.push('0'); 12251 # } 12252 # resultBuilder.push(hexString); 12253 # return resultBuilder.join(''); 12254 # }; 12255 # 12256 # // ... 12257 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 12258 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 12259 # the final pixel color is defined by the equation: 12260 # 12261 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 12262 # 12263 # This means that a value of 1.0 corresponds to a solid color, whereas 12264 # a value of 0.0 corresponds to a completely transparent color. This 12265 # uses a wrapper message rather than a simple float scalar so that it is 12266 # possible to distinguish between a default value and the value being unset. 12267 # If omitted, this color object is to be rendered as a solid color 12268 # (as if the alpha value had been explicitly given with a value of 1.0). 12269 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 12270 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 12271 }, 12272 "headerColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the first row or column. If this field is set, the first 12273 # row or column will be filled with this color and the colors will 12274 # alternate between first_band_color and second_band_color starting 12275 # from the second row or column. Otherwise, the first row or column will be 12276 # filled with first_band_color and the colors will proceed to alternate 12277 # as they normally would. 12278 # for simplicity of conversion to/from color representations in various 12279 # languages over compactness; for example, the fields of this representation 12280 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 12281 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 12282 # method in iOS; and, with just a little work, it can be easily formatted into 12283 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 12284 # 12285 # Example (Java): 12286 # 12287 # import com.google.type.Color; 12288 # 12289 # // ... 12290 # public static java.awt.Color fromProto(Color protocolor) { 12291 # float alpha = protocolor.hasAlpha() 12292 # ? protocolor.getAlpha().getValue() 12293 # : 1.0; 12294 # 12295 # return new java.awt.Color( 12296 # protocolor.getRed(), 12297 # protocolor.getGreen(), 12298 # protocolor.getBlue(), 12299 # alpha); 12300 # } 12301 # 12302 # public static Color toProto(java.awt.Color color) { 12303 # float red = (float) color.getRed(); 12304 # float green = (float) color.getGreen(); 12305 # float blue = (float) color.getBlue(); 12306 # float denominator = 255.0; 12307 # Color.Builder resultBuilder = 12308 # Color 12309 # .newBuilder() 12310 # .setRed(red / denominator) 12311 # .setGreen(green / denominator) 12312 # .setBlue(blue / denominator); 12313 # int alpha = color.getAlpha(); 12314 # if (alpha != 255) { 12315 # result.setAlpha( 12316 # FloatValue 12317 # .newBuilder() 12318 # .setValue(((float) alpha) / denominator) 12319 # .build()); 12320 # } 12321 # return resultBuilder.build(); 12322 # } 12323 # // ... 12324 # 12325 # Example (iOS / Obj-C): 12326 # 12327 # // ... 12328 # static UIColor* fromProto(Color* protocolor) { 12329 # float red = [protocolor red]; 12330 # float green = [protocolor green]; 12331 # float blue = [protocolor blue]; 12332 # FloatValue* alpha_wrapper = [protocolor alpha]; 12333 # float alpha = 1.0; 12334 # if (alpha_wrapper != nil) { 12335 # alpha = [alpha_wrapper value]; 12336 # } 12337 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 12338 # } 12339 # 12340 # static Color* toProto(UIColor* color) { 12341 # CGFloat red, green, blue, alpha; 12342 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 12343 # return nil; 12344 # } 12345 # Color* result = [Color alloc] init]; 12346 # [result setRed:red]; 12347 # [result setGreen:green]; 12348 # [result setBlue:blue]; 12349 # if (alpha <= 0.9999) { 12350 # [result setAlpha:floatWrapperWithValue(alpha)]; 12351 # } 12352 # [result autorelease]; 12353 # return result; 12354 # } 12355 # // ... 12356 # 12357 # Example (JavaScript): 12358 # 12359 # // ... 12360 # 12361 # var protoToCssColor = function(rgb_color) { 12362 # var redFrac = rgb_color.red || 0.0; 12363 # var greenFrac = rgb_color.green || 0.0; 12364 # var blueFrac = rgb_color.blue || 0.0; 12365 # var red = Math.floor(redFrac * 255); 12366 # var green = Math.floor(greenFrac * 255); 12367 # var blue = Math.floor(blueFrac * 255); 12368 # 12369 # if (!('alpha' in rgb_color)) { 12370 # return rgbToCssColor_(red, green, blue); 12371 # } 12372 # 12373 # var alphaFrac = rgb_color.alpha.value || 0.0; 12374 # var rgbParams = [red, green, blue].join(','); 12375 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 12376 # }; 12377 # 12378 # var rgbToCssColor_ = function(red, green, blue) { 12379 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 12380 # var hexString = rgbNumber.toString(16); 12381 # var missingZeros = 6 - hexString.length; 12382 # var resultBuilder = ['#']; 12383 # for (var i = 0; i < missingZeros; i++) { 12384 # resultBuilder.push('0'); 12385 # } 12386 # resultBuilder.push(hexString); 12387 # return resultBuilder.join(''); 12388 # }; 12389 # 12390 # // ... 12391 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 12392 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 12393 # the final pixel color is defined by the equation: 12394 # 12395 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 12396 # 12397 # This means that a value of 1.0 corresponds to a solid color, whereas 12398 # a value of 0.0 corresponds to a completely transparent color. This 12399 # uses a wrapper message rather than a simple float scalar so that it is 12400 # possible to distinguish between a default value and the value being unset. 12401 # If omitted, this color object is to be rendered as a solid color 12402 # (as if the alpha value had been explicitly given with a value of 1.0). 12403 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 12404 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 12405 }, 12406 "footerColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the last row or column. If this field is not set, the last 12407 # row or column will be filled with either first_band_color or 12408 # second_band_color, depending on the color of the previous row or 12409 # column. 12410 # for simplicity of conversion to/from color representations in various 12411 # languages over compactness; for example, the fields of this representation 12412 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 12413 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 12414 # method in iOS; and, with just a little work, it can be easily formatted into 12415 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 12416 # 12417 # Example (Java): 12418 # 12419 # import com.google.type.Color; 12420 # 12421 # // ... 12422 # public static java.awt.Color fromProto(Color protocolor) { 12423 # float alpha = protocolor.hasAlpha() 12424 # ? protocolor.getAlpha().getValue() 12425 # : 1.0; 12426 # 12427 # return new java.awt.Color( 12428 # protocolor.getRed(), 12429 # protocolor.getGreen(), 12430 # protocolor.getBlue(), 12431 # alpha); 12432 # } 12433 # 12434 # public static Color toProto(java.awt.Color color) { 12435 # float red = (float) color.getRed(); 12436 # float green = (float) color.getGreen(); 12437 # float blue = (float) color.getBlue(); 12438 # float denominator = 255.0; 12439 # Color.Builder resultBuilder = 12440 # Color 12441 # .newBuilder() 12442 # .setRed(red / denominator) 12443 # .setGreen(green / denominator) 12444 # .setBlue(blue / denominator); 12445 # int alpha = color.getAlpha(); 12446 # if (alpha != 255) { 12447 # result.setAlpha( 12448 # FloatValue 12449 # .newBuilder() 12450 # .setValue(((float) alpha) / denominator) 12451 # .build()); 12452 # } 12453 # return resultBuilder.build(); 12454 # } 12455 # // ... 12456 # 12457 # Example (iOS / Obj-C): 12458 # 12459 # // ... 12460 # static UIColor* fromProto(Color* protocolor) { 12461 # float red = [protocolor red]; 12462 # float green = [protocolor green]; 12463 # float blue = [protocolor blue]; 12464 # FloatValue* alpha_wrapper = [protocolor alpha]; 12465 # float alpha = 1.0; 12466 # if (alpha_wrapper != nil) { 12467 # alpha = [alpha_wrapper value]; 12468 # } 12469 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 12470 # } 12471 # 12472 # static Color* toProto(UIColor* color) { 12473 # CGFloat red, green, blue, alpha; 12474 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 12475 # return nil; 12476 # } 12477 # Color* result = [Color alloc] init]; 12478 # [result setRed:red]; 12479 # [result setGreen:green]; 12480 # [result setBlue:blue]; 12481 # if (alpha <= 0.9999) { 12482 # [result setAlpha:floatWrapperWithValue(alpha)]; 12483 # } 12484 # [result autorelease]; 12485 # return result; 12486 # } 12487 # // ... 12488 # 12489 # Example (JavaScript): 12490 # 12491 # // ... 12492 # 12493 # var protoToCssColor = function(rgb_color) { 12494 # var redFrac = rgb_color.red || 0.0; 12495 # var greenFrac = rgb_color.green || 0.0; 12496 # var blueFrac = rgb_color.blue || 0.0; 12497 # var red = Math.floor(redFrac * 255); 12498 # var green = Math.floor(greenFrac * 255); 12499 # var blue = Math.floor(blueFrac * 255); 12500 # 12501 # if (!('alpha' in rgb_color)) { 12502 # return rgbToCssColor_(red, green, blue); 12503 # } 12504 # 12505 # var alphaFrac = rgb_color.alpha.value || 0.0; 12506 # var rgbParams = [red, green, blue].join(','); 12507 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 12508 # }; 12509 # 12510 # var rgbToCssColor_ = function(red, green, blue) { 12511 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 12512 # var hexString = rgbNumber.toString(16); 12513 # var missingZeros = 6 - hexString.length; 12514 # var resultBuilder = ['#']; 12515 # for (var i = 0; i < missingZeros; i++) { 12516 # resultBuilder.push('0'); 12517 # } 12518 # resultBuilder.push(hexString); 12519 # return resultBuilder.join(''); 12520 # }; 12521 # 12522 # // ... 12523 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 12524 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 12525 # the final pixel color is defined by the equation: 12526 # 12527 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 12528 # 12529 # This means that a value of 1.0 corresponds to a solid color, whereas 12530 # a value of 0.0 corresponds to a completely transparent color. This 12531 # uses a wrapper message rather than a simple float scalar so that it is 12532 # possible to distinguish between a default value and the value being unset. 12533 # If omitted, this color object is to be rendered as a solid color 12534 # (as if the alpha value had been explicitly given with a value of 1.0). 12535 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 12536 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 12537 }, 12538 "firstBandColor": { # Represents a color in the RGBA color space. This representation is designed # The first color that is alternating. (Required) 12539 # for simplicity of conversion to/from color representations in various 12540 # languages over compactness; for example, the fields of this representation 12541 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 12542 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 12543 # method in iOS; and, with just a little work, it can be easily formatted into 12544 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 12545 # 12546 # Example (Java): 12547 # 12548 # import com.google.type.Color; 12549 # 12550 # // ... 12551 # public static java.awt.Color fromProto(Color protocolor) { 12552 # float alpha = protocolor.hasAlpha() 12553 # ? protocolor.getAlpha().getValue() 12554 # : 1.0; 12555 # 12556 # return new java.awt.Color( 12557 # protocolor.getRed(), 12558 # protocolor.getGreen(), 12559 # protocolor.getBlue(), 12560 # alpha); 12561 # } 12562 # 12563 # public static Color toProto(java.awt.Color color) { 12564 # float red = (float) color.getRed(); 12565 # float green = (float) color.getGreen(); 12566 # float blue = (float) color.getBlue(); 12567 # float denominator = 255.0; 12568 # Color.Builder resultBuilder = 12569 # Color 12570 # .newBuilder() 12571 # .setRed(red / denominator) 12572 # .setGreen(green / denominator) 12573 # .setBlue(blue / denominator); 12574 # int alpha = color.getAlpha(); 12575 # if (alpha != 255) { 12576 # result.setAlpha( 12577 # FloatValue 12578 # .newBuilder() 12579 # .setValue(((float) alpha) / denominator) 12580 # .build()); 12581 # } 12582 # return resultBuilder.build(); 12583 # } 12584 # // ... 12585 # 12586 # Example (iOS / Obj-C): 12587 # 12588 # // ... 12589 # static UIColor* fromProto(Color* protocolor) { 12590 # float red = [protocolor red]; 12591 # float green = [protocolor green]; 12592 # float blue = [protocolor blue]; 12593 # FloatValue* alpha_wrapper = [protocolor alpha]; 12594 # float alpha = 1.0; 12595 # if (alpha_wrapper != nil) { 12596 # alpha = [alpha_wrapper value]; 12597 # } 12598 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 12599 # } 12600 # 12601 # static Color* toProto(UIColor* color) { 12602 # CGFloat red, green, blue, alpha; 12603 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 12604 # return nil; 12605 # } 12606 # Color* result = [Color alloc] init]; 12607 # [result setRed:red]; 12608 # [result setGreen:green]; 12609 # [result setBlue:blue]; 12610 # if (alpha <= 0.9999) { 12611 # [result setAlpha:floatWrapperWithValue(alpha)]; 12612 # } 12613 # [result autorelease]; 12614 # return result; 12615 # } 12616 # // ... 12617 # 12618 # Example (JavaScript): 12619 # 12620 # // ... 12621 # 12622 # var protoToCssColor = function(rgb_color) { 12623 # var redFrac = rgb_color.red || 0.0; 12624 # var greenFrac = rgb_color.green || 0.0; 12625 # var blueFrac = rgb_color.blue || 0.0; 12626 # var red = Math.floor(redFrac * 255); 12627 # var green = Math.floor(greenFrac * 255); 12628 # var blue = Math.floor(blueFrac * 255); 12629 # 12630 # if (!('alpha' in rgb_color)) { 12631 # return rgbToCssColor_(red, green, blue); 12632 # } 12633 # 12634 # var alphaFrac = rgb_color.alpha.value || 0.0; 12635 # var rgbParams = [red, green, blue].join(','); 12636 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 12637 # }; 12638 # 12639 # var rgbToCssColor_ = function(red, green, blue) { 12640 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 12641 # var hexString = rgbNumber.toString(16); 12642 # var missingZeros = 6 - hexString.length; 12643 # var resultBuilder = ['#']; 12644 # for (var i = 0; i < missingZeros; i++) { 12645 # resultBuilder.push('0'); 12646 # } 12647 # resultBuilder.push(hexString); 12648 # return resultBuilder.join(''); 12649 # }; 12650 # 12651 # // ... 12652 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 12653 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 12654 # the final pixel color is defined by the equation: 12655 # 12656 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 12657 # 12658 # This means that a value of 1.0 corresponds to a solid color, whereas 12659 # a value of 0.0 corresponds to a completely transparent color. This 12660 # uses a wrapper message rather than a simple float scalar so that it is 12661 # possible to distinguish between a default value and the value being unset. 12662 # If omitted, this color object is to be rendered as a solid color 12663 # (as if the alpha value had been explicitly given with a value of 1.0). 12664 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 12665 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 12666 }, 12667 }, 12668 "bandedRangeId": 42, # The id of the banded range. 12669 }, 12670 }, 12671 "autoResizeDimensions": { # Automatically resizes one or more dimensions based on the contents # Automatically resizes one or more dimensions based on the contents 12672 # of the cells in that dimension. 12673 # of the cells in that dimension. 12674 "dimensions": { # A range along a single dimension on a sheet. # The dimensions to automatically resize. 12675 # Only COLUMNS are supported. 12676 # All indexes are zero-based. 12677 # Indexes are half open: the start index is inclusive 12678 # and the end index is exclusive. 12679 # Missing indexes indicate the range is unbounded on that side. 12680 "endIndex": 42, # The end (exclusive) of the span, or not set if unbounded. 12681 "startIndex": 42, # The start (inclusive) of the span, or not set if unbounded. 12682 "dimension": "A String", # The dimension of the span. 12683 "sheetId": 42, # The sheet this span is on. 12684 }, 12685 }, 12686 "updateDimensionProperties": { # Updates properties of dimensions within the specified range. # Updates dimensions' properties. 12687 "fields": "A String", # The fields that should be updated. At least one field must be specified. 12688 # The root `properties` is implied and should not be specified. 12689 # A single `"*"` can be used as short-hand for listing every field. 12690 "range": { # A range along a single dimension on a sheet. # The rows or columns to update. 12691 # All indexes are zero-based. 12692 # Indexes are half open: the start index is inclusive 12693 # and the end index is exclusive. 12694 # Missing indexes indicate the range is unbounded on that side. 12695 "endIndex": 42, # The end (exclusive) of the span, or not set if unbounded. 12696 "startIndex": 42, # The start (inclusive) of the span, or not set if unbounded. 12697 "dimension": "A String", # The dimension of the span. 12698 "sheetId": 42, # The sheet this span is on. 12699 }, 12700 "properties": { # Properties about a dimension. # Properties to update. 12701 "pixelSize": 42, # The height (if a row) or width (if a column) of the dimension in pixels. 12702 "hiddenByUser": True or False, # True if this dimension is explicitly hidden. 12703 "hiddenByFilter": True or False, # True if this dimension is being filtered. 12704 # This field is read-only. 12705 }, 12706 }, 12707 "unmergeCells": { # Unmerges cells in the given range. # Unmerges merged cells. 12708 "range": { # A range on a sheet. # The range within which all cells should be unmerged. 12709 # If the range spans multiple merges, all will be unmerged. 12710 # The range must not partially span any merge. 12711 # All indexes are zero-based. 12712 # Indexes are half open, e.g the start index is inclusive 12713 # and the end index is exclusive -- [start_index, end_index). 12714 # Missing indexes indicate the range is unbounded on that side. 12715 # 12716 # For example, if `"Sheet1"` is sheet ID 0, then: 12717 # 12718 # `Sheet1!A1:A1 == sheet_id: 0, 12719 # start_row_index: 0, end_row_index: 1, 12720 # start_column_index: 0, end_column_index: 1` 12721 # 12722 # `Sheet1!A3:B4 == sheet_id: 0, 12723 # start_row_index: 2, end_row_index: 4, 12724 # start_column_index: 0, end_column_index: 2` 12725 # 12726 # `Sheet1!A:B == sheet_id: 0, 12727 # start_column_index: 0, end_column_index: 2` 12728 # 12729 # `Sheet1!A5:B == sheet_id: 0, 12730 # start_row_index: 4, 12731 # start_column_index: 0, end_column_index: 2` 12732 # 12733 # `Sheet1 == sheet_id:0` 12734 # 12735 # The start index must always be less than or equal to the end index. 12736 # If the start index equals the end index, then the range is empty. 12737 # Empty ranges are typically not meaningful and are usually rendered in the 12738 # UI as `#REF!`. 12739 "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded. 12740 "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded. 12741 "sheetId": 42, # The sheet this range is on. 12742 "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded. 12743 "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded. 12744 }, 12745 }, 12746 "setDataValidation": { # Sets a data validation rule to every cell in the range. # Sets data validation for one or more cells. 12747 # To clear validation in a range, call this with no rule specified. 12748 "range": { # A range on a sheet. # The range the data validation rule should apply to. 12749 # All indexes are zero-based. 12750 # Indexes are half open, e.g the start index is inclusive 12751 # and the end index is exclusive -- [start_index, end_index). 12752 # Missing indexes indicate the range is unbounded on that side. 12753 # 12754 # For example, if `"Sheet1"` is sheet ID 0, then: 12755 # 12756 # `Sheet1!A1:A1 == sheet_id: 0, 12757 # start_row_index: 0, end_row_index: 1, 12758 # start_column_index: 0, end_column_index: 1` 12759 # 12760 # `Sheet1!A3:B4 == sheet_id: 0, 12761 # start_row_index: 2, end_row_index: 4, 12762 # start_column_index: 0, end_column_index: 2` 12763 # 12764 # `Sheet1!A:B == sheet_id: 0, 12765 # start_column_index: 0, end_column_index: 2` 12766 # 12767 # `Sheet1!A5:B == sheet_id: 0, 12768 # start_row_index: 4, 12769 # start_column_index: 0, end_column_index: 2` 12770 # 12771 # `Sheet1 == sheet_id:0` 12772 # 12773 # The start index must always be less than or equal to the end index. 12774 # If the start index equals the end index, then the range is empty. 12775 # Empty ranges are typically not meaningful and are usually rendered in the 12776 # UI as `#REF!`. 12777 "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded. 12778 "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded. 12779 "sheetId": 42, # The sheet this range is on. 12780 "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded. 12781 "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded. 12782 }, 12783 "rule": { # A data validation rule. # The data validation rule to set on each cell in the range, 12784 # or empty to clear the data validation in the range. 12785 "showCustomUi": True or False, # True if the UI should be customized based on the kind of condition. 12786 # If true, "List" conditions will show a dropdown. 12787 "strict": True or False, # True if invalid data should be rejected. 12788 "inputMessage": "A String", # A message to show the user when adding data to the cell. 12789 "condition": { # A condition that can evaluate to true or false. # The condition that data in the cell must match. 12790 # BooleanConditions are used by conditional formatting, 12791 # data validation, and the criteria in filters. 12792 "values": [ # The values of the condition. The number of supported values depends 12793 # on the condition type. Some support zero values, 12794 # others one or two values, 12795 # and ConditionType.ONE_OF_LIST supports an arbitrary number of values. 12796 { # The value of the condition. 12797 "relativeDate": "A String", # A relative date (based on the current date). 12798 # Valid only if the type is 12799 # DATE_BEFORE, 12800 # DATE_AFTER, 12801 # DATE_ON_OR_BEFORE or 12802 # DATE_ON_OR_AFTER. 12803 # 12804 # Relative dates are not supported in data validation. 12805 # They are supported only in conditional formatting and 12806 # conditional filters. 12807 "userEnteredValue": "A String", # A value the condition is based on. 12808 # The value will be parsed as if the user typed into a cell. 12809 # Formulas are supported (and must begin with an `=`). 12810 }, 12811 ], 12812 "type": "A String", # The type of condition. 12813 }, 12814 }, 12815 }, 12816 "deleteRange": { # Deletes a range of cells, shifting other cells into the deleted area. # Deletes a range of cells from a sheet, shifting the remaining cells. 12817 "range": { # A range on a sheet. # The range of cells to delete. 12818 # All indexes are zero-based. 12819 # Indexes are half open, e.g the start index is inclusive 12820 # and the end index is exclusive -- [start_index, end_index). 12821 # Missing indexes indicate the range is unbounded on that side. 12822 # 12823 # For example, if `"Sheet1"` is sheet ID 0, then: 12824 # 12825 # `Sheet1!A1:A1 == sheet_id: 0, 12826 # start_row_index: 0, end_row_index: 1, 12827 # start_column_index: 0, end_column_index: 1` 12828 # 12829 # `Sheet1!A3:B4 == sheet_id: 0, 12830 # start_row_index: 2, end_row_index: 4, 12831 # start_column_index: 0, end_column_index: 2` 12832 # 12833 # `Sheet1!A:B == sheet_id: 0, 12834 # start_column_index: 0, end_column_index: 2` 12835 # 12836 # `Sheet1!A5:B == sheet_id: 0, 12837 # start_row_index: 4, 12838 # start_column_index: 0, end_column_index: 2` 12839 # 12840 # `Sheet1 == sheet_id:0` 12841 # 12842 # The start index must always be less than or equal to the end index. 12843 # If the start index equals the end index, then the range is empty. 12844 # Empty ranges are typically not meaningful and are usually rendered in the 12845 # UI as `#REF!`. 12846 "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded. 12847 "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded. 12848 "sheetId": 42, # The sheet this range is on. 12849 "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded. 12850 "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded. 12851 }, 12852 "shiftDimension": "A String", # The dimension from which deleted cells will be replaced with. 12853 # If ROWS, existing cells will be shifted upward to 12854 # replace the deleted cells. If COLUMNS, existing cells 12855 # will be shifted left to replace the deleted cells. 12856 }, 12857 "clearBasicFilter": { # Clears the basic filter, if any exists on the sheet. # Clears the basic filter on a sheet. 12858 "sheetId": 42, # The sheet ID on which the basic filter should be cleared. 12859 }, 12860 "textToColumns": { # Splits a column of text into multiple columns, # Converts a column of text into many columns of text. 12861 # based on a delimiter in each cell. 12862 "source": { # A range on a sheet. # The source data range. This must span exactly one column. 12863 # All indexes are zero-based. 12864 # Indexes are half open, e.g the start index is inclusive 12865 # and the end index is exclusive -- [start_index, end_index). 12866 # Missing indexes indicate the range is unbounded on that side. 12867 # 12868 # For example, if `"Sheet1"` is sheet ID 0, then: 12869 # 12870 # `Sheet1!A1:A1 == sheet_id: 0, 12871 # start_row_index: 0, end_row_index: 1, 12872 # start_column_index: 0, end_column_index: 1` 12873 # 12874 # `Sheet1!A3:B4 == sheet_id: 0, 12875 # start_row_index: 2, end_row_index: 4, 12876 # start_column_index: 0, end_column_index: 2` 12877 # 12878 # `Sheet1!A:B == sheet_id: 0, 12879 # start_column_index: 0, end_column_index: 2` 12880 # 12881 # `Sheet1!A5:B == sheet_id: 0, 12882 # start_row_index: 4, 12883 # start_column_index: 0, end_column_index: 2` 12884 # 12885 # `Sheet1 == sheet_id:0` 12886 # 12887 # The start index must always be less than or equal to the end index. 12888 # If the start index equals the end index, then the range is empty. 12889 # Empty ranges are typically not meaningful and are usually rendered in the 12890 # UI as `#REF!`. 12891 "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded. 12892 "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded. 12893 "sheetId": 42, # The sheet this range is on. 12894 "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded. 12895 "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded. 12896 }, 12897 "delimiter": "A String", # The delimiter to use. Used only if delimiterType is 12898 # CUSTOM. 12899 "delimiterType": "A String", # The delimiter type to use. 12900 }, 12901 "updateChartSpec": { # Updates a chart's specifications. # Updates a chart's specifications. 12902 # (This does not move or resize a chart. To move or resize a chart, use 12903 # UpdateEmbeddedObjectPositionRequest.) 12904 "chartId": 42, # The ID of the chart to update. 12905 "spec": { # The specifications of a chart. # The specification to apply to the chart. 12906 "hiddenDimensionStrategy": "A String", # Determines how the charts will use hidden rows or columns. 12907 "pieChart": { # A <a href="/chart/interactive/docs/gallery/piechart">pie chart</a>. # A pie chart specification. 12908 "series": { # The data included in a domain or series. # The data that covers the one and only series of the pie chart. 12909 "sourceRange": { # Source ranges for a chart. # The source ranges of the data. 12910 "sources": [ # The ranges of data for a series or domain. 12911 # Exactly one dimension must have a length of 1, 12912 # and all sources in the list must have the same dimension 12913 # with length 1. 12914 # The domain (if it exists) & all series must have the same number 12915 # of source ranges. If using more than one source range, then the source 12916 # range at a given offset must be contiguous across the domain and series. 12917 # 12918 # For example, these are valid configurations: 12919 # 12920 # domain sources: A1:A5 12921 # series1 sources: B1:B5 12922 # series2 sources: D6:D10 12923 # 12924 # domain sources: A1:A5, C10:C12 12925 # series1 sources: B1:B5, D10:D12 12926 # series2 sources: C1:C5, E10:E12 12927 { # A range on a sheet. 12928 # All indexes are zero-based. 12929 # Indexes are half open, e.g the start index is inclusive 12930 # and the end index is exclusive -- [start_index, end_index). 12931 # Missing indexes indicate the range is unbounded on that side. 12932 # 12933 # For example, if `"Sheet1"` is sheet ID 0, then: 12934 # 12935 # `Sheet1!A1:A1 == sheet_id: 0, 12936 # start_row_index: 0, end_row_index: 1, 12937 # start_column_index: 0, end_column_index: 1` 12938 # 12939 # `Sheet1!A3:B4 == sheet_id: 0, 12940 # start_row_index: 2, end_row_index: 4, 12941 # start_column_index: 0, end_column_index: 2` 12942 # 12943 # `Sheet1!A:B == sheet_id: 0, 12944 # start_column_index: 0, end_column_index: 2` 12945 # 12946 # `Sheet1!A5:B == sheet_id: 0, 12947 # start_row_index: 4, 12948 # start_column_index: 0, end_column_index: 2` 12949 # 12950 # `Sheet1 == sheet_id:0` 12951 # 12952 # The start index must always be less than or equal to the end index. 12953 # If the start index equals the end index, then the range is empty. 12954 # Empty ranges are typically not meaningful and are usually rendered in the 12955 # UI as `#REF!`. 12956 "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded. 12957 "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded. 12958 "sheetId": 42, # The sheet this range is on. 12959 "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded. 12960 "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded. 12961 }, 12962 ], 12963 }, 12964 }, 12965 "domain": { # The data included in a domain or series. # The data that covers the domain of the pie chart. 12966 "sourceRange": { # Source ranges for a chart. # The source ranges of the data. 12967 "sources": [ # The ranges of data for a series or domain. 12968 # Exactly one dimension must have a length of 1, 12969 # and all sources in the list must have the same dimension 12970 # with length 1. 12971 # The domain (if it exists) & all series must have the same number 12972 # of source ranges. If using more than one source range, then the source 12973 # range at a given offset must be contiguous across the domain and series. 12974 # 12975 # For example, these are valid configurations: 12976 # 12977 # domain sources: A1:A5 12978 # series1 sources: B1:B5 12979 # series2 sources: D6:D10 12980 # 12981 # domain sources: A1:A5, C10:C12 12982 # series1 sources: B1:B5, D10:D12 12983 # series2 sources: C1:C5, E10:E12 12984 { # A range on a sheet. 12985 # All indexes are zero-based. 12986 # Indexes are half open, e.g the start index is inclusive 12987 # and the end index is exclusive -- [start_index, end_index). 12988 # Missing indexes indicate the range is unbounded on that side. 12989 # 12990 # For example, if `"Sheet1"` is sheet ID 0, then: 12991 # 12992 # `Sheet1!A1:A1 == sheet_id: 0, 12993 # start_row_index: 0, end_row_index: 1, 12994 # start_column_index: 0, end_column_index: 1` 12995 # 12996 # `Sheet1!A3:B4 == sheet_id: 0, 12997 # start_row_index: 2, end_row_index: 4, 12998 # start_column_index: 0, end_column_index: 2` 12999 # 13000 # `Sheet1!A:B == sheet_id: 0, 13001 # start_column_index: 0, end_column_index: 2` 13002 # 13003 # `Sheet1!A5:B == sheet_id: 0, 13004 # start_row_index: 4, 13005 # start_column_index: 0, end_column_index: 2` 13006 # 13007 # `Sheet1 == sheet_id:0` 13008 # 13009 # The start index must always be less than or equal to the end index. 13010 # If the start index equals the end index, then the range is empty. 13011 # Empty ranges are typically not meaningful and are usually rendered in the 13012 # UI as `#REF!`. 13013 "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded. 13014 "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded. 13015 "sheetId": 42, # The sheet this range is on. 13016 "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded. 13017 "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded. 13018 }, 13019 ], 13020 }, 13021 }, 13022 "threeDimensional": True or False, # True if the pie is three dimensional. 13023 "legendPosition": "A String", # Where the legend of the pie chart should be drawn. 13024 "pieHole": 3.14, # The size of the hole in the pie chart. 13025 }, 13026 "basicChart": { # The specification for a basic chart. See BasicChartType for the list # A basic chart specification, can be one of many kinds of charts. 13027 # See BasicChartType for the list of all 13028 # charts this supports. 13029 # of charts this supports. 13030 "headerCount": 42, # The number of rows or columns in the data that are "headers". 13031 # If not set, Google Sheets will guess how many rows are headers based 13032 # on the data. 13033 # 13034 # (Note that BasicChartAxis.title may override the axis title 13035 # inferred from the header values.) 13036 "series": [ # The data this chart is visualizing. 13037 { # A single series of data in a chart. 13038 # For example, if charting stock prices over time, multiple series may exist, 13039 # one for the "Open Price", "High Price", "Low Price" and "Close Price". 13040 "series": { # The data included in a domain or series. # The data being visualized in this chart series. 13041 "sourceRange": { # Source ranges for a chart. # The source ranges of the data. 13042 "sources": [ # The ranges of data for a series or domain. 13043 # Exactly one dimension must have a length of 1, 13044 # and all sources in the list must have the same dimension 13045 # with length 1. 13046 # The domain (if it exists) & all series must have the same number 13047 # of source ranges. If using more than one source range, then the source 13048 # range at a given offset must be contiguous across the domain and series. 13049 # 13050 # For example, these are valid configurations: 13051 # 13052 # domain sources: A1:A5 13053 # series1 sources: B1:B5 13054 # series2 sources: D6:D10 13055 # 13056 # domain sources: A1:A5, C10:C12 13057 # series1 sources: B1:B5, D10:D12 13058 # series2 sources: C1:C5, E10:E12 13059 { # A range on a sheet. 13060 # All indexes are zero-based. 13061 # Indexes are half open, e.g the start index is inclusive 13062 # and the end index is exclusive -- [start_index, end_index). 13063 # Missing indexes indicate the range is unbounded on that side. 13064 # 13065 # For example, if `"Sheet1"` is sheet ID 0, then: 13066 # 13067 # `Sheet1!A1:A1 == sheet_id: 0, 13068 # start_row_index: 0, end_row_index: 1, 13069 # start_column_index: 0, end_column_index: 1` 13070 # 13071 # `Sheet1!A3:B4 == sheet_id: 0, 13072 # start_row_index: 2, end_row_index: 4, 13073 # start_column_index: 0, end_column_index: 2` 13074 # 13075 # `Sheet1!A:B == sheet_id: 0, 13076 # start_column_index: 0, end_column_index: 2` 13077 # 13078 # `Sheet1!A5:B == sheet_id: 0, 13079 # start_row_index: 4, 13080 # start_column_index: 0, end_column_index: 2` 13081 # 13082 # `Sheet1 == sheet_id:0` 13083 # 13084 # The start index must always be less than or equal to the end index. 13085 # If the start index equals the end index, then the range is empty. 13086 # Empty ranges are typically not meaningful and are usually rendered in the 13087 # UI as `#REF!`. 13088 "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded. 13089 "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded. 13090 "sheetId": 42, # The sheet this range is on. 13091 "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded. 13092 "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded. 13093 }, 13094 ], 13095 }, 13096 }, 13097 "targetAxis": "A String", # The minor axis that will specify the range of values for this series. 13098 # For example, if charting stocks over time, the "Volume" series 13099 # may want to be pinned to the right with the prices pinned to the left, 13100 # because the scale of trading volume is different than the scale of 13101 # prices. 13102 # It is an error to specify an axis that isn't a valid minor axis 13103 # for the chart's type. 13104 "type": "A String", # The type of this series. Valid only if the 13105 # chartType is 13106 # COMBO. 13107 # Different types will change the way the series is visualized. 13108 # Only LINE, AREA, 13109 # and COLUMN are supported. 13110 }, 13111 ], 13112 "legendPosition": "A String", # The position of the chart legend. 13113 "domains": [ # The domain of data this is charting. 13114 # Only a single domain is supported. 13115 { # The domain of a chart. 13116 # For example, if charting stock prices over time, this would be the date. 13117 "domain": { # The data included in a domain or series. # The data of the domain. For example, if charting stock prices over time, 13118 # this is the data representing the dates. 13119 "sourceRange": { # Source ranges for a chart. # The source ranges of the data. 13120 "sources": [ # The ranges of data for a series or domain. 13121 # Exactly one dimension must have a length of 1, 13122 # and all sources in the list must have the same dimension 13123 # with length 1. 13124 # The domain (if it exists) & all series must have the same number 13125 # of source ranges. If using more than one source range, then the source 13126 # range at a given offset must be contiguous across the domain and series. 13127 # 13128 # For example, these are valid configurations: 13129 # 13130 # domain sources: A1:A5 13131 # series1 sources: B1:B5 13132 # series2 sources: D6:D10 13133 # 13134 # domain sources: A1:A5, C10:C12 13135 # series1 sources: B1:B5, D10:D12 13136 # series2 sources: C1:C5, E10:E12 13137 { # A range on a sheet. 13138 # All indexes are zero-based. 13139 # Indexes are half open, e.g the start index is inclusive 13140 # and the end index is exclusive -- [start_index, end_index). 13141 # Missing indexes indicate the range is unbounded on that side. 13142 # 13143 # For example, if `"Sheet1"` is sheet ID 0, then: 13144 # 13145 # `Sheet1!A1:A1 == sheet_id: 0, 13146 # start_row_index: 0, end_row_index: 1, 13147 # start_column_index: 0, end_column_index: 1` 13148 # 13149 # `Sheet1!A3:B4 == sheet_id: 0, 13150 # start_row_index: 2, end_row_index: 4, 13151 # start_column_index: 0, end_column_index: 2` 13152 # 13153 # `Sheet1!A:B == sheet_id: 0, 13154 # start_column_index: 0, end_column_index: 2` 13155 # 13156 # `Sheet1!A5:B == sheet_id: 0, 13157 # start_row_index: 4, 13158 # start_column_index: 0, end_column_index: 2` 13159 # 13160 # `Sheet1 == sheet_id:0` 13161 # 13162 # The start index must always be less than or equal to the end index. 13163 # If the start index equals the end index, then the range is empty. 13164 # Empty ranges are typically not meaningful and are usually rendered in the 13165 # UI as `#REF!`. 13166 "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded. 13167 "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded. 13168 "sheetId": 42, # The sheet this range is on. 13169 "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded. 13170 "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded. 13171 }, 13172 ], 13173 }, 13174 }, 13175 }, 13176 ], 13177 "chartType": "A String", # The type of the chart. 13178 "axis": [ # The axis on the chart. 13179 { # An axis of the chart. 13180 # A chart may not have more than one axis per 13181 # axis position. 13182 "position": "A String", # The position of this axis. 13183 "format": { # The format of a run of text in a cell. # The format of the title. 13184 # Only valid if the axis is not associated with the domain. 13185 # Absent values indicate that the field isn't specified. 13186 "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text. 13187 # for simplicity of conversion to/from color representations in various 13188 # languages over compactness; for example, the fields of this representation 13189 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 13190 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 13191 # method in iOS; and, with just a little work, it can be easily formatted into 13192 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 13193 # 13194 # Example (Java): 13195 # 13196 # import com.google.type.Color; 13197 # 13198 # // ... 13199 # public static java.awt.Color fromProto(Color protocolor) { 13200 # float alpha = protocolor.hasAlpha() 13201 # ? protocolor.getAlpha().getValue() 13202 # : 1.0; 13203 # 13204 # return new java.awt.Color( 13205 # protocolor.getRed(), 13206 # protocolor.getGreen(), 13207 # protocolor.getBlue(), 13208 # alpha); 13209 # } 13210 # 13211 # public static Color toProto(java.awt.Color color) { 13212 # float red = (float) color.getRed(); 13213 # float green = (float) color.getGreen(); 13214 # float blue = (float) color.getBlue(); 13215 # float denominator = 255.0; 13216 # Color.Builder resultBuilder = 13217 # Color 13218 # .newBuilder() 13219 # .setRed(red / denominator) 13220 # .setGreen(green / denominator) 13221 # .setBlue(blue / denominator); 13222 # int alpha = color.getAlpha(); 13223 # if (alpha != 255) { 13224 # result.setAlpha( 13225 # FloatValue 13226 # .newBuilder() 13227 # .setValue(((float) alpha) / denominator) 13228 # .build()); 13229 # } 13230 # return resultBuilder.build(); 13231 # } 13232 # // ... 13233 # 13234 # Example (iOS / Obj-C): 13235 # 13236 # // ... 13237 # static UIColor* fromProto(Color* protocolor) { 13238 # float red = [protocolor red]; 13239 # float green = [protocolor green]; 13240 # float blue = [protocolor blue]; 13241 # FloatValue* alpha_wrapper = [protocolor alpha]; 13242 # float alpha = 1.0; 13243 # if (alpha_wrapper != nil) { 13244 # alpha = [alpha_wrapper value]; 13245 # } 13246 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 13247 # } 13248 # 13249 # static Color* toProto(UIColor* color) { 13250 # CGFloat red, green, blue, alpha; 13251 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 13252 # return nil; 13253 # } 13254 # Color* result = [Color alloc] init]; 13255 # [result setRed:red]; 13256 # [result setGreen:green]; 13257 # [result setBlue:blue]; 13258 # if (alpha <= 0.9999) { 13259 # [result setAlpha:floatWrapperWithValue(alpha)]; 13260 # } 13261 # [result autorelease]; 13262 # return result; 13263 # } 13264 # // ... 13265 # 13266 # Example (JavaScript): 13267 # 13268 # // ... 13269 # 13270 # var protoToCssColor = function(rgb_color) { 13271 # var redFrac = rgb_color.red || 0.0; 13272 # var greenFrac = rgb_color.green || 0.0; 13273 # var blueFrac = rgb_color.blue || 0.0; 13274 # var red = Math.floor(redFrac * 255); 13275 # var green = Math.floor(greenFrac * 255); 13276 # var blue = Math.floor(blueFrac * 255); 13277 # 13278 # if (!('alpha' in rgb_color)) { 13279 # return rgbToCssColor_(red, green, blue); 13280 # } 13281 # 13282 # var alphaFrac = rgb_color.alpha.value || 0.0; 13283 # var rgbParams = [red, green, blue].join(','); 13284 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 13285 # }; 13286 # 13287 # var rgbToCssColor_ = function(red, green, blue) { 13288 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 13289 # var hexString = rgbNumber.toString(16); 13290 # var missingZeros = 6 - hexString.length; 13291 # var resultBuilder = ['#']; 13292 # for (var i = 0; i < missingZeros; i++) { 13293 # resultBuilder.push('0'); 13294 # } 13295 # resultBuilder.push(hexString); 13296 # return resultBuilder.join(''); 13297 # }; 13298 # 13299 # // ... 13300 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 13301 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 13302 # the final pixel color is defined by the equation: 13303 # 13304 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 13305 # 13306 # This means that a value of 1.0 corresponds to a solid color, whereas 13307 # a value of 0.0 corresponds to a completely transparent color. This 13308 # uses a wrapper message rather than a simple float scalar so that it is 13309 # possible to distinguish between a default value and the value being unset. 13310 # If omitted, this color object is to be rendered as a solid color 13311 # (as if the alpha value had been explicitly given with a value of 1.0). 13312 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 13313 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 13314 }, 13315 "bold": True or False, # True if the text is bold. 13316 "strikethrough": True or False, # True if the text has a strikethrough. 13317 "fontFamily": "A String", # The font family. 13318 "fontSize": 42, # The size of the font. 13319 "italic": True or False, # True if the text is italicized. 13320 "underline": True or False, # True if the text is underlined. 13321 }, 13322 "title": "A String", # The title of this axis. If set, this overrides any title inferred 13323 # from headers of the data. 13324 }, 13325 ], 13326 }, 13327 "title": "A String", # The title of the chart. 13328 }, 13329 }, 13330 "moveDimension": { # Moves one or more rows or columns. # Moves rows or columns to another location in a sheet. 13331 "source": { # A range along a single dimension on a sheet. # The source dimensions to move. 13332 # All indexes are zero-based. 13333 # Indexes are half open: the start index is inclusive 13334 # and the end index is exclusive. 13335 # Missing indexes indicate the range is unbounded on that side. 13336 "endIndex": 42, # The end (exclusive) of the span, or not set if unbounded. 13337 "startIndex": 42, # The start (inclusive) of the span, or not set if unbounded. 13338 "dimension": "A String", # The dimension of the span. 13339 "sheetId": 42, # The sheet this span is on. 13340 }, 13341 "destinationIndex": 42, # The zero-based start index of where to move the source data to, 13342 # based on the coordinates *before* the source data is removed 13343 # from the grid. Existing data will be shifted down or right 13344 # (depending on the dimension) to make room for the moved dimensions. 13345 # The source dimensions are removed from the grid, so the 13346 # the data may end up in a different index than specified. 13347 # 13348 # For example, given `A1..A5` of `0, 1, 2, 3, 4` and wanting to move 13349 # `"1"` and `"2"` to between `"3"` and `"4"`, the source would be 13350 # `ROWS [1..3)`,and the destination index would be `"4"` 13351 # (the zero-based index of row 5). 13352 # The end result would be `A1..A5` of `0, 3, 1, 2, 4`. 13353 }, 13354 "addNamedRange": { # Adds a named range to the spreadsheet. # Adds a named range. 13355 "namedRange": { # A named range. # The named range to add. The namedRangeId 13356 # field is optional; if one is not set, an id will be randomly generated. (It 13357 # is an error to specify the ID of a range that already exists.) 13358 "namedRangeId": "A String", # The ID of the named range. 13359 "range": { # A range on a sheet. # The range this represents. 13360 # All indexes are zero-based. 13361 # Indexes are half open, e.g the start index is inclusive 13362 # and the end index is exclusive -- [start_index, end_index). 13363 # Missing indexes indicate the range is unbounded on that side. 13364 # 13365 # For example, if `"Sheet1"` is sheet ID 0, then: 13366 # 13367 # `Sheet1!A1:A1 == sheet_id: 0, 13368 # start_row_index: 0, end_row_index: 1, 13369 # start_column_index: 0, end_column_index: 1` 13370 # 13371 # `Sheet1!A3:B4 == sheet_id: 0, 13372 # start_row_index: 2, end_row_index: 4, 13373 # start_column_index: 0, end_column_index: 2` 13374 # 13375 # `Sheet1!A:B == sheet_id: 0, 13376 # start_column_index: 0, end_column_index: 2` 13377 # 13378 # `Sheet1!A5:B == sheet_id: 0, 13379 # start_row_index: 4, 13380 # start_column_index: 0, end_column_index: 2` 13381 # 13382 # `Sheet1 == sheet_id:0` 13383 # 13384 # The start index must always be less than or equal to the end index. 13385 # If the start index equals the end index, then the range is empty. 13386 # Empty ranges are typically not meaningful and are usually rendered in the 13387 # UI as `#REF!`. 13388 "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded. 13389 "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded. 13390 "sheetId": 42, # The sheet this range is on. 13391 "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded. 13392 "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded. 13393 }, 13394 "name": "A String", # The name of the named range. 13395 }, 13396 }, 13397 "addBanding": { # Adds a new banded range to the spreadsheet. # Adds a new banded range 13398 "bandedRange": { # A banded (alternating colors) range in a sheet. # The banded range to add. The bandedRangeId 13399 # field is optional; if one is not set, an id will be randomly generated. (It 13400 # is an error to specify the ID of a range that already exists.) 13401 "range": { # A range on a sheet. # The range over which these properties are applied. 13402 # All indexes are zero-based. 13403 # Indexes are half open, e.g the start index is inclusive 13404 # and the end index is exclusive -- [start_index, end_index). 13405 # Missing indexes indicate the range is unbounded on that side. 13406 # 13407 # For example, if `"Sheet1"` is sheet ID 0, then: 13408 # 13409 # `Sheet1!A1:A1 == sheet_id: 0, 13410 # start_row_index: 0, end_row_index: 1, 13411 # start_column_index: 0, end_column_index: 1` 13412 # 13413 # `Sheet1!A3:B4 == sheet_id: 0, 13414 # start_row_index: 2, end_row_index: 4, 13415 # start_column_index: 0, end_column_index: 2` 13416 # 13417 # `Sheet1!A:B == sheet_id: 0, 13418 # start_column_index: 0, end_column_index: 2` 13419 # 13420 # `Sheet1!A5:B == sheet_id: 0, 13421 # start_row_index: 4, 13422 # start_column_index: 0, end_column_index: 2` 13423 # 13424 # `Sheet1 == sheet_id:0` 13425 # 13426 # The start index must always be less than or equal to the end index. 13427 # If the start index equals the end index, then the range is empty. 13428 # Empty ranges are typically not meaningful and are usually rendered in the 13429 # UI as `#REF!`. 13430 "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded. 13431 "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded. 13432 "sheetId": 42, # The sheet this range is on. 13433 "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded. 13434 "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded. 13435 }, 13436 "columnProperties": { # Properties referring a single dimension (either row or column). If both # Properties for column bands. These properties will be applied on a column- 13437 # by-column basis throughout all the columns in the range. At least one of 13438 # row_properties or column_properties must be specified. 13439 # BandedRange.row_properties and BandedRange.column_properties are 13440 # set, the fill colors are applied to cells according to the following rules: 13441 # 13442 # * header_color and footer_color take priority over band colors. 13443 # * first_band_color takes priority over second_band_color. 13444 # * row_properties takes priority over column_properties. 13445 # 13446 # For example, the first row color takes priority over the first column 13447 # color, but the first column color takes priority over the second row color. 13448 # Similarly, the row header takes priority over the column header in the 13449 # top left cell, but the column header takes priority over the first row 13450 # color if the row header is not set. 13451 "secondBandColor": { # Represents a color in the RGBA color space. This representation is designed # The second color that is alternating. (Required) 13452 # for simplicity of conversion to/from color representations in various 13453 # languages over compactness; for example, the fields of this representation 13454 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 13455 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 13456 # method in iOS; and, with just a little work, it can be easily formatted into 13457 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 13458 # 13459 # Example (Java): 13460 # 13461 # import com.google.type.Color; 13462 # 13463 # // ... 13464 # public static java.awt.Color fromProto(Color protocolor) { 13465 # float alpha = protocolor.hasAlpha() 13466 # ? protocolor.getAlpha().getValue() 13467 # : 1.0; 13468 # 13469 # return new java.awt.Color( 13470 # protocolor.getRed(), 13471 # protocolor.getGreen(), 13472 # protocolor.getBlue(), 13473 # alpha); 13474 # } 13475 # 13476 # public static Color toProto(java.awt.Color color) { 13477 # float red = (float) color.getRed(); 13478 # float green = (float) color.getGreen(); 13479 # float blue = (float) color.getBlue(); 13480 # float denominator = 255.0; 13481 # Color.Builder resultBuilder = 13482 # Color 13483 # .newBuilder() 13484 # .setRed(red / denominator) 13485 # .setGreen(green / denominator) 13486 # .setBlue(blue / denominator); 13487 # int alpha = color.getAlpha(); 13488 # if (alpha != 255) { 13489 # result.setAlpha( 13490 # FloatValue 13491 # .newBuilder() 13492 # .setValue(((float) alpha) / denominator) 13493 # .build()); 13494 # } 13495 # return resultBuilder.build(); 13496 # } 13497 # // ... 13498 # 13499 # Example (iOS / Obj-C): 13500 # 13501 # // ... 13502 # static UIColor* fromProto(Color* protocolor) { 13503 # float red = [protocolor red]; 13504 # float green = [protocolor green]; 13505 # float blue = [protocolor blue]; 13506 # FloatValue* alpha_wrapper = [protocolor alpha]; 13507 # float alpha = 1.0; 13508 # if (alpha_wrapper != nil) { 13509 # alpha = [alpha_wrapper value]; 13510 # } 13511 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 13512 # } 13513 # 13514 # static Color* toProto(UIColor* color) { 13515 # CGFloat red, green, blue, alpha; 13516 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 13517 # return nil; 13518 # } 13519 # Color* result = [Color alloc] init]; 13520 # [result setRed:red]; 13521 # [result setGreen:green]; 13522 # [result setBlue:blue]; 13523 # if (alpha <= 0.9999) { 13524 # [result setAlpha:floatWrapperWithValue(alpha)]; 13525 # } 13526 # [result autorelease]; 13527 # return result; 13528 # } 13529 # // ... 13530 # 13531 # Example (JavaScript): 13532 # 13533 # // ... 13534 # 13535 # var protoToCssColor = function(rgb_color) { 13536 # var redFrac = rgb_color.red || 0.0; 13537 # var greenFrac = rgb_color.green || 0.0; 13538 # var blueFrac = rgb_color.blue || 0.0; 13539 # var red = Math.floor(redFrac * 255); 13540 # var green = Math.floor(greenFrac * 255); 13541 # var blue = Math.floor(blueFrac * 255); 13542 # 13543 # if (!('alpha' in rgb_color)) { 13544 # return rgbToCssColor_(red, green, blue); 13545 # } 13546 # 13547 # var alphaFrac = rgb_color.alpha.value || 0.0; 13548 # var rgbParams = [red, green, blue].join(','); 13549 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 13550 # }; 13551 # 13552 # var rgbToCssColor_ = function(red, green, blue) { 13553 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 13554 # var hexString = rgbNumber.toString(16); 13555 # var missingZeros = 6 - hexString.length; 13556 # var resultBuilder = ['#']; 13557 # for (var i = 0; i < missingZeros; i++) { 13558 # resultBuilder.push('0'); 13559 # } 13560 # resultBuilder.push(hexString); 13561 # return resultBuilder.join(''); 13562 # }; 13563 # 13564 # // ... 13565 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 13566 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 13567 # the final pixel color is defined by the equation: 13568 # 13569 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 13570 # 13571 # This means that a value of 1.0 corresponds to a solid color, whereas 13572 # a value of 0.0 corresponds to a completely transparent color. This 13573 # uses a wrapper message rather than a simple float scalar so that it is 13574 # possible to distinguish between a default value and the value being unset. 13575 # If omitted, this color object is to be rendered as a solid color 13576 # (as if the alpha value had been explicitly given with a value of 1.0). 13577 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 13578 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 13579 }, 13580 "headerColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the first row or column. If this field is set, the first 13581 # row or column will be filled with this color and the colors will 13582 # alternate between first_band_color and second_band_color starting 13583 # from the second row or column. Otherwise, the first row or column will be 13584 # filled with first_band_color and the colors will proceed to alternate 13585 # as they normally would. 13586 # for simplicity of conversion to/from color representations in various 13587 # languages over compactness; for example, the fields of this representation 13588 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 13589 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 13590 # method in iOS; and, with just a little work, it can be easily formatted into 13591 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 13592 # 13593 # Example (Java): 13594 # 13595 # import com.google.type.Color; 13596 # 13597 # // ... 13598 # public static java.awt.Color fromProto(Color protocolor) { 13599 # float alpha = protocolor.hasAlpha() 13600 # ? protocolor.getAlpha().getValue() 13601 # : 1.0; 13602 # 13603 # return new java.awt.Color( 13604 # protocolor.getRed(), 13605 # protocolor.getGreen(), 13606 # protocolor.getBlue(), 13607 # alpha); 13608 # } 13609 # 13610 # public static Color toProto(java.awt.Color color) { 13611 # float red = (float) color.getRed(); 13612 # float green = (float) color.getGreen(); 13613 # float blue = (float) color.getBlue(); 13614 # float denominator = 255.0; 13615 # Color.Builder resultBuilder = 13616 # Color 13617 # .newBuilder() 13618 # .setRed(red / denominator) 13619 # .setGreen(green / denominator) 13620 # .setBlue(blue / denominator); 13621 # int alpha = color.getAlpha(); 13622 # if (alpha != 255) { 13623 # result.setAlpha( 13624 # FloatValue 13625 # .newBuilder() 13626 # .setValue(((float) alpha) / denominator) 13627 # .build()); 13628 # } 13629 # return resultBuilder.build(); 13630 # } 13631 # // ... 13632 # 13633 # Example (iOS / Obj-C): 13634 # 13635 # // ... 13636 # static UIColor* fromProto(Color* protocolor) { 13637 # float red = [protocolor red]; 13638 # float green = [protocolor green]; 13639 # float blue = [protocolor blue]; 13640 # FloatValue* alpha_wrapper = [protocolor alpha]; 13641 # float alpha = 1.0; 13642 # if (alpha_wrapper != nil) { 13643 # alpha = [alpha_wrapper value]; 13644 # } 13645 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 13646 # } 13647 # 13648 # static Color* toProto(UIColor* color) { 13649 # CGFloat red, green, blue, alpha; 13650 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 13651 # return nil; 13652 # } 13653 # Color* result = [Color alloc] init]; 13654 # [result setRed:red]; 13655 # [result setGreen:green]; 13656 # [result setBlue:blue]; 13657 # if (alpha <= 0.9999) { 13658 # [result setAlpha:floatWrapperWithValue(alpha)]; 13659 # } 13660 # [result autorelease]; 13661 # return result; 13662 # } 13663 # // ... 13664 # 13665 # Example (JavaScript): 13666 # 13667 # // ... 13668 # 13669 # var protoToCssColor = function(rgb_color) { 13670 # var redFrac = rgb_color.red || 0.0; 13671 # var greenFrac = rgb_color.green || 0.0; 13672 # var blueFrac = rgb_color.blue || 0.0; 13673 # var red = Math.floor(redFrac * 255); 13674 # var green = Math.floor(greenFrac * 255); 13675 # var blue = Math.floor(blueFrac * 255); 13676 # 13677 # if (!('alpha' in rgb_color)) { 13678 # return rgbToCssColor_(red, green, blue); 13679 # } 13680 # 13681 # var alphaFrac = rgb_color.alpha.value || 0.0; 13682 # var rgbParams = [red, green, blue].join(','); 13683 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 13684 # }; 13685 # 13686 # var rgbToCssColor_ = function(red, green, blue) { 13687 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 13688 # var hexString = rgbNumber.toString(16); 13689 # var missingZeros = 6 - hexString.length; 13690 # var resultBuilder = ['#']; 13691 # for (var i = 0; i < missingZeros; i++) { 13692 # resultBuilder.push('0'); 13693 # } 13694 # resultBuilder.push(hexString); 13695 # return resultBuilder.join(''); 13696 # }; 13697 # 13698 # // ... 13699 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 13700 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 13701 # the final pixel color is defined by the equation: 13702 # 13703 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 13704 # 13705 # This means that a value of 1.0 corresponds to a solid color, whereas 13706 # a value of 0.0 corresponds to a completely transparent color. This 13707 # uses a wrapper message rather than a simple float scalar so that it is 13708 # possible to distinguish between a default value and the value being unset. 13709 # If omitted, this color object is to be rendered as a solid color 13710 # (as if the alpha value had been explicitly given with a value of 1.0). 13711 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 13712 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 13713 }, 13714 "footerColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the last row or column. If this field is not set, the last 13715 # row or column will be filled with either first_band_color or 13716 # second_band_color, depending on the color of the previous row or 13717 # column. 13718 # for simplicity of conversion to/from color representations in various 13719 # languages over compactness; for example, the fields of this representation 13720 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 13721 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 13722 # method in iOS; and, with just a little work, it can be easily formatted into 13723 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 13724 # 13725 # Example (Java): 13726 # 13727 # import com.google.type.Color; 13728 # 13729 # // ... 13730 # public static java.awt.Color fromProto(Color protocolor) { 13731 # float alpha = protocolor.hasAlpha() 13732 # ? protocolor.getAlpha().getValue() 13733 # : 1.0; 13734 # 13735 # return new java.awt.Color( 13736 # protocolor.getRed(), 13737 # protocolor.getGreen(), 13738 # protocolor.getBlue(), 13739 # alpha); 13740 # } 13741 # 13742 # public static Color toProto(java.awt.Color color) { 13743 # float red = (float) color.getRed(); 13744 # float green = (float) color.getGreen(); 13745 # float blue = (float) color.getBlue(); 13746 # float denominator = 255.0; 13747 # Color.Builder resultBuilder = 13748 # Color 13749 # .newBuilder() 13750 # .setRed(red / denominator) 13751 # .setGreen(green / denominator) 13752 # .setBlue(blue / denominator); 13753 # int alpha = color.getAlpha(); 13754 # if (alpha != 255) { 13755 # result.setAlpha( 13756 # FloatValue 13757 # .newBuilder() 13758 # .setValue(((float) alpha) / denominator) 13759 # .build()); 13760 # } 13761 # return resultBuilder.build(); 13762 # } 13763 # // ... 13764 # 13765 # Example (iOS / Obj-C): 13766 # 13767 # // ... 13768 # static UIColor* fromProto(Color* protocolor) { 13769 # float red = [protocolor red]; 13770 # float green = [protocolor green]; 13771 # float blue = [protocolor blue]; 13772 # FloatValue* alpha_wrapper = [protocolor alpha]; 13773 # float alpha = 1.0; 13774 # if (alpha_wrapper != nil) { 13775 # alpha = [alpha_wrapper value]; 13776 # } 13777 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 13778 # } 13779 # 13780 # static Color* toProto(UIColor* color) { 13781 # CGFloat red, green, blue, alpha; 13782 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 13783 # return nil; 13784 # } 13785 # Color* result = [Color alloc] init]; 13786 # [result setRed:red]; 13787 # [result setGreen:green]; 13788 # [result setBlue:blue]; 13789 # if (alpha <= 0.9999) { 13790 # [result setAlpha:floatWrapperWithValue(alpha)]; 13791 # } 13792 # [result autorelease]; 13793 # return result; 13794 # } 13795 # // ... 13796 # 13797 # Example (JavaScript): 13798 # 13799 # // ... 13800 # 13801 # var protoToCssColor = function(rgb_color) { 13802 # var redFrac = rgb_color.red || 0.0; 13803 # var greenFrac = rgb_color.green || 0.0; 13804 # var blueFrac = rgb_color.blue || 0.0; 13805 # var red = Math.floor(redFrac * 255); 13806 # var green = Math.floor(greenFrac * 255); 13807 # var blue = Math.floor(blueFrac * 255); 13808 # 13809 # if (!('alpha' in rgb_color)) { 13810 # return rgbToCssColor_(red, green, blue); 13811 # } 13812 # 13813 # var alphaFrac = rgb_color.alpha.value || 0.0; 13814 # var rgbParams = [red, green, blue].join(','); 13815 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 13816 # }; 13817 # 13818 # var rgbToCssColor_ = function(red, green, blue) { 13819 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 13820 # var hexString = rgbNumber.toString(16); 13821 # var missingZeros = 6 - hexString.length; 13822 # var resultBuilder = ['#']; 13823 # for (var i = 0; i < missingZeros; i++) { 13824 # resultBuilder.push('0'); 13825 # } 13826 # resultBuilder.push(hexString); 13827 # return resultBuilder.join(''); 13828 # }; 13829 # 13830 # // ... 13831 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 13832 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 13833 # the final pixel color is defined by the equation: 13834 # 13835 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 13836 # 13837 # This means that a value of 1.0 corresponds to a solid color, whereas 13838 # a value of 0.0 corresponds to a completely transparent color. This 13839 # uses a wrapper message rather than a simple float scalar so that it is 13840 # possible to distinguish between a default value and the value being unset. 13841 # If omitted, this color object is to be rendered as a solid color 13842 # (as if the alpha value had been explicitly given with a value of 1.0). 13843 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 13844 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 13845 }, 13846 "firstBandColor": { # Represents a color in the RGBA color space. This representation is designed # The first color that is alternating. (Required) 13847 # for simplicity of conversion to/from color representations in various 13848 # languages over compactness; for example, the fields of this representation 13849 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 13850 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 13851 # method in iOS; and, with just a little work, it can be easily formatted into 13852 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 13853 # 13854 # Example (Java): 13855 # 13856 # import com.google.type.Color; 13857 # 13858 # // ... 13859 # public static java.awt.Color fromProto(Color protocolor) { 13860 # float alpha = protocolor.hasAlpha() 13861 # ? protocolor.getAlpha().getValue() 13862 # : 1.0; 13863 # 13864 # return new java.awt.Color( 13865 # protocolor.getRed(), 13866 # protocolor.getGreen(), 13867 # protocolor.getBlue(), 13868 # alpha); 13869 # } 13870 # 13871 # public static Color toProto(java.awt.Color color) { 13872 # float red = (float) color.getRed(); 13873 # float green = (float) color.getGreen(); 13874 # float blue = (float) color.getBlue(); 13875 # float denominator = 255.0; 13876 # Color.Builder resultBuilder = 13877 # Color 13878 # .newBuilder() 13879 # .setRed(red / denominator) 13880 # .setGreen(green / denominator) 13881 # .setBlue(blue / denominator); 13882 # int alpha = color.getAlpha(); 13883 # if (alpha != 255) { 13884 # result.setAlpha( 13885 # FloatValue 13886 # .newBuilder() 13887 # .setValue(((float) alpha) / denominator) 13888 # .build()); 13889 # } 13890 # return resultBuilder.build(); 13891 # } 13892 # // ... 13893 # 13894 # Example (iOS / Obj-C): 13895 # 13896 # // ... 13897 # static UIColor* fromProto(Color* protocolor) { 13898 # float red = [protocolor red]; 13899 # float green = [protocolor green]; 13900 # float blue = [protocolor blue]; 13901 # FloatValue* alpha_wrapper = [protocolor alpha]; 13902 # float alpha = 1.0; 13903 # if (alpha_wrapper != nil) { 13904 # alpha = [alpha_wrapper value]; 13905 # } 13906 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 13907 # } 13908 # 13909 # static Color* toProto(UIColor* color) { 13910 # CGFloat red, green, blue, alpha; 13911 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 13912 # return nil; 13913 # } 13914 # Color* result = [Color alloc] init]; 13915 # [result setRed:red]; 13916 # [result setGreen:green]; 13917 # [result setBlue:blue]; 13918 # if (alpha <= 0.9999) { 13919 # [result setAlpha:floatWrapperWithValue(alpha)]; 13920 # } 13921 # [result autorelease]; 13922 # return result; 13923 # } 13924 # // ... 13925 # 13926 # Example (JavaScript): 13927 # 13928 # // ... 13929 # 13930 # var protoToCssColor = function(rgb_color) { 13931 # var redFrac = rgb_color.red || 0.0; 13932 # var greenFrac = rgb_color.green || 0.0; 13933 # var blueFrac = rgb_color.blue || 0.0; 13934 # var red = Math.floor(redFrac * 255); 13935 # var green = Math.floor(greenFrac * 255); 13936 # var blue = Math.floor(blueFrac * 255); 13937 # 13938 # if (!('alpha' in rgb_color)) { 13939 # return rgbToCssColor_(red, green, blue); 13940 # } 13941 # 13942 # var alphaFrac = rgb_color.alpha.value || 0.0; 13943 # var rgbParams = [red, green, blue].join(','); 13944 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 13945 # }; 13946 # 13947 # var rgbToCssColor_ = function(red, green, blue) { 13948 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 13949 # var hexString = rgbNumber.toString(16); 13950 # var missingZeros = 6 - hexString.length; 13951 # var resultBuilder = ['#']; 13952 # for (var i = 0; i < missingZeros; i++) { 13953 # resultBuilder.push('0'); 13954 # } 13955 # resultBuilder.push(hexString); 13956 # return resultBuilder.join(''); 13957 # }; 13958 # 13959 # // ... 13960 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 13961 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 13962 # the final pixel color is defined by the equation: 13963 # 13964 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 13965 # 13966 # This means that a value of 1.0 corresponds to a solid color, whereas 13967 # a value of 0.0 corresponds to a completely transparent color. This 13968 # uses a wrapper message rather than a simple float scalar so that it is 13969 # possible to distinguish between a default value and the value being unset. 13970 # If omitted, this color object is to be rendered as a solid color 13971 # (as if the alpha value had been explicitly given with a value of 1.0). 13972 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 13973 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 13974 }, 13975 }, 13976 "rowProperties": { # Properties referring a single dimension (either row or column). If both # Properties for row bands. These properties will be applied on a row-by-row 13977 # basis throughout all the rows in the range. At least one of 13978 # row_properties or column_properties must be specified. 13979 # BandedRange.row_properties and BandedRange.column_properties are 13980 # set, the fill colors are applied to cells according to the following rules: 13981 # 13982 # * header_color and footer_color take priority over band colors. 13983 # * first_band_color takes priority over second_band_color. 13984 # * row_properties takes priority over column_properties. 13985 # 13986 # For example, the first row color takes priority over the first column 13987 # color, but the first column color takes priority over the second row color. 13988 # Similarly, the row header takes priority over the column header in the 13989 # top left cell, but the column header takes priority over the first row 13990 # color if the row header is not set. 13991 "secondBandColor": { # Represents a color in the RGBA color space. This representation is designed # The second color that is alternating. (Required) 13992 # for simplicity of conversion to/from color representations in various 13993 # languages over compactness; for example, the fields of this representation 13994 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 13995 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 13996 # method in iOS; and, with just a little work, it can be easily formatted into 13997 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 13998 # 13999 # Example (Java): 14000 # 14001 # import com.google.type.Color; 14002 # 14003 # // ... 14004 # public static java.awt.Color fromProto(Color protocolor) { 14005 # float alpha = protocolor.hasAlpha() 14006 # ? protocolor.getAlpha().getValue() 14007 # : 1.0; 14008 # 14009 # return new java.awt.Color( 14010 # protocolor.getRed(), 14011 # protocolor.getGreen(), 14012 # protocolor.getBlue(), 14013 # alpha); 14014 # } 14015 # 14016 # public static Color toProto(java.awt.Color color) { 14017 # float red = (float) color.getRed(); 14018 # float green = (float) color.getGreen(); 14019 # float blue = (float) color.getBlue(); 14020 # float denominator = 255.0; 14021 # Color.Builder resultBuilder = 14022 # Color 14023 # .newBuilder() 14024 # .setRed(red / denominator) 14025 # .setGreen(green / denominator) 14026 # .setBlue(blue / denominator); 14027 # int alpha = color.getAlpha(); 14028 # if (alpha != 255) { 14029 # result.setAlpha( 14030 # FloatValue 14031 # .newBuilder() 14032 # .setValue(((float) alpha) / denominator) 14033 # .build()); 14034 # } 14035 # return resultBuilder.build(); 14036 # } 14037 # // ... 14038 # 14039 # Example (iOS / Obj-C): 14040 # 14041 # // ... 14042 # static UIColor* fromProto(Color* protocolor) { 14043 # float red = [protocolor red]; 14044 # float green = [protocolor green]; 14045 # float blue = [protocolor blue]; 14046 # FloatValue* alpha_wrapper = [protocolor alpha]; 14047 # float alpha = 1.0; 14048 # if (alpha_wrapper != nil) { 14049 # alpha = [alpha_wrapper value]; 14050 # } 14051 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 14052 # } 14053 # 14054 # static Color* toProto(UIColor* color) { 14055 # CGFloat red, green, blue, alpha; 14056 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 14057 # return nil; 14058 # } 14059 # Color* result = [Color alloc] init]; 14060 # [result setRed:red]; 14061 # [result setGreen:green]; 14062 # [result setBlue:blue]; 14063 # if (alpha <= 0.9999) { 14064 # [result setAlpha:floatWrapperWithValue(alpha)]; 14065 # } 14066 # [result autorelease]; 14067 # return result; 14068 # } 14069 # // ... 14070 # 14071 # Example (JavaScript): 14072 # 14073 # // ... 14074 # 14075 # var protoToCssColor = function(rgb_color) { 14076 # var redFrac = rgb_color.red || 0.0; 14077 # var greenFrac = rgb_color.green || 0.0; 14078 # var blueFrac = rgb_color.blue || 0.0; 14079 # var red = Math.floor(redFrac * 255); 14080 # var green = Math.floor(greenFrac * 255); 14081 # var blue = Math.floor(blueFrac * 255); 14082 # 14083 # if (!('alpha' in rgb_color)) { 14084 # return rgbToCssColor_(red, green, blue); 14085 # } 14086 # 14087 # var alphaFrac = rgb_color.alpha.value || 0.0; 14088 # var rgbParams = [red, green, blue].join(','); 14089 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 14090 # }; 14091 # 14092 # var rgbToCssColor_ = function(red, green, blue) { 14093 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 14094 # var hexString = rgbNumber.toString(16); 14095 # var missingZeros = 6 - hexString.length; 14096 # var resultBuilder = ['#']; 14097 # for (var i = 0; i < missingZeros; i++) { 14098 # resultBuilder.push('0'); 14099 # } 14100 # resultBuilder.push(hexString); 14101 # return resultBuilder.join(''); 14102 # }; 14103 # 14104 # // ... 14105 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 14106 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 14107 # the final pixel color is defined by the equation: 14108 # 14109 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 14110 # 14111 # This means that a value of 1.0 corresponds to a solid color, whereas 14112 # a value of 0.0 corresponds to a completely transparent color. This 14113 # uses a wrapper message rather than a simple float scalar so that it is 14114 # possible to distinguish between a default value and the value being unset. 14115 # If omitted, this color object is to be rendered as a solid color 14116 # (as if the alpha value had been explicitly given with a value of 1.0). 14117 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 14118 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 14119 }, 14120 "headerColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the first row or column. If this field is set, the first 14121 # row or column will be filled with this color and the colors will 14122 # alternate between first_band_color and second_band_color starting 14123 # from the second row or column. Otherwise, the first row or column will be 14124 # filled with first_band_color and the colors will proceed to alternate 14125 # as they normally would. 14126 # for simplicity of conversion to/from color representations in various 14127 # languages over compactness; for example, the fields of this representation 14128 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 14129 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 14130 # method in iOS; and, with just a little work, it can be easily formatted into 14131 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 14132 # 14133 # Example (Java): 14134 # 14135 # import com.google.type.Color; 14136 # 14137 # // ... 14138 # public static java.awt.Color fromProto(Color protocolor) { 14139 # float alpha = protocolor.hasAlpha() 14140 # ? protocolor.getAlpha().getValue() 14141 # : 1.0; 14142 # 14143 # return new java.awt.Color( 14144 # protocolor.getRed(), 14145 # protocolor.getGreen(), 14146 # protocolor.getBlue(), 14147 # alpha); 14148 # } 14149 # 14150 # public static Color toProto(java.awt.Color color) { 14151 # float red = (float) color.getRed(); 14152 # float green = (float) color.getGreen(); 14153 # float blue = (float) color.getBlue(); 14154 # float denominator = 255.0; 14155 # Color.Builder resultBuilder = 14156 # Color 14157 # .newBuilder() 14158 # .setRed(red / denominator) 14159 # .setGreen(green / denominator) 14160 # .setBlue(blue / denominator); 14161 # int alpha = color.getAlpha(); 14162 # if (alpha != 255) { 14163 # result.setAlpha( 14164 # FloatValue 14165 # .newBuilder() 14166 # .setValue(((float) alpha) / denominator) 14167 # .build()); 14168 # } 14169 # return resultBuilder.build(); 14170 # } 14171 # // ... 14172 # 14173 # Example (iOS / Obj-C): 14174 # 14175 # // ... 14176 # static UIColor* fromProto(Color* protocolor) { 14177 # float red = [protocolor red]; 14178 # float green = [protocolor green]; 14179 # float blue = [protocolor blue]; 14180 # FloatValue* alpha_wrapper = [protocolor alpha]; 14181 # float alpha = 1.0; 14182 # if (alpha_wrapper != nil) { 14183 # alpha = [alpha_wrapper value]; 14184 # } 14185 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 14186 # } 14187 # 14188 # static Color* toProto(UIColor* color) { 14189 # CGFloat red, green, blue, alpha; 14190 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 14191 # return nil; 14192 # } 14193 # Color* result = [Color alloc] init]; 14194 # [result setRed:red]; 14195 # [result setGreen:green]; 14196 # [result setBlue:blue]; 14197 # if (alpha <= 0.9999) { 14198 # [result setAlpha:floatWrapperWithValue(alpha)]; 14199 # } 14200 # [result autorelease]; 14201 # return result; 14202 # } 14203 # // ... 14204 # 14205 # Example (JavaScript): 14206 # 14207 # // ... 14208 # 14209 # var protoToCssColor = function(rgb_color) { 14210 # var redFrac = rgb_color.red || 0.0; 14211 # var greenFrac = rgb_color.green || 0.0; 14212 # var blueFrac = rgb_color.blue || 0.0; 14213 # var red = Math.floor(redFrac * 255); 14214 # var green = Math.floor(greenFrac * 255); 14215 # var blue = Math.floor(blueFrac * 255); 14216 # 14217 # if (!('alpha' in rgb_color)) { 14218 # return rgbToCssColor_(red, green, blue); 14219 # } 14220 # 14221 # var alphaFrac = rgb_color.alpha.value || 0.0; 14222 # var rgbParams = [red, green, blue].join(','); 14223 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 14224 # }; 14225 # 14226 # var rgbToCssColor_ = function(red, green, blue) { 14227 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 14228 # var hexString = rgbNumber.toString(16); 14229 # var missingZeros = 6 - hexString.length; 14230 # var resultBuilder = ['#']; 14231 # for (var i = 0; i < missingZeros; i++) { 14232 # resultBuilder.push('0'); 14233 # } 14234 # resultBuilder.push(hexString); 14235 # return resultBuilder.join(''); 14236 # }; 14237 # 14238 # // ... 14239 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 14240 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 14241 # the final pixel color is defined by the equation: 14242 # 14243 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 14244 # 14245 # This means that a value of 1.0 corresponds to a solid color, whereas 14246 # a value of 0.0 corresponds to a completely transparent color. This 14247 # uses a wrapper message rather than a simple float scalar so that it is 14248 # possible to distinguish between a default value and the value being unset. 14249 # If omitted, this color object is to be rendered as a solid color 14250 # (as if the alpha value had been explicitly given with a value of 1.0). 14251 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 14252 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 14253 }, 14254 "footerColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the last row or column. If this field is not set, the last 14255 # row or column will be filled with either first_band_color or 14256 # second_band_color, depending on the color of the previous row or 14257 # column. 14258 # for simplicity of conversion to/from color representations in various 14259 # languages over compactness; for example, the fields of this representation 14260 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 14261 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 14262 # method in iOS; and, with just a little work, it can be easily formatted into 14263 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 14264 # 14265 # Example (Java): 14266 # 14267 # import com.google.type.Color; 14268 # 14269 # // ... 14270 # public static java.awt.Color fromProto(Color protocolor) { 14271 # float alpha = protocolor.hasAlpha() 14272 # ? protocolor.getAlpha().getValue() 14273 # : 1.0; 14274 # 14275 # return new java.awt.Color( 14276 # protocolor.getRed(), 14277 # protocolor.getGreen(), 14278 # protocolor.getBlue(), 14279 # alpha); 14280 # } 14281 # 14282 # public static Color toProto(java.awt.Color color) { 14283 # float red = (float) color.getRed(); 14284 # float green = (float) color.getGreen(); 14285 # float blue = (float) color.getBlue(); 14286 # float denominator = 255.0; 14287 # Color.Builder resultBuilder = 14288 # Color 14289 # .newBuilder() 14290 # .setRed(red / denominator) 14291 # .setGreen(green / denominator) 14292 # .setBlue(blue / denominator); 14293 # int alpha = color.getAlpha(); 14294 # if (alpha != 255) { 14295 # result.setAlpha( 14296 # FloatValue 14297 # .newBuilder() 14298 # .setValue(((float) alpha) / denominator) 14299 # .build()); 14300 # } 14301 # return resultBuilder.build(); 14302 # } 14303 # // ... 14304 # 14305 # Example (iOS / Obj-C): 14306 # 14307 # // ... 14308 # static UIColor* fromProto(Color* protocolor) { 14309 # float red = [protocolor red]; 14310 # float green = [protocolor green]; 14311 # float blue = [protocolor blue]; 14312 # FloatValue* alpha_wrapper = [protocolor alpha]; 14313 # float alpha = 1.0; 14314 # if (alpha_wrapper != nil) { 14315 # alpha = [alpha_wrapper value]; 14316 # } 14317 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 14318 # } 14319 # 14320 # static Color* toProto(UIColor* color) { 14321 # CGFloat red, green, blue, alpha; 14322 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 14323 # return nil; 14324 # } 14325 # Color* result = [Color alloc] init]; 14326 # [result setRed:red]; 14327 # [result setGreen:green]; 14328 # [result setBlue:blue]; 14329 # if (alpha <= 0.9999) { 14330 # [result setAlpha:floatWrapperWithValue(alpha)]; 14331 # } 14332 # [result autorelease]; 14333 # return result; 14334 # } 14335 # // ... 14336 # 14337 # Example (JavaScript): 14338 # 14339 # // ... 14340 # 14341 # var protoToCssColor = function(rgb_color) { 14342 # var redFrac = rgb_color.red || 0.0; 14343 # var greenFrac = rgb_color.green || 0.0; 14344 # var blueFrac = rgb_color.blue || 0.0; 14345 # var red = Math.floor(redFrac * 255); 14346 # var green = Math.floor(greenFrac * 255); 14347 # var blue = Math.floor(blueFrac * 255); 14348 # 14349 # if (!('alpha' in rgb_color)) { 14350 # return rgbToCssColor_(red, green, blue); 14351 # } 14352 # 14353 # var alphaFrac = rgb_color.alpha.value || 0.0; 14354 # var rgbParams = [red, green, blue].join(','); 14355 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 14356 # }; 14357 # 14358 # var rgbToCssColor_ = function(red, green, blue) { 14359 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 14360 # var hexString = rgbNumber.toString(16); 14361 # var missingZeros = 6 - hexString.length; 14362 # var resultBuilder = ['#']; 14363 # for (var i = 0; i < missingZeros; i++) { 14364 # resultBuilder.push('0'); 14365 # } 14366 # resultBuilder.push(hexString); 14367 # return resultBuilder.join(''); 14368 # }; 14369 # 14370 # // ... 14371 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 14372 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 14373 # the final pixel color is defined by the equation: 14374 # 14375 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 14376 # 14377 # This means that a value of 1.0 corresponds to a solid color, whereas 14378 # a value of 0.0 corresponds to a completely transparent color. This 14379 # uses a wrapper message rather than a simple float scalar so that it is 14380 # possible to distinguish between a default value and the value being unset. 14381 # If omitted, this color object is to be rendered as a solid color 14382 # (as if the alpha value had been explicitly given with a value of 1.0). 14383 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 14384 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 14385 }, 14386 "firstBandColor": { # Represents a color in the RGBA color space. This representation is designed # The first color that is alternating. (Required) 14387 # for simplicity of conversion to/from color representations in various 14388 # languages over compactness; for example, the fields of this representation 14389 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 14390 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 14391 # method in iOS; and, with just a little work, it can be easily formatted into 14392 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 14393 # 14394 # Example (Java): 14395 # 14396 # import com.google.type.Color; 14397 # 14398 # // ... 14399 # public static java.awt.Color fromProto(Color protocolor) { 14400 # float alpha = protocolor.hasAlpha() 14401 # ? protocolor.getAlpha().getValue() 14402 # : 1.0; 14403 # 14404 # return new java.awt.Color( 14405 # protocolor.getRed(), 14406 # protocolor.getGreen(), 14407 # protocolor.getBlue(), 14408 # alpha); 14409 # } 14410 # 14411 # public static Color toProto(java.awt.Color color) { 14412 # float red = (float) color.getRed(); 14413 # float green = (float) color.getGreen(); 14414 # float blue = (float) color.getBlue(); 14415 # float denominator = 255.0; 14416 # Color.Builder resultBuilder = 14417 # Color 14418 # .newBuilder() 14419 # .setRed(red / denominator) 14420 # .setGreen(green / denominator) 14421 # .setBlue(blue / denominator); 14422 # int alpha = color.getAlpha(); 14423 # if (alpha != 255) { 14424 # result.setAlpha( 14425 # FloatValue 14426 # .newBuilder() 14427 # .setValue(((float) alpha) / denominator) 14428 # .build()); 14429 # } 14430 # return resultBuilder.build(); 14431 # } 14432 # // ... 14433 # 14434 # Example (iOS / Obj-C): 14435 # 14436 # // ... 14437 # static UIColor* fromProto(Color* protocolor) { 14438 # float red = [protocolor red]; 14439 # float green = [protocolor green]; 14440 # float blue = [protocolor blue]; 14441 # FloatValue* alpha_wrapper = [protocolor alpha]; 14442 # float alpha = 1.0; 14443 # if (alpha_wrapper != nil) { 14444 # alpha = [alpha_wrapper value]; 14445 # } 14446 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 14447 # } 14448 # 14449 # static Color* toProto(UIColor* color) { 14450 # CGFloat red, green, blue, alpha; 14451 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 14452 # return nil; 14453 # } 14454 # Color* result = [Color alloc] init]; 14455 # [result setRed:red]; 14456 # [result setGreen:green]; 14457 # [result setBlue:blue]; 14458 # if (alpha <= 0.9999) { 14459 # [result setAlpha:floatWrapperWithValue(alpha)]; 14460 # } 14461 # [result autorelease]; 14462 # return result; 14463 # } 14464 # // ... 14465 # 14466 # Example (JavaScript): 14467 # 14468 # // ... 14469 # 14470 # var protoToCssColor = function(rgb_color) { 14471 # var redFrac = rgb_color.red || 0.0; 14472 # var greenFrac = rgb_color.green || 0.0; 14473 # var blueFrac = rgb_color.blue || 0.0; 14474 # var red = Math.floor(redFrac * 255); 14475 # var green = Math.floor(greenFrac * 255); 14476 # var blue = Math.floor(blueFrac * 255); 14477 # 14478 # if (!('alpha' in rgb_color)) { 14479 # return rgbToCssColor_(red, green, blue); 14480 # } 14481 # 14482 # var alphaFrac = rgb_color.alpha.value || 0.0; 14483 # var rgbParams = [red, green, blue].join(','); 14484 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 14485 # }; 14486 # 14487 # var rgbToCssColor_ = function(red, green, blue) { 14488 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 14489 # var hexString = rgbNumber.toString(16); 14490 # var missingZeros = 6 - hexString.length; 14491 # var resultBuilder = ['#']; 14492 # for (var i = 0; i < missingZeros; i++) { 14493 # resultBuilder.push('0'); 14494 # } 14495 # resultBuilder.push(hexString); 14496 # return resultBuilder.join(''); 14497 # }; 14498 # 14499 # // ... 14500 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 14501 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 14502 # the final pixel color is defined by the equation: 14503 # 14504 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 14505 # 14506 # This means that a value of 1.0 corresponds to a solid color, whereas 14507 # a value of 0.0 corresponds to a completely transparent color. This 14508 # uses a wrapper message rather than a simple float scalar so that it is 14509 # possible to distinguish between a default value and the value being unset. 14510 # If omitted, this color object is to be rendered as a solid color 14511 # (as if the alpha value had been explicitly given with a value of 1.0). 14512 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 14513 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 14514 }, 14515 }, 14516 "bandedRangeId": 42, # The id of the banded range. 14517 }, 14518 }, 14519 "deleteFilterView": { # Deletes a particular filter view. # Deletes a filter view from a sheet. 14520 "filterId": 42, # The ID of the filter to delete. 14521 }, 14522 "mergeCells": { # Merges all cells in the range. # Merges cells together. 14523 "range": { # A range on a sheet. # The range of cells to merge. 14524 # All indexes are zero-based. 14525 # Indexes are half open, e.g the start index is inclusive 14526 # and the end index is exclusive -- [start_index, end_index). 14527 # Missing indexes indicate the range is unbounded on that side. 14528 # 14529 # For example, if `"Sheet1"` is sheet ID 0, then: 14530 # 14531 # `Sheet1!A1:A1 == sheet_id: 0, 14532 # start_row_index: 0, end_row_index: 1, 14533 # start_column_index: 0, end_column_index: 1` 14534 # 14535 # `Sheet1!A3:B4 == sheet_id: 0, 14536 # start_row_index: 2, end_row_index: 4, 14537 # start_column_index: 0, end_column_index: 2` 14538 # 14539 # `Sheet1!A:B == sheet_id: 0, 14540 # start_column_index: 0, end_column_index: 2` 14541 # 14542 # `Sheet1!A5:B == sheet_id: 0, 14543 # start_row_index: 4, 14544 # start_column_index: 0, end_column_index: 2` 14545 # 14546 # `Sheet1 == sheet_id:0` 14547 # 14548 # The start index must always be less than or equal to the end index. 14549 # If the start index equals the end index, then the range is empty. 14550 # Empty ranges are typically not meaningful and are usually rendered in the 14551 # UI as `#REF!`. 14552 "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded. 14553 "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded. 14554 "sheetId": 42, # The sheet this range is on. 14555 "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded. 14556 "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded. 14557 }, 14558 "mergeType": "A String", # How the cells should be merged. 14559 }, 14560 "deleteProtectedRange": { # Deletes the protected range with the given ID. # Deletes a protected range. 14561 "protectedRangeId": 42, # The ID of the protected range to delete. 14562 }, 14563 "insertRange": { # Inserts cells into a range, shifting the existing cells over or down. # Inserts new cells in a sheet, shifting the existing cells. 14564 "range": { # A range on a sheet. # The range to insert new cells into. 14565 # All indexes are zero-based. 14566 # Indexes are half open, e.g the start index is inclusive 14567 # and the end index is exclusive -- [start_index, end_index). 14568 # Missing indexes indicate the range is unbounded on that side. 14569 # 14570 # For example, if `"Sheet1"` is sheet ID 0, then: 14571 # 14572 # `Sheet1!A1:A1 == sheet_id: 0, 14573 # start_row_index: 0, end_row_index: 1, 14574 # start_column_index: 0, end_column_index: 1` 14575 # 14576 # `Sheet1!A3:B4 == sheet_id: 0, 14577 # start_row_index: 2, end_row_index: 4, 14578 # start_column_index: 0, end_column_index: 2` 14579 # 14580 # `Sheet1!A:B == sheet_id: 0, 14581 # start_column_index: 0, end_column_index: 2` 14582 # 14583 # `Sheet1!A5:B == sheet_id: 0, 14584 # start_row_index: 4, 14585 # start_column_index: 0, end_column_index: 2` 14586 # 14587 # `Sheet1 == sheet_id:0` 14588 # 14589 # The start index must always be less than or equal to the end index. 14590 # If the start index equals the end index, then the range is empty. 14591 # Empty ranges are typically not meaningful and are usually rendered in the 14592 # UI as `#REF!`. 14593 "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded. 14594 "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded. 14595 "sheetId": 42, # The sheet this range is on. 14596 "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded. 14597 "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded. 14598 }, 14599 "shiftDimension": "A String", # The dimension which will be shifted when inserting cells. 14600 # If ROWS, existing cells will be shifted down. 14601 # If COLUMNS, existing cells will be shifted right. 14602 }, 14603 "deleteSheet": { # Deletes the requested sheet. # Deletes a sheet. 14604 "sheetId": 42, # The ID of the sheet to delete. 14605 }, 14606 "updateBorders": { # Updates the borders of a range. # Updates the borders in a range of cells. 14607 # If a field is not set in the request, that means the border remains as-is. 14608 # For example, with two subsequent UpdateBordersRequest: 14609 # 14610 # 1. range: A1:A5 `{ top: RED, bottom: WHITE }` 14611 # 2. range: A1:A5 `{ left: BLUE }` 14612 # 14613 # That would result in A1:A5 having a borders of 14614 # `{ top: RED, bottom: WHITE, left: BLUE }`. 14615 # If you want to clear a border, explicitly set the style to 14616 # NONE. 14617 "right": { # A border along a cell. # The border to put at the right of the range. 14618 "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border. 14619 # for simplicity of conversion to/from color representations in various 14620 # languages over compactness; for example, the fields of this representation 14621 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 14622 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 14623 # method in iOS; and, with just a little work, it can be easily formatted into 14624 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 14625 # 14626 # Example (Java): 14627 # 14628 # import com.google.type.Color; 14629 # 14630 # // ... 14631 # public static java.awt.Color fromProto(Color protocolor) { 14632 # float alpha = protocolor.hasAlpha() 14633 # ? protocolor.getAlpha().getValue() 14634 # : 1.0; 14635 # 14636 # return new java.awt.Color( 14637 # protocolor.getRed(), 14638 # protocolor.getGreen(), 14639 # protocolor.getBlue(), 14640 # alpha); 14641 # } 14642 # 14643 # public static Color toProto(java.awt.Color color) { 14644 # float red = (float) color.getRed(); 14645 # float green = (float) color.getGreen(); 14646 # float blue = (float) color.getBlue(); 14647 # float denominator = 255.0; 14648 # Color.Builder resultBuilder = 14649 # Color 14650 # .newBuilder() 14651 # .setRed(red / denominator) 14652 # .setGreen(green / denominator) 14653 # .setBlue(blue / denominator); 14654 # int alpha = color.getAlpha(); 14655 # if (alpha != 255) { 14656 # result.setAlpha( 14657 # FloatValue 14658 # .newBuilder() 14659 # .setValue(((float) alpha) / denominator) 14660 # .build()); 14661 # } 14662 # return resultBuilder.build(); 14663 # } 14664 # // ... 14665 # 14666 # Example (iOS / Obj-C): 14667 # 14668 # // ... 14669 # static UIColor* fromProto(Color* protocolor) { 14670 # float red = [protocolor red]; 14671 # float green = [protocolor green]; 14672 # float blue = [protocolor blue]; 14673 # FloatValue* alpha_wrapper = [protocolor alpha]; 14674 # float alpha = 1.0; 14675 # if (alpha_wrapper != nil) { 14676 # alpha = [alpha_wrapper value]; 14677 # } 14678 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 14679 # } 14680 # 14681 # static Color* toProto(UIColor* color) { 14682 # CGFloat red, green, blue, alpha; 14683 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 14684 # return nil; 14685 # } 14686 # Color* result = [Color alloc] init]; 14687 # [result setRed:red]; 14688 # [result setGreen:green]; 14689 # [result setBlue:blue]; 14690 # if (alpha <= 0.9999) { 14691 # [result setAlpha:floatWrapperWithValue(alpha)]; 14692 # } 14693 # [result autorelease]; 14694 # return result; 14695 # } 14696 # // ... 14697 # 14698 # Example (JavaScript): 14699 # 14700 # // ... 14701 # 14702 # var protoToCssColor = function(rgb_color) { 14703 # var redFrac = rgb_color.red || 0.0; 14704 # var greenFrac = rgb_color.green || 0.0; 14705 # var blueFrac = rgb_color.blue || 0.0; 14706 # var red = Math.floor(redFrac * 255); 14707 # var green = Math.floor(greenFrac * 255); 14708 # var blue = Math.floor(blueFrac * 255); 14709 # 14710 # if (!('alpha' in rgb_color)) { 14711 # return rgbToCssColor_(red, green, blue); 14712 # } 14713 # 14714 # var alphaFrac = rgb_color.alpha.value || 0.0; 14715 # var rgbParams = [red, green, blue].join(','); 14716 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 14717 # }; 14718 # 14719 # var rgbToCssColor_ = function(red, green, blue) { 14720 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 14721 # var hexString = rgbNumber.toString(16); 14722 # var missingZeros = 6 - hexString.length; 14723 # var resultBuilder = ['#']; 14724 # for (var i = 0; i < missingZeros; i++) { 14725 # resultBuilder.push('0'); 14726 # } 14727 # resultBuilder.push(hexString); 14728 # return resultBuilder.join(''); 14729 # }; 14730 # 14731 # // ... 14732 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 14733 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 14734 # the final pixel color is defined by the equation: 14735 # 14736 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 14737 # 14738 # This means that a value of 1.0 corresponds to a solid color, whereas 14739 # a value of 0.0 corresponds to a completely transparent color. This 14740 # uses a wrapper message rather than a simple float scalar so that it is 14741 # possible to distinguish between a default value and the value being unset. 14742 # If omitted, this color object is to be rendered as a solid color 14743 # (as if the alpha value had been explicitly given with a value of 1.0). 14744 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 14745 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 14746 }, 14747 "width": 42, # The width of the border, in pixels. 14748 # Deprecated; the width is determined by the "style" field. 14749 "style": "A String", # The style of the border. 14750 }, 14751 "bottom": { # A border along a cell. # The border to put at the bottom of the range. 14752 "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border. 14753 # for simplicity of conversion to/from color representations in various 14754 # languages over compactness; for example, the fields of this representation 14755 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 14756 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 14757 # method in iOS; and, with just a little work, it can be easily formatted into 14758 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 14759 # 14760 # Example (Java): 14761 # 14762 # import com.google.type.Color; 14763 # 14764 # // ... 14765 # public static java.awt.Color fromProto(Color protocolor) { 14766 # float alpha = protocolor.hasAlpha() 14767 # ? protocolor.getAlpha().getValue() 14768 # : 1.0; 14769 # 14770 # return new java.awt.Color( 14771 # protocolor.getRed(), 14772 # protocolor.getGreen(), 14773 # protocolor.getBlue(), 14774 # alpha); 14775 # } 14776 # 14777 # public static Color toProto(java.awt.Color color) { 14778 # float red = (float) color.getRed(); 14779 # float green = (float) color.getGreen(); 14780 # float blue = (float) color.getBlue(); 14781 # float denominator = 255.0; 14782 # Color.Builder resultBuilder = 14783 # Color 14784 # .newBuilder() 14785 # .setRed(red / denominator) 14786 # .setGreen(green / denominator) 14787 # .setBlue(blue / denominator); 14788 # int alpha = color.getAlpha(); 14789 # if (alpha != 255) { 14790 # result.setAlpha( 14791 # FloatValue 14792 # .newBuilder() 14793 # .setValue(((float) alpha) / denominator) 14794 # .build()); 14795 # } 14796 # return resultBuilder.build(); 14797 # } 14798 # // ... 14799 # 14800 # Example (iOS / Obj-C): 14801 # 14802 # // ... 14803 # static UIColor* fromProto(Color* protocolor) { 14804 # float red = [protocolor red]; 14805 # float green = [protocolor green]; 14806 # float blue = [protocolor blue]; 14807 # FloatValue* alpha_wrapper = [protocolor alpha]; 14808 # float alpha = 1.0; 14809 # if (alpha_wrapper != nil) { 14810 # alpha = [alpha_wrapper value]; 14811 # } 14812 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 14813 # } 14814 # 14815 # static Color* toProto(UIColor* color) { 14816 # CGFloat red, green, blue, alpha; 14817 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 14818 # return nil; 14819 # } 14820 # Color* result = [Color alloc] init]; 14821 # [result setRed:red]; 14822 # [result setGreen:green]; 14823 # [result setBlue:blue]; 14824 # if (alpha <= 0.9999) { 14825 # [result setAlpha:floatWrapperWithValue(alpha)]; 14826 # } 14827 # [result autorelease]; 14828 # return result; 14829 # } 14830 # // ... 14831 # 14832 # Example (JavaScript): 14833 # 14834 # // ... 14835 # 14836 # var protoToCssColor = function(rgb_color) { 14837 # var redFrac = rgb_color.red || 0.0; 14838 # var greenFrac = rgb_color.green || 0.0; 14839 # var blueFrac = rgb_color.blue || 0.0; 14840 # var red = Math.floor(redFrac * 255); 14841 # var green = Math.floor(greenFrac * 255); 14842 # var blue = Math.floor(blueFrac * 255); 14843 # 14844 # if (!('alpha' in rgb_color)) { 14845 # return rgbToCssColor_(red, green, blue); 14846 # } 14847 # 14848 # var alphaFrac = rgb_color.alpha.value || 0.0; 14849 # var rgbParams = [red, green, blue].join(','); 14850 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 14851 # }; 14852 # 14853 # var rgbToCssColor_ = function(red, green, blue) { 14854 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 14855 # var hexString = rgbNumber.toString(16); 14856 # var missingZeros = 6 - hexString.length; 14857 # var resultBuilder = ['#']; 14858 # for (var i = 0; i < missingZeros; i++) { 14859 # resultBuilder.push('0'); 14860 # } 14861 # resultBuilder.push(hexString); 14862 # return resultBuilder.join(''); 14863 # }; 14864 # 14865 # // ... 14866 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 14867 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 14868 # the final pixel color is defined by the equation: 14869 # 14870 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 14871 # 14872 # This means that a value of 1.0 corresponds to a solid color, whereas 14873 # a value of 0.0 corresponds to a completely transparent color. This 14874 # uses a wrapper message rather than a simple float scalar so that it is 14875 # possible to distinguish between a default value and the value being unset. 14876 # If omitted, this color object is to be rendered as a solid color 14877 # (as if the alpha value had been explicitly given with a value of 1.0). 14878 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 14879 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 14880 }, 14881 "width": 42, # The width of the border, in pixels. 14882 # Deprecated; the width is determined by the "style" field. 14883 "style": "A String", # The style of the border. 14884 }, 14885 "top": { # A border along a cell. # The border to put at the top of the range. 14886 "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border. 14887 # for simplicity of conversion to/from color representations in various 14888 # languages over compactness; for example, the fields of this representation 14889 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 14890 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 14891 # method in iOS; and, with just a little work, it can be easily formatted into 14892 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 14893 # 14894 # Example (Java): 14895 # 14896 # import com.google.type.Color; 14897 # 14898 # // ... 14899 # public static java.awt.Color fromProto(Color protocolor) { 14900 # float alpha = protocolor.hasAlpha() 14901 # ? protocolor.getAlpha().getValue() 14902 # : 1.0; 14903 # 14904 # return new java.awt.Color( 14905 # protocolor.getRed(), 14906 # protocolor.getGreen(), 14907 # protocolor.getBlue(), 14908 # alpha); 14909 # } 14910 # 14911 # public static Color toProto(java.awt.Color color) { 14912 # float red = (float) color.getRed(); 14913 # float green = (float) color.getGreen(); 14914 # float blue = (float) color.getBlue(); 14915 # float denominator = 255.0; 14916 # Color.Builder resultBuilder = 14917 # Color 14918 # .newBuilder() 14919 # .setRed(red / denominator) 14920 # .setGreen(green / denominator) 14921 # .setBlue(blue / denominator); 14922 # int alpha = color.getAlpha(); 14923 # if (alpha != 255) { 14924 # result.setAlpha( 14925 # FloatValue 14926 # .newBuilder() 14927 # .setValue(((float) alpha) / denominator) 14928 # .build()); 14929 # } 14930 # return resultBuilder.build(); 14931 # } 14932 # // ... 14933 # 14934 # Example (iOS / Obj-C): 14935 # 14936 # // ... 14937 # static UIColor* fromProto(Color* protocolor) { 14938 # float red = [protocolor red]; 14939 # float green = [protocolor green]; 14940 # float blue = [protocolor blue]; 14941 # FloatValue* alpha_wrapper = [protocolor alpha]; 14942 # float alpha = 1.0; 14943 # if (alpha_wrapper != nil) { 14944 # alpha = [alpha_wrapper value]; 14945 # } 14946 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 14947 # } 14948 # 14949 # static Color* toProto(UIColor* color) { 14950 # CGFloat red, green, blue, alpha; 14951 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 14952 # return nil; 14953 # } 14954 # Color* result = [Color alloc] init]; 14955 # [result setRed:red]; 14956 # [result setGreen:green]; 14957 # [result setBlue:blue]; 14958 # if (alpha <= 0.9999) { 14959 # [result setAlpha:floatWrapperWithValue(alpha)]; 14960 # } 14961 # [result autorelease]; 14962 # return result; 14963 # } 14964 # // ... 14965 # 14966 # Example (JavaScript): 14967 # 14968 # // ... 14969 # 14970 # var protoToCssColor = function(rgb_color) { 14971 # var redFrac = rgb_color.red || 0.0; 14972 # var greenFrac = rgb_color.green || 0.0; 14973 # var blueFrac = rgb_color.blue || 0.0; 14974 # var red = Math.floor(redFrac * 255); 14975 # var green = Math.floor(greenFrac * 255); 14976 # var blue = Math.floor(blueFrac * 255); 14977 # 14978 # if (!('alpha' in rgb_color)) { 14979 # return rgbToCssColor_(red, green, blue); 14980 # } 14981 # 14982 # var alphaFrac = rgb_color.alpha.value || 0.0; 14983 # var rgbParams = [red, green, blue].join(','); 14984 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 14985 # }; 14986 # 14987 # var rgbToCssColor_ = function(red, green, blue) { 14988 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 14989 # var hexString = rgbNumber.toString(16); 14990 # var missingZeros = 6 - hexString.length; 14991 # var resultBuilder = ['#']; 14992 # for (var i = 0; i < missingZeros; i++) { 14993 # resultBuilder.push('0'); 14994 # } 14995 # resultBuilder.push(hexString); 14996 # return resultBuilder.join(''); 14997 # }; 14998 # 14999 # // ... 15000 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 15001 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 15002 # the final pixel color is defined by the equation: 15003 # 15004 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 15005 # 15006 # This means that a value of 1.0 corresponds to a solid color, whereas 15007 # a value of 0.0 corresponds to a completely transparent color. This 15008 # uses a wrapper message rather than a simple float scalar so that it is 15009 # possible to distinguish between a default value and the value being unset. 15010 # If omitted, this color object is to be rendered as a solid color 15011 # (as if the alpha value had been explicitly given with a value of 1.0). 15012 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 15013 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 15014 }, 15015 "width": 42, # The width of the border, in pixels. 15016 # Deprecated; the width is determined by the "style" field. 15017 "style": "A String", # The style of the border. 15018 }, 15019 "innerHorizontal": { # A border along a cell. # The horizontal border to put within the range. 15020 "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border. 15021 # for simplicity of conversion to/from color representations in various 15022 # languages over compactness; for example, the fields of this representation 15023 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 15024 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 15025 # method in iOS; and, with just a little work, it can be easily formatted into 15026 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 15027 # 15028 # Example (Java): 15029 # 15030 # import com.google.type.Color; 15031 # 15032 # // ... 15033 # public static java.awt.Color fromProto(Color protocolor) { 15034 # float alpha = protocolor.hasAlpha() 15035 # ? protocolor.getAlpha().getValue() 15036 # : 1.0; 15037 # 15038 # return new java.awt.Color( 15039 # protocolor.getRed(), 15040 # protocolor.getGreen(), 15041 # protocolor.getBlue(), 15042 # alpha); 15043 # } 15044 # 15045 # public static Color toProto(java.awt.Color color) { 15046 # float red = (float) color.getRed(); 15047 # float green = (float) color.getGreen(); 15048 # float blue = (float) color.getBlue(); 15049 # float denominator = 255.0; 15050 # Color.Builder resultBuilder = 15051 # Color 15052 # .newBuilder() 15053 # .setRed(red / denominator) 15054 # .setGreen(green / denominator) 15055 # .setBlue(blue / denominator); 15056 # int alpha = color.getAlpha(); 15057 # if (alpha != 255) { 15058 # result.setAlpha( 15059 # FloatValue 15060 # .newBuilder() 15061 # .setValue(((float) alpha) / denominator) 15062 # .build()); 15063 # } 15064 # return resultBuilder.build(); 15065 # } 15066 # // ... 15067 # 15068 # Example (iOS / Obj-C): 15069 # 15070 # // ... 15071 # static UIColor* fromProto(Color* protocolor) { 15072 # float red = [protocolor red]; 15073 # float green = [protocolor green]; 15074 # float blue = [protocolor blue]; 15075 # FloatValue* alpha_wrapper = [protocolor alpha]; 15076 # float alpha = 1.0; 15077 # if (alpha_wrapper != nil) { 15078 # alpha = [alpha_wrapper value]; 15079 # } 15080 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 15081 # } 15082 # 15083 # static Color* toProto(UIColor* color) { 15084 # CGFloat red, green, blue, alpha; 15085 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 15086 # return nil; 15087 # } 15088 # Color* result = [Color alloc] init]; 15089 # [result setRed:red]; 15090 # [result setGreen:green]; 15091 # [result setBlue:blue]; 15092 # if (alpha <= 0.9999) { 15093 # [result setAlpha:floatWrapperWithValue(alpha)]; 15094 # } 15095 # [result autorelease]; 15096 # return result; 15097 # } 15098 # // ... 15099 # 15100 # Example (JavaScript): 15101 # 15102 # // ... 15103 # 15104 # var protoToCssColor = function(rgb_color) { 15105 # var redFrac = rgb_color.red || 0.0; 15106 # var greenFrac = rgb_color.green || 0.0; 15107 # var blueFrac = rgb_color.blue || 0.0; 15108 # var red = Math.floor(redFrac * 255); 15109 # var green = Math.floor(greenFrac * 255); 15110 # var blue = Math.floor(blueFrac * 255); 15111 # 15112 # if (!('alpha' in rgb_color)) { 15113 # return rgbToCssColor_(red, green, blue); 15114 # } 15115 # 15116 # var alphaFrac = rgb_color.alpha.value || 0.0; 15117 # var rgbParams = [red, green, blue].join(','); 15118 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 15119 # }; 15120 # 15121 # var rgbToCssColor_ = function(red, green, blue) { 15122 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 15123 # var hexString = rgbNumber.toString(16); 15124 # var missingZeros = 6 - hexString.length; 15125 # var resultBuilder = ['#']; 15126 # for (var i = 0; i < missingZeros; i++) { 15127 # resultBuilder.push('0'); 15128 # } 15129 # resultBuilder.push(hexString); 15130 # return resultBuilder.join(''); 15131 # }; 15132 # 15133 # // ... 15134 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 15135 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 15136 # the final pixel color is defined by the equation: 15137 # 15138 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 15139 # 15140 # This means that a value of 1.0 corresponds to a solid color, whereas 15141 # a value of 0.0 corresponds to a completely transparent color. This 15142 # uses a wrapper message rather than a simple float scalar so that it is 15143 # possible to distinguish between a default value and the value being unset. 15144 # If omitted, this color object is to be rendered as a solid color 15145 # (as if the alpha value had been explicitly given with a value of 1.0). 15146 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 15147 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 15148 }, 15149 "width": 42, # The width of the border, in pixels. 15150 # Deprecated; the width is determined by the "style" field. 15151 "style": "A String", # The style of the border. 15152 }, 15153 "range": { # A range on a sheet. # The range whose borders should be updated. 15154 # All indexes are zero-based. 15155 # Indexes are half open, e.g the start index is inclusive 15156 # and the end index is exclusive -- [start_index, end_index). 15157 # Missing indexes indicate the range is unbounded on that side. 15158 # 15159 # For example, if `"Sheet1"` is sheet ID 0, then: 15160 # 15161 # `Sheet1!A1:A1 == sheet_id: 0, 15162 # start_row_index: 0, end_row_index: 1, 15163 # start_column_index: 0, end_column_index: 1` 15164 # 15165 # `Sheet1!A3:B4 == sheet_id: 0, 15166 # start_row_index: 2, end_row_index: 4, 15167 # start_column_index: 0, end_column_index: 2` 15168 # 15169 # `Sheet1!A:B == sheet_id: 0, 15170 # start_column_index: 0, end_column_index: 2` 15171 # 15172 # `Sheet1!A5:B == sheet_id: 0, 15173 # start_row_index: 4, 15174 # start_column_index: 0, end_column_index: 2` 15175 # 15176 # `Sheet1 == sheet_id:0` 15177 # 15178 # The start index must always be less than or equal to the end index. 15179 # If the start index equals the end index, then the range is empty. 15180 # Empty ranges are typically not meaningful and are usually rendered in the 15181 # UI as `#REF!`. 15182 "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded. 15183 "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded. 15184 "sheetId": 42, # The sheet this range is on. 15185 "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded. 15186 "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded. 15187 }, 15188 "innerVertical": { # A border along a cell. # The vertical border to put within the range. 15189 "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border. 15190 # for simplicity of conversion to/from color representations in various 15191 # languages over compactness; for example, the fields of this representation 15192 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 15193 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 15194 # method in iOS; and, with just a little work, it can be easily formatted into 15195 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 15196 # 15197 # Example (Java): 15198 # 15199 # import com.google.type.Color; 15200 # 15201 # // ... 15202 # public static java.awt.Color fromProto(Color protocolor) { 15203 # float alpha = protocolor.hasAlpha() 15204 # ? protocolor.getAlpha().getValue() 15205 # : 1.0; 15206 # 15207 # return new java.awt.Color( 15208 # protocolor.getRed(), 15209 # protocolor.getGreen(), 15210 # protocolor.getBlue(), 15211 # alpha); 15212 # } 15213 # 15214 # public static Color toProto(java.awt.Color color) { 15215 # float red = (float) color.getRed(); 15216 # float green = (float) color.getGreen(); 15217 # float blue = (float) color.getBlue(); 15218 # float denominator = 255.0; 15219 # Color.Builder resultBuilder = 15220 # Color 15221 # .newBuilder() 15222 # .setRed(red / denominator) 15223 # .setGreen(green / denominator) 15224 # .setBlue(blue / denominator); 15225 # int alpha = color.getAlpha(); 15226 # if (alpha != 255) { 15227 # result.setAlpha( 15228 # FloatValue 15229 # .newBuilder() 15230 # .setValue(((float) alpha) / denominator) 15231 # .build()); 15232 # } 15233 # return resultBuilder.build(); 15234 # } 15235 # // ... 15236 # 15237 # Example (iOS / Obj-C): 15238 # 15239 # // ... 15240 # static UIColor* fromProto(Color* protocolor) { 15241 # float red = [protocolor red]; 15242 # float green = [protocolor green]; 15243 # float blue = [protocolor blue]; 15244 # FloatValue* alpha_wrapper = [protocolor alpha]; 15245 # float alpha = 1.0; 15246 # if (alpha_wrapper != nil) { 15247 # alpha = [alpha_wrapper value]; 15248 # } 15249 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 15250 # } 15251 # 15252 # static Color* toProto(UIColor* color) { 15253 # CGFloat red, green, blue, alpha; 15254 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 15255 # return nil; 15256 # } 15257 # Color* result = [Color alloc] init]; 15258 # [result setRed:red]; 15259 # [result setGreen:green]; 15260 # [result setBlue:blue]; 15261 # if (alpha <= 0.9999) { 15262 # [result setAlpha:floatWrapperWithValue(alpha)]; 15263 # } 15264 # [result autorelease]; 15265 # return result; 15266 # } 15267 # // ... 15268 # 15269 # Example (JavaScript): 15270 # 15271 # // ... 15272 # 15273 # var protoToCssColor = function(rgb_color) { 15274 # var redFrac = rgb_color.red || 0.0; 15275 # var greenFrac = rgb_color.green || 0.0; 15276 # var blueFrac = rgb_color.blue || 0.0; 15277 # var red = Math.floor(redFrac * 255); 15278 # var green = Math.floor(greenFrac * 255); 15279 # var blue = Math.floor(blueFrac * 255); 15280 # 15281 # if (!('alpha' in rgb_color)) { 15282 # return rgbToCssColor_(red, green, blue); 15283 # } 15284 # 15285 # var alphaFrac = rgb_color.alpha.value || 0.0; 15286 # var rgbParams = [red, green, blue].join(','); 15287 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 15288 # }; 15289 # 15290 # var rgbToCssColor_ = function(red, green, blue) { 15291 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 15292 # var hexString = rgbNumber.toString(16); 15293 # var missingZeros = 6 - hexString.length; 15294 # var resultBuilder = ['#']; 15295 # for (var i = 0; i < missingZeros; i++) { 15296 # resultBuilder.push('0'); 15297 # } 15298 # resultBuilder.push(hexString); 15299 # return resultBuilder.join(''); 15300 # }; 15301 # 15302 # // ... 15303 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 15304 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 15305 # the final pixel color is defined by the equation: 15306 # 15307 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 15308 # 15309 # This means that a value of 1.0 corresponds to a solid color, whereas 15310 # a value of 0.0 corresponds to a completely transparent color. This 15311 # uses a wrapper message rather than a simple float scalar so that it is 15312 # possible to distinguish between a default value and the value being unset. 15313 # If omitted, this color object is to be rendered as a solid color 15314 # (as if the alpha value had been explicitly given with a value of 1.0). 15315 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 15316 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 15317 }, 15318 "width": 42, # The width of the border, in pixels. 15319 # Deprecated; the width is determined by the "style" field. 15320 "style": "A String", # The style of the border. 15321 }, 15322 "left": { # A border along a cell. # The border to put at the left of the range. 15323 "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border. 15324 # for simplicity of conversion to/from color representations in various 15325 # languages over compactness; for example, the fields of this representation 15326 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 15327 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 15328 # method in iOS; and, with just a little work, it can be easily formatted into 15329 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 15330 # 15331 # Example (Java): 15332 # 15333 # import com.google.type.Color; 15334 # 15335 # // ... 15336 # public static java.awt.Color fromProto(Color protocolor) { 15337 # float alpha = protocolor.hasAlpha() 15338 # ? protocolor.getAlpha().getValue() 15339 # : 1.0; 15340 # 15341 # return new java.awt.Color( 15342 # protocolor.getRed(), 15343 # protocolor.getGreen(), 15344 # protocolor.getBlue(), 15345 # alpha); 15346 # } 15347 # 15348 # public static Color toProto(java.awt.Color color) { 15349 # float red = (float) color.getRed(); 15350 # float green = (float) color.getGreen(); 15351 # float blue = (float) color.getBlue(); 15352 # float denominator = 255.0; 15353 # Color.Builder resultBuilder = 15354 # Color 15355 # .newBuilder() 15356 # .setRed(red / denominator) 15357 # .setGreen(green / denominator) 15358 # .setBlue(blue / denominator); 15359 # int alpha = color.getAlpha(); 15360 # if (alpha != 255) { 15361 # result.setAlpha( 15362 # FloatValue 15363 # .newBuilder() 15364 # .setValue(((float) alpha) / denominator) 15365 # .build()); 15366 # } 15367 # return resultBuilder.build(); 15368 # } 15369 # // ... 15370 # 15371 # Example (iOS / Obj-C): 15372 # 15373 # // ... 15374 # static UIColor* fromProto(Color* protocolor) { 15375 # float red = [protocolor red]; 15376 # float green = [protocolor green]; 15377 # float blue = [protocolor blue]; 15378 # FloatValue* alpha_wrapper = [protocolor alpha]; 15379 # float alpha = 1.0; 15380 # if (alpha_wrapper != nil) { 15381 # alpha = [alpha_wrapper value]; 15382 # } 15383 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 15384 # } 15385 # 15386 # static Color* toProto(UIColor* color) { 15387 # CGFloat red, green, blue, alpha; 15388 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 15389 # return nil; 15390 # } 15391 # Color* result = [Color alloc] init]; 15392 # [result setRed:red]; 15393 # [result setGreen:green]; 15394 # [result setBlue:blue]; 15395 # if (alpha <= 0.9999) { 15396 # [result setAlpha:floatWrapperWithValue(alpha)]; 15397 # } 15398 # [result autorelease]; 15399 # return result; 15400 # } 15401 # // ... 15402 # 15403 # Example (JavaScript): 15404 # 15405 # // ... 15406 # 15407 # var protoToCssColor = function(rgb_color) { 15408 # var redFrac = rgb_color.red || 0.0; 15409 # var greenFrac = rgb_color.green || 0.0; 15410 # var blueFrac = rgb_color.blue || 0.0; 15411 # var red = Math.floor(redFrac * 255); 15412 # var green = Math.floor(greenFrac * 255); 15413 # var blue = Math.floor(blueFrac * 255); 15414 # 15415 # if (!('alpha' in rgb_color)) { 15416 # return rgbToCssColor_(red, green, blue); 15417 # } 15418 # 15419 # var alphaFrac = rgb_color.alpha.value || 0.0; 15420 # var rgbParams = [red, green, blue].join(','); 15421 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 15422 # }; 15423 # 15424 # var rgbToCssColor_ = function(red, green, blue) { 15425 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 15426 # var hexString = rgbNumber.toString(16); 15427 # var missingZeros = 6 - hexString.length; 15428 # var resultBuilder = ['#']; 15429 # for (var i = 0; i < missingZeros; i++) { 15430 # resultBuilder.push('0'); 15431 # } 15432 # resultBuilder.push(hexString); 15433 # return resultBuilder.join(''); 15434 # }; 15435 # 15436 # // ... 15437 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 15438 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 15439 # the final pixel color is defined by the equation: 15440 # 15441 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 15442 # 15443 # This means that a value of 1.0 corresponds to a solid color, whereas 15444 # a value of 0.0 corresponds to a completely transparent color. This 15445 # uses a wrapper message rather than a simple float scalar so that it is 15446 # possible to distinguish between a default value and the value being unset. 15447 # If omitted, this color object is to be rendered as a solid color 15448 # (as if the alpha value had been explicitly given with a value of 1.0). 15449 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 15450 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 15451 }, 15452 "width": 42, # The width of the border, in pixels. 15453 # Deprecated; the width is determined by the "style" field. 15454 "style": "A String", # The style of the border. 15455 }, 15456 }, 15457 "cutPaste": { # Moves data from the source to the destination. # Cuts data from one area and pastes it to another. 15458 "pasteType": "A String", # What kind of data to paste. All the source data will be cut, regardless 15459 # of what is pasted. 15460 "source": { # A range on a sheet. # The source data to cut. 15461 # All indexes are zero-based. 15462 # Indexes are half open, e.g the start index is inclusive 15463 # and the end index is exclusive -- [start_index, end_index). 15464 # Missing indexes indicate the range is unbounded on that side. 15465 # 15466 # For example, if `"Sheet1"` is sheet ID 0, then: 15467 # 15468 # `Sheet1!A1:A1 == sheet_id: 0, 15469 # start_row_index: 0, end_row_index: 1, 15470 # start_column_index: 0, end_column_index: 1` 15471 # 15472 # `Sheet1!A3:B4 == sheet_id: 0, 15473 # start_row_index: 2, end_row_index: 4, 15474 # start_column_index: 0, end_column_index: 2` 15475 # 15476 # `Sheet1!A:B == sheet_id: 0, 15477 # start_column_index: 0, end_column_index: 2` 15478 # 15479 # `Sheet1!A5:B == sheet_id: 0, 15480 # start_row_index: 4, 15481 # start_column_index: 0, end_column_index: 2` 15482 # 15483 # `Sheet1 == sheet_id:0` 15484 # 15485 # The start index must always be less than or equal to the end index. 15486 # If the start index equals the end index, then the range is empty. 15487 # Empty ranges are typically not meaningful and are usually rendered in the 15488 # UI as `#REF!`. 15489 "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded. 15490 "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded. 15491 "sheetId": 42, # The sheet this range is on. 15492 "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded. 15493 "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded. 15494 }, 15495 "destination": { # A coordinate in a sheet. # The top-left coordinate where the data should be pasted. 15496 # All indexes are zero-based. 15497 "rowIndex": 42, # The row index of the coordinate. 15498 "columnIndex": 42, # The column index of the coordinate. 15499 "sheetId": 42, # The sheet this coordinate is on. 15500 }, 15501 }, 15502 "copyPaste": { # Copies data from the source to the destination. # Copies data from one area and pastes it to another. 15503 "pasteType": "A String", # What kind of data to paste. 15504 "source": { # A range on a sheet. # The source range to copy. 15505 # All indexes are zero-based. 15506 # Indexes are half open, e.g the start index is inclusive 15507 # and the end index is exclusive -- [start_index, end_index). 15508 # Missing indexes indicate the range is unbounded on that side. 15509 # 15510 # For example, if `"Sheet1"` is sheet ID 0, then: 15511 # 15512 # `Sheet1!A1:A1 == sheet_id: 0, 15513 # start_row_index: 0, end_row_index: 1, 15514 # start_column_index: 0, end_column_index: 1` 15515 # 15516 # `Sheet1!A3:B4 == sheet_id: 0, 15517 # start_row_index: 2, end_row_index: 4, 15518 # start_column_index: 0, end_column_index: 2` 15519 # 15520 # `Sheet1!A:B == sheet_id: 0, 15521 # start_column_index: 0, end_column_index: 2` 15522 # 15523 # `Sheet1!A5:B == sheet_id: 0, 15524 # start_row_index: 4, 15525 # start_column_index: 0, end_column_index: 2` 15526 # 15527 # `Sheet1 == sheet_id:0` 15528 # 15529 # The start index must always be less than or equal to the end index. 15530 # If the start index equals the end index, then the range is empty. 15531 # Empty ranges are typically not meaningful and are usually rendered in the 15532 # UI as `#REF!`. 15533 "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded. 15534 "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded. 15535 "sheetId": 42, # The sheet this range is on. 15536 "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded. 15537 "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded. 15538 }, 15539 "destination": { # A range on a sheet. # The location to paste to. If the range covers a span that's 15540 # a multiple of the source's height or width, then the 15541 # data will be repeated to fill in the destination range. 15542 # If the range is smaller than the source range, the entire 15543 # source data will still be copied (beyond the end of the destination range). 15544 # All indexes are zero-based. 15545 # Indexes are half open, e.g the start index is inclusive 15546 # and the end index is exclusive -- [start_index, end_index). 15547 # Missing indexes indicate the range is unbounded on that side. 15548 # 15549 # For example, if `"Sheet1"` is sheet ID 0, then: 15550 # 15551 # `Sheet1!A1:A1 == sheet_id: 0, 15552 # start_row_index: 0, end_row_index: 1, 15553 # start_column_index: 0, end_column_index: 1` 15554 # 15555 # `Sheet1!A3:B4 == sheet_id: 0, 15556 # start_row_index: 2, end_row_index: 4, 15557 # start_column_index: 0, end_column_index: 2` 15558 # 15559 # `Sheet1!A:B == sheet_id: 0, 15560 # start_column_index: 0, end_column_index: 2` 15561 # 15562 # `Sheet1!A5:B == sheet_id: 0, 15563 # start_row_index: 4, 15564 # start_column_index: 0, end_column_index: 2` 15565 # 15566 # `Sheet1 == sheet_id:0` 15567 # 15568 # The start index must always be less than or equal to the end index. 15569 # If the start index equals the end index, then the range is empty. 15570 # Empty ranges are typically not meaningful and are usually rendered in the 15571 # UI as `#REF!`. 15572 "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded. 15573 "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded. 15574 "sheetId": 42, # The sheet this range is on. 15575 "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded. 15576 "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded. 15577 }, 15578 "pasteOrientation": "A String", # How that data should be oriented when pasting. 15579 }, 15580 "addSheet": { # Adds a new sheet. # Adds a sheet. 15581 # When a sheet is added at a given index, 15582 # all subsequent sheets' indexes are incremented. 15583 # To add an object sheet, use AddChartRequest instead and specify 15584 # EmbeddedObjectPosition.sheetId or 15585 # EmbeddedObjectPosition.newSheet. 15586 "properties": { # Properties of a sheet. # The properties the new sheet should have. 15587 # All properties are optional. 15588 # The sheetId field is optional; if one is not 15589 # set, an id will be randomly generated. (It is an error to specify the ID 15590 # of a sheet that already exists.) 15591 "sheetType": "A String", # The type of sheet. Defaults to GRID. 15592 # This field cannot be changed once set. 15593 "index": 42, # The index of the sheet within the spreadsheet. 15594 # When adding or updating sheet properties, if this field 15595 # is excluded then the sheet will be added or moved to the end 15596 # of the sheet list. When updating sheet indices or inserting 15597 # sheets, movement is considered in "before the move" indexes. 15598 # For example, if there were 3 sheets (S1, S2, S3) in order to 15599 # move S1 ahead of S2 the index would have to be set to 2. A sheet 15600 # index update request will be ignored if the requested index is 15601 # identical to the sheets current index or if the requested new 15602 # index is equal to the current sheet index + 1. 15603 "title": "A String", # The name of the sheet. 15604 "gridProperties": { # Properties of a grid. # Additional properties of the sheet if this sheet is a grid. 15605 # (If the sheet is an object sheet, containing a chart or image, then 15606 # this field will be absent.) 15607 # When writing it is an error to set any grid properties on non-grid sheets. 15608 "columnCount": 42, # The number of columns in the grid. 15609 "frozenRowCount": 42, # The number of rows that are frozen in the grid. 15610 "frozenColumnCount": 42, # The number of columns that are frozen in the grid. 15611 "hideGridlines": True or False, # True if the grid isn't showing gridlines in the UI. 15612 "rowCount": 42, # The number of rows in the grid. 15613 }, 15614 "rightToLeft": True or False, # True if the sheet is an RTL sheet instead of an LTR sheet. 15615 "tabColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the tab in the UI. 15616 # for simplicity of conversion to/from color representations in various 15617 # languages over compactness; for example, the fields of this representation 15618 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 15619 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 15620 # method in iOS; and, with just a little work, it can be easily formatted into 15621 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 15622 # 15623 # Example (Java): 15624 # 15625 # import com.google.type.Color; 15626 # 15627 # // ... 15628 # public static java.awt.Color fromProto(Color protocolor) { 15629 # float alpha = protocolor.hasAlpha() 15630 # ? protocolor.getAlpha().getValue() 15631 # : 1.0; 15632 # 15633 # return new java.awt.Color( 15634 # protocolor.getRed(), 15635 # protocolor.getGreen(), 15636 # protocolor.getBlue(), 15637 # alpha); 15638 # } 15639 # 15640 # public static Color toProto(java.awt.Color color) { 15641 # float red = (float) color.getRed(); 15642 # float green = (float) color.getGreen(); 15643 # float blue = (float) color.getBlue(); 15644 # float denominator = 255.0; 15645 # Color.Builder resultBuilder = 15646 # Color 15647 # .newBuilder() 15648 # .setRed(red / denominator) 15649 # .setGreen(green / denominator) 15650 # .setBlue(blue / denominator); 15651 # int alpha = color.getAlpha(); 15652 # if (alpha != 255) { 15653 # result.setAlpha( 15654 # FloatValue 15655 # .newBuilder() 15656 # .setValue(((float) alpha) / denominator) 15657 # .build()); 15658 # } 15659 # return resultBuilder.build(); 15660 # } 15661 # // ... 15662 # 15663 # Example (iOS / Obj-C): 15664 # 15665 # // ... 15666 # static UIColor* fromProto(Color* protocolor) { 15667 # float red = [protocolor red]; 15668 # float green = [protocolor green]; 15669 # float blue = [protocolor blue]; 15670 # FloatValue* alpha_wrapper = [protocolor alpha]; 15671 # float alpha = 1.0; 15672 # if (alpha_wrapper != nil) { 15673 # alpha = [alpha_wrapper value]; 15674 # } 15675 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 15676 # } 15677 # 15678 # static Color* toProto(UIColor* color) { 15679 # CGFloat red, green, blue, alpha; 15680 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 15681 # return nil; 15682 # } 15683 # Color* result = [Color alloc] init]; 15684 # [result setRed:red]; 15685 # [result setGreen:green]; 15686 # [result setBlue:blue]; 15687 # if (alpha <= 0.9999) { 15688 # [result setAlpha:floatWrapperWithValue(alpha)]; 15689 # } 15690 # [result autorelease]; 15691 # return result; 15692 # } 15693 # // ... 15694 # 15695 # Example (JavaScript): 15696 # 15697 # // ... 15698 # 15699 # var protoToCssColor = function(rgb_color) { 15700 # var redFrac = rgb_color.red || 0.0; 15701 # var greenFrac = rgb_color.green || 0.0; 15702 # var blueFrac = rgb_color.blue || 0.0; 15703 # var red = Math.floor(redFrac * 255); 15704 # var green = Math.floor(greenFrac * 255); 15705 # var blue = Math.floor(blueFrac * 255); 15706 # 15707 # if (!('alpha' in rgb_color)) { 15708 # return rgbToCssColor_(red, green, blue); 15709 # } 15710 # 15711 # var alphaFrac = rgb_color.alpha.value || 0.0; 15712 # var rgbParams = [red, green, blue].join(','); 15713 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 15714 # }; 15715 # 15716 # var rgbToCssColor_ = function(red, green, blue) { 15717 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 15718 # var hexString = rgbNumber.toString(16); 15719 # var missingZeros = 6 - hexString.length; 15720 # var resultBuilder = ['#']; 15721 # for (var i = 0; i < missingZeros; i++) { 15722 # resultBuilder.push('0'); 15723 # } 15724 # resultBuilder.push(hexString); 15725 # return resultBuilder.join(''); 15726 # }; 15727 # 15728 # // ... 15729 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 15730 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 15731 # the final pixel color is defined by the equation: 15732 # 15733 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 15734 # 15735 # This means that a value of 1.0 corresponds to a solid color, whereas 15736 # a value of 0.0 corresponds to a completely transparent color. This 15737 # uses a wrapper message rather than a simple float scalar so that it is 15738 # possible to distinguish between a default value and the value being unset. 15739 # If omitted, this color object is to be rendered as a solid color 15740 # (as if the alpha value had been explicitly given with a value of 1.0). 15741 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 15742 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 15743 }, 15744 "hidden": True or False, # True if the sheet is hidden in the UI, false if it's visible. 15745 "sheetId": 42, # The ID of the sheet. Must be non-negative. 15746 # This field cannot be changed once set. 15747 }, 15748 }, 15749 "deleteNamedRange": { # Removes the named range with the given ID from the spreadsheet. # Deletes a named range. 15750 "namedRangeId": "A String", # The ID of the named range to delete. 15751 }, 15752 "updateNamedRange": { # Updates properties of the named range with the specified # Updates a named range. 15753 # namedRangeId. 15754 "fields": "A String", # The fields that should be updated. At least one field must be specified. 15755 # The root `namedRange` is implied and should not be specified. 15756 # A single `"*"` can be used as short-hand for listing every field. 15757 "namedRange": { # A named range. # The named range to update with the new properties. 15758 "namedRangeId": "A String", # The ID of the named range. 15759 "range": { # A range on a sheet. # The range this represents. 15760 # All indexes are zero-based. 15761 # Indexes are half open, e.g the start index is inclusive 15762 # and the end index is exclusive -- [start_index, end_index). 15763 # Missing indexes indicate the range is unbounded on that side. 15764 # 15765 # For example, if `"Sheet1"` is sheet ID 0, then: 15766 # 15767 # `Sheet1!A1:A1 == sheet_id: 0, 15768 # start_row_index: 0, end_row_index: 1, 15769 # start_column_index: 0, end_column_index: 1` 15770 # 15771 # `Sheet1!A3:B4 == sheet_id: 0, 15772 # start_row_index: 2, end_row_index: 4, 15773 # start_column_index: 0, end_column_index: 2` 15774 # 15775 # `Sheet1!A:B == sheet_id: 0, 15776 # start_column_index: 0, end_column_index: 2` 15777 # 15778 # `Sheet1!A5:B == sheet_id: 0, 15779 # start_row_index: 4, 15780 # start_column_index: 0, end_column_index: 2` 15781 # 15782 # `Sheet1 == sheet_id:0` 15783 # 15784 # The start index must always be less than or equal to the end index. 15785 # If the start index equals the end index, then the range is empty. 15786 # Empty ranges are typically not meaningful and are usually rendered in the 15787 # UI as `#REF!`. 15788 "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded. 15789 "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded. 15790 "sheetId": 42, # The sheet this range is on. 15791 "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded. 15792 "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded. 15793 }, 15794 "name": "A String", # The name of the named range. 15795 }, 15796 }, 15797 "insertDimension": { # Inserts rows or columns in a sheet at a particular index. # Inserts new rows or columns in a sheet. 15798 "inheritFromBefore": True or False, # Whether dimension properties should be extended from the dimensions 15799 # before or after the newly inserted dimensions. 15800 # True to inherit from the dimensions before (in which case the start 15801 # index must be greater than 0), and false to inherit from the dimensions 15802 # after. 15803 # 15804 # For example, if row index 0 has red background and row index 1 15805 # has a green background, then inserting 2 rows at index 1 can inherit 15806 # either the green or red background. If `inheritFromBefore` is true, 15807 # the two new rows will be red (because the row before the insertion point 15808 # was red), whereas if `inheritFromBefore` is false, the two new rows will 15809 # be green (because the row after the insertion point was green). 15810 "range": { # A range along a single dimension on a sheet. # The dimensions to insert. Both the start and end indexes must be bounded. 15811 # All indexes are zero-based. 15812 # Indexes are half open: the start index is inclusive 15813 # and the end index is exclusive. 15814 # Missing indexes indicate the range is unbounded on that side. 15815 "endIndex": 42, # The end (exclusive) of the span, or not set if unbounded. 15816 "startIndex": 42, # The start (inclusive) of the span, or not set if unbounded. 15817 "dimension": "A String", # The dimension of the span. 15818 "sheetId": 42, # The sheet this span is on. 15819 }, 15820 }, 15821 "updateFilterView": { # Updates properties of the filter view. # Updates the properties of a filter view. 15822 "filter": { # A filter view. # The new properties of the filter view. 15823 "title": "A String", # The name of the filter view. 15824 "namedRangeId": "A String", # The named range this filter view is backed by, if any. 15825 # 15826 # When writing, only one of range or named_range_id 15827 # may be set. 15828 "filterViewId": 42, # The ID of the filter view. 15829 "range": { # A range on a sheet. # The range this filter view covers. 15830 # 15831 # When writing, only one of range or named_range_id 15832 # may be set. 15833 # All indexes are zero-based. 15834 # Indexes are half open, e.g the start index is inclusive 15835 # and the end index is exclusive -- [start_index, end_index). 15836 # Missing indexes indicate the range is unbounded on that side. 15837 # 15838 # For example, if `"Sheet1"` is sheet ID 0, then: 15839 # 15840 # `Sheet1!A1:A1 == sheet_id: 0, 15841 # start_row_index: 0, end_row_index: 1, 15842 # start_column_index: 0, end_column_index: 1` 15843 # 15844 # `Sheet1!A3:B4 == sheet_id: 0, 15845 # start_row_index: 2, end_row_index: 4, 15846 # start_column_index: 0, end_column_index: 2` 15847 # 15848 # `Sheet1!A:B == sheet_id: 0, 15849 # start_column_index: 0, end_column_index: 2` 15850 # 15851 # `Sheet1!A5:B == sheet_id: 0, 15852 # start_row_index: 4, 15853 # start_column_index: 0, end_column_index: 2` 15854 # 15855 # `Sheet1 == sheet_id:0` 15856 # 15857 # The start index must always be less than or equal to the end index. 15858 # If the start index equals the end index, then the range is empty. 15859 # Empty ranges are typically not meaningful and are usually rendered in the 15860 # UI as `#REF!`. 15861 "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded. 15862 "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded. 15863 "sheetId": 42, # The sheet this range is on. 15864 "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded. 15865 "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded. 15866 }, 15867 "sortSpecs": [ # The sort order per column. Later specifications are used when values 15868 # are equal in the earlier specifications. 15869 { # A sort order associated with a specific column or row. 15870 "sortOrder": "A String", # The order data should be sorted. 15871 "dimensionIndex": 42, # The dimension the sort should be applied to. 15872 }, 15873 ], 15874 "criteria": { # The criteria for showing/hiding values per column. 15875 # The map's key is the column index, and the value is the criteria for 15876 # that column. 15877 "a_key": { # Criteria for showing/hiding rows in a filter or filter view. 15878 "hiddenValues": [ # Values that should be hidden. 15879 "A String", 15880 ], 15881 "condition": { # A condition that can evaluate to true or false. # A condition that must be true for values to be shown. 15882 # (This does not override hiddenValues -- if a value is listed there, 15883 # it will still be hidden.) 15884 # BooleanConditions are used by conditional formatting, 15885 # data validation, and the criteria in filters. 15886 "values": [ # The values of the condition. The number of supported values depends 15887 # on the condition type. Some support zero values, 15888 # others one or two values, 15889 # and ConditionType.ONE_OF_LIST supports an arbitrary number of values. 15890 { # The value of the condition. 15891 "relativeDate": "A String", # A relative date (based on the current date). 15892 # Valid only if the type is 15893 # DATE_BEFORE, 15894 # DATE_AFTER, 15895 # DATE_ON_OR_BEFORE or 15896 # DATE_ON_OR_AFTER. 15897 # 15898 # Relative dates are not supported in data validation. 15899 # They are supported only in conditional formatting and 15900 # conditional filters. 15901 "userEnteredValue": "A String", # A value the condition is based on. 15902 # The value will be parsed as if the user typed into a cell. 15903 # Formulas are supported (and must begin with an `=`). 15904 }, 15905 ], 15906 "type": "A String", # The type of condition. 15907 }, 15908 }, 15909 }, 15910 }, 15911 "fields": "A String", # The fields that should be updated. At least one field must be specified. 15912 # The root `filter` is implied and should not be specified. 15913 # A single `"*"` can be used as short-hand for listing every field. 15914 }, 15915 "deleteConditionalFormatRule": { # Deletes a conditional format rule at the given index. # Deletes an existing conditional format rule. 15916 # All subsequent rules' indexes are decremented. 15917 "index": 42, # The zero-based index of the rule to be deleted. 15918 "sheetId": 42, # The sheet the rule is being deleted from. 15919 }, 15920 }, 15921 ], 15922 "responseIncludeGridData": True or False, # True if grid data should be returned. Meaningful only if 15923 # if include_spreadsheet_response is 'true'. 15924 # This parameter is ignored if a field mask was set in the request. 15925 "includeSpreadsheetInResponse": True or False, # Determines if the update response should include the spreadsheet 15926 # resource. 15927 } 15928 15929 x__xgafv: string, V1 error format. 15930 Allowed values 15931 1 - v1 error format 15932 2 - v2 error format 15933 15934 Returns: 15935 An object of the form: 15936 15937 { # The reply for batch updating a spreadsheet. 15938 "spreadsheetId": "A String", # The spreadsheet the updates were applied to. 15939 "updatedSpreadsheet": { # Resource that represents a spreadsheet. # The spreadsheet after updates were applied. This is only set if 15940 # [BatchUpdateSpreadsheetRequest.include_spreadsheet_in_response] is `true`. 15941 "spreadsheetId": "A String", # The ID of the spreadsheet. 15942 # This field is read-only. 15943 "namedRanges": [ # The named ranges defined in a spreadsheet. 15944 { # A named range. 15945 "namedRangeId": "A String", # The ID of the named range. 15946 "range": { # A range on a sheet. # The range this represents. 15947 # All indexes are zero-based. 15948 # Indexes are half open, e.g the start index is inclusive 15949 # and the end index is exclusive -- [start_index, end_index). 15950 # Missing indexes indicate the range is unbounded on that side. 15951 # 15952 # For example, if `"Sheet1"` is sheet ID 0, then: 15953 # 15954 # `Sheet1!A1:A1 == sheet_id: 0, 15955 # start_row_index: 0, end_row_index: 1, 15956 # start_column_index: 0, end_column_index: 1` 15957 # 15958 # `Sheet1!A3:B4 == sheet_id: 0, 15959 # start_row_index: 2, end_row_index: 4, 15960 # start_column_index: 0, end_column_index: 2` 15961 # 15962 # `Sheet1!A:B == sheet_id: 0, 15963 # start_column_index: 0, end_column_index: 2` 15964 # 15965 # `Sheet1!A5:B == sheet_id: 0, 15966 # start_row_index: 4, 15967 # start_column_index: 0, end_column_index: 2` 15968 # 15969 # `Sheet1 == sheet_id:0` 15970 # 15971 # The start index must always be less than or equal to the end index. 15972 # If the start index equals the end index, then the range is empty. 15973 # Empty ranges are typically not meaningful and are usually rendered in the 15974 # UI as `#REF!`. 15975 "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded. 15976 "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded. 15977 "sheetId": 42, # The sheet this range is on. 15978 "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded. 15979 "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded. 15980 }, 15981 "name": "A String", # The name of the named range. 15982 }, 15983 ], 15984 "properties": { # Properties of a spreadsheet. # Overall properties of a spreadsheet. 15985 "title": "A String", # The title of the spreadsheet. 15986 "locale": "A String", # The locale of the spreadsheet in one of the following formats: 15987 # 15988 # * an ISO 639-1 language code such as `en` 15989 # 15990 # * an ISO 639-2 language code such as `fil`, if no 639-1 code exists 15991 # 15992 # * a combination of the ISO language code and country code, such as `en_US` 15993 # 15994 # Note: when updating this field, not all locales/languages are supported. 15995 "defaultFormat": { # The format of a cell. # The default format of all cells in the spreadsheet. 15996 # CellData.effectiveFormat will not be set if the 15997 # cell's format is equal to this default format. 15998 # This field is read-only. 15999 "numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user. 16000 "pattern": "A String", # Pattern string used for formatting. If not set, a default pattern based on 16001 # the user's locale will be used if necessary for the given type. 16002 # See the [Date and Number Formats guide](/sheets/api/guides/formats) for more 16003 # information about the supported patterns. 16004 "type": "A String", # The type of the number format. 16005 # When writing, this field must be set. 16006 }, 16007 "textDirection": "A String", # The direction of the text in the cell. 16008 "padding": { # The amount of padding around the cell, in pixels. # The padding of the cell. 16009 # When updating padding, every field must be specified. 16010 "top": 42, # The top padding of the cell. 16011 "right": 42, # The right padding of the cell. 16012 "bottom": 42, # The bottom padding of the cell. 16013 "left": 42, # The left padding of the cell. 16014 }, 16015 "verticalAlignment": "A String", # The vertical alignment of the value in the cell. 16016 "backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell. 16017 # for simplicity of conversion to/from color representations in various 16018 # languages over compactness; for example, the fields of this representation 16019 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 16020 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 16021 # method in iOS; and, with just a little work, it can be easily formatted into 16022 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 16023 # 16024 # Example (Java): 16025 # 16026 # import com.google.type.Color; 16027 # 16028 # // ... 16029 # public static java.awt.Color fromProto(Color protocolor) { 16030 # float alpha = protocolor.hasAlpha() 16031 # ? protocolor.getAlpha().getValue() 16032 # : 1.0; 16033 # 16034 # return new java.awt.Color( 16035 # protocolor.getRed(), 16036 # protocolor.getGreen(), 16037 # protocolor.getBlue(), 16038 # alpha); 16039 # } 16040 # 16041 # public static Color toProto(java.awt.Color color) { 16042 # float red = (float) color.getRed(); 16043 # float green = (float) color.getGreen(); 16044 # float blue = (float) color.getBlue(); 16045 # float denominator = 255.0; 16046 # Color.Builder resultBuilder = 16047 # Color 16048 # .newBuilder() 16049 # .setRed(red / denominator) 16050 # .setGreen(green / denominator) 16051 # .setBlue(blue / denominator); 16052 # int alpha = color.getAlpha(); 16053 # if (alpha != 255) { 16054 # result.setAlpha( 16055 # FloatValue 16056 # .newBuilder() 16057 # .setValue(((float) alpha) / denominator) 16058 # .build()); 16059 # } 16060 # return resultBuilder.build(); 16061 # } 16062 # // ... 16063 # 16064 # Example (iOS / Obj-C): 16065 # 16066 # // ... 16067 # static UIColor* fromProto(Color* protocolor) { 16068 # float red = [protocolor red]; 16069 # float green = [protocolor green]; 16070 # float blue = [protocolor blue]; 16071 # FloatValue* alpha_wrapper = [protocolor alpha]; 16072 # float alpha = 1.0; 16073 # if (alpha_wrapper != nil) { 16074 # alpha = [alpha_wrapper value]; 16075 # } 16076 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 16077 # } 16078 # 16079 # static Color* toProto(UIColor* color) { 16080 # CGFloat red, green, blue, alpha; 16081 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 16082 # return nil; 16083 # } 16084 # Color* result = [Color alloc] init]; 16085 # [result setRed:red]; 16086 # [result setGreen:green]; 16087 # [result setBlue:blue]; 16088 # if (alpha <= 0.9999) { 16089 # [result setAlpha:floatWrapperWithValue(alpha)]; 16090 # } 16091 # [result autorelease]; 16092 # return result; 16093 # } 16094 # // ... 16095 # 16096 # Example (JavaScript): 16097 # 16098 # // ... 16099 # 16100 # var protoToCssColor = function(rgb_color) { 16101 # var redFrac = rgb_color.red || 0.0; 16102 # var greenFrac = rgb_color.green || 0.0; 16103 # var blueFrac = rgb_color.blue || 0.0; 16104 # var red = Math.floor(redFrac * 255); 16105 # var green = Math.floor(greenFrac * 255); 16106 # var blue = Math.floor(blueFrac * 255); 16107 # 16108 # if (!('alpha' in rgb_color)) { 16109 # return rgbToCssColor_(red, green, blue); 16110 # } 16111 # 16112 # var alphaFrac = rgb_color.alpha.value || 0.0; 16113 # var rgbParams = [red, green, blue].join(','); 16114 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 16115 # }; 16116 # 16117 # var rgbToCssColor_ = function(red, green, blue) { 16118 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 16119 # var hexString = rgbNumber.toString(16); 16120 # var missingZeros = 6 - hexString.length; 16121 # var resultBuilder = ['#']; 16122 # for (var i = 0; i < missingZeros; i++) { 16123 # resultBuilder.push('0'); 16124 # } 16125 # resultBuilder.push(hexString); 16126 # return resultBuilder.join(''); 16127 # }; 16128 # 16129 # // ... 16130 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 16131 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 16132 # the final pixel color is defined by the equation: 16133 # 16134 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 16135 # 16136 # This means that a value of 1.0 corresponds to a solid color, whereas 16137 # a value of 0.0 corresponds to a completely transparent color. This 16138 # uses a wrapper message rather than a simple float scalar so that it is 16139 # possible to distinguish between a default value and the value being unset. 16140 # If omitted, this color object is to be rendered as a solid color 16141 # (as if the alpha value had been explicitly given with a value of 1.0). 16142 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 16143 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 16144 }, 16145 "horizontalAlignment": "A String", # The horizontal alignment of the value in the cell. 16146 "textFormat": { # The format of a run of text in a cell. # The format of the text in the cell (unless overridden by a format run). 16147 # Absent values indicate that the field isn't specified. 16148 "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text. 16149 # for simplicity of conversion to/from color representations in various 16150 # languages over compactness; for example, the fields of this representation 16151 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 16152 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 16153 # method in iOS; and, with just a little work, it can be easily formatted into 16154 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 16155 # 16156 # Example (Java): 16157 # 16158 # import com.google.type.Color; 16159 # 16160 # // ... 16161 # public static java.awt.Color fromProto(Color protocolor) { 16162 # float alpha = protocolor.hasAlpha() 16163 # ? protocolor.getAlpha().getValue() 16164 # : 1.0; 16165 # 16166 # return new java.awt.Color( 16167 # protocolor.getRed(), 16168 # protocolor.getGreen(), 16169 # protocolor.getBlue(), 16170 # alpha); 16171 # } 16172 # 16173 # public static Color toProto(java.awt.Color color) { 16174 # float red = (float) color.getRed(); 16175 # float green = (float) color.getGreen(); 16176 # float blue = (float) color.getBlue(); 16177 # float denominator = 255.0; 16178 # Color.Builder resultBuilder = 16179 # Color 16180 # .newBuilder() 16181 # .setRed(red / denominator) 16182 # .setGreen(green / denominator) 16183 # .setBlue(blue / denominator); 16184 # int alpha = color.getAlpha(); 16185 # if (alpha != 255) { 16186 # result.setAlpha( 16187 # FloatValue 16188 # .newBuilder() 16189 # .setValue(((float) alpha) / denominator) 16190 # .build()); 16191 # } 16192 # return resultBuilder.build(); 16193 # } 16194 # // ... 16195 # 16196 # Example (iOS / Obj-C): 16197 # 16198 # // ... 16199 # static UIColor* fromProto(Color* protocolor) { 16200 # float red = [protocolor red]; 16201 # float green = [protocolor green]; 16202 # float blue = [protocolor blue]; 16203 # FloatValue* alpha_wrapper = [protocolor alpha]; 16204 # float alpha = 1.0; 16205 # if (alpha_wrapper != nil) { 16206 # alpha = [alpha_wrapper value]; 16207 # } 16208 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 16209 # } 16210 # 16211 # static Color* toProto(UIColor* color) { 16212 # CGFloat red, green, blue, alpha; 16213 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 16214 # return nil; 16215 # } 16216 # Color* result = [Color alloc] init]; 16217 # [result setRed:red]; 16218 # [result setGreen:green]; 16219 # [result setBlue:blue]; 16220 # if (alpha <= 0.9999) { 16221 # [result setAlpha:floatWrapperWithValue(alpha)]; 16222 # } 16223 # [result autorelease]; 16224 # return result; 16225 # } 16226 # // ... 16227 # 16228 # Example (JavaScript): 16229 # 16230 # // ... 16231 # 16232 # var protoToCssColor = function(rgb_color) { 16233 # var redFrac = rgb_color.red || 0.0; 16234 # var greenFrac = rgb_color.green || 0.0; 16235 # var blueFrac = rgb_color.blue || 0.0; 16236 # var red = Math.floor(redFrac * 255); 16237 # var green = Math.floor(greenFrac * 255); 16238 # var blue = Math.floor(blueFrac * 255); 16239 # 16240 # if (!('alpha' in rgb_color)) { 16241 # return rgbToCssColor_(red, green, blue); 16242 # } 16243 # 16244 # var alphaFrac = rgb_color.alpha.value || 0.0; 16245 # var rgbParams = [red, green, blue].join(','); 16246 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 16247 # }; 16248 # 16249 # var rgbToCssColor_ = function(red, green, blue) { 16250 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 16251 # var hexString = rgbNumber.toString(16); 16252 # var missingZeros = 6 - hexString.length; 16253 # var resultBuilder = ['#']; 16254 # for (var i = 0; i < missingZeros; i++) { 16255 # resultBuilder.push('0'); 16256 # } 16257 # resultBuilder.push(hexString); 16258 # return resultBuilder.join(''); 16259 # }; 16260 # 16261 # // ... 16262 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 16263 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 16264 # the final pixel color is defined by the equation: 16265 # 16266 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 16267 # 16268 # This means that a value of 1.0 corresponds to a solid color, whereas 16269 # a value of 0.0 corresponds to a completely transparent color. This 16270 # uses a wrapper message rather than a simple float scalar so that it is 16271 # possible to distinguish between a default value and the value being unset. 16272 # If omitted, this color object is to be rendered as a solid color 16273 # (as if the alpha value had been explicitly given with a value of 1.0). 16274 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 16275 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 16276 }, 16277 "bold": True or False, # True if the text is bold. 16278 "strikethrough": True or False, # True if the text has a strikethrough. 16279 "fontFamily": "A String", # The font family. 16280 "fontSize": 42, # The size of the font. 16281 "italic": True or False, # True if the text is italicized. 16282 "underline": True or False, # True if the text is underlined. 16283 }, 16284 "textRotation": { # The rotation applied to text in a cell. # The rotation applied to text in a cell 16285 "angle": 42, # The angle between the standard orientation and the desired orientation. 16286 # Measured in degrees. Valid values are between -90 and 90. Positive 16287 # angles are angled upwards, negative are angled downwards. 16288 # 16289 # Note: For LTR text direction positive angles are in the counterclockwise 16290 # direction, whereas for RTL they are in the clockwise direction 16291 "vertical": True or False, # If true, text reads top to bottom, but the orientation of individual 16292 # characters is unchanged. 16293 # For example: 16294 # 16295 # | V | 16296 # | e | 16297 # | r | 16298 # | t | 16299 # | i | 16300 # | c | 16301 # | a | 16302 # | l | 16303 }, 16304 "hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell. 16305 "borders": { # The borders of the cell. # The borders of the cell. 16306 "top": { # A border along a cell. # The top border of the cell. 16307 "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border. 16308 # for simplicity of conversion to/from color representations in various 16309 # languages over compactness; for example, the fields of this representation 16310 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 16311 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 16312 # method in iOS; and, with just a little work, it can be easily formatted into 16313 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 16314 # 16315 # Example (Java): 16316 # 16317 # import com.google.type.Color; 16318 # 16319 # // ... 16320 # public static java.awt.Color fromProto(Color protocolor) { 16321 # float alpha = protocolor.hasAlpha() 16322 # ? protocolor.getAlpha().getValue() 16323 # : 1.0; 16324 # 16325 # return new java.awt.Color( 16326 # protocolor.getRed(), 16327 # protocolor.getGreen(), 16328 # protocolor.getBlue(), 16329 # alpha); 16330 # } 16331 # 16332 # public static Color toProto(java.awt.Color color) { 16333 # float red = (float) color.getRed(); 16334 # float green = (float) color.getGreen(); 16335 # float blue = (float) color.getBlue(); 16336 # float denominator = 255.0; 16337 # Color.Builder resultBuilder = 16338 # Color 16339 # .newBuilder() 16340 # .setRed(red / denominator) 16341 # .setGreen(green / denominator) 16342 # .setBlue(blue / denominator); 16343 # int alpha = color.getAlpha(); 16344 # if (alpha != 255) { 16345 # result.setAlpha( 16346 # FloatValue 16347 # .newBuilder() 16348 # .setValue(((float) alpha) / denominator) 16349 # .build()); 16350 # } 16351 # return resultBuilder.build(); 16352 # } 16353 # // ... 16354 # 16355 # Example (iOS / Obj-C): 16356 # 16357 # // ... 16358 # static UIColor* fromProto(Color* protocolor) { 16359 # float red = [protocolor red]; 16360 # float green = [protocolor green]; 16361 # float blue = [protocolor blue]; 16362 # FloatValue* alpha_wrapper = [protocolor alpha]; 16363 # float alpha = 1.0; 16364 # if (alpha_wrapper != nil) { 16365 # alpha = [alpha_wrapper value]; 16366 # } 16367 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 16368 # } 16369 # 16370 # static Color* toProto(UIColor* color) { 16371 # CGFloat red, green, blue, alpha; 16372 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 16373 # return nil; 16374 # } 16375 # Color* result = [Color alloc] init]; 16376 # [result setRed:red]; 16377 # [result setGreen:green]; 16378 # [result setBlue:blue]; 16379 # if (alpha <= 0.9999) { 16380 # [result setAlpha:floatWrapperWithValue(alpha)]; 16381 # } 16382 # [result autorelease]; 16383 # return result; 16384 # } 16385 # // ... 16386 # 16387 # Example (JavaScript): 16388 # 16389 # // ... 16390 # 16391 # var protoToCssColor = function(rgb_color) { 16392 # var redFrac = rgb_color.red || 0.0; 16393 # var greenFrac = rgb_color.green || 0.0; 16394 # var blueFrac = rgb_color.blue || 0.0; 16395 # var red = Math.floor(redFrac * 255); 16396 # var green = Math.floor(greenFrac * 255); 16397 # var blue = Math.floor(blueFrac * 255); 16398 # 16399 # if (!('alpha' in rgb_color)) { 16400 # return rgbToCssColor_(red, green, blue); 16401 # } 16402 # 16403 # var alphaFrac = rgb_color.alpha.value || 0.0; 16404 # var rgbParams = [red, green, blue].join(','); 16405 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 16406 # }; 16407 # 16408 # var rgbToCssColor_ = function(red, green, blue) { 16409 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 16410 # var hexString = rgbNumber.toString(16); 16411 # var missingZeros = 6 - hexString.length; 16412 # var resultBuilder = ['#']; 16413 # for (var i = 0; i < missingZeros; i++) { 16414 # resultBuilder.push('0'); 16415 # } 16416 # resultBuilder.push(hexString); 16417 # return resultBuilder.join(''); 16418 # }; 16419 # 16420 # // ... 16421 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 16422 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 16423 # the final pixel color is defined by the equation: 16424 # 16425 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 16426 # 16427 # This means that a value of 1.0 corresponds to a solid color, whereas 16428 # a value of 0.0 corresponds to a completely transparent color. This 16429 # uses a wrapper message rather than a simple float scalar so that it is 16430 # possible to distinguish between a default value and the value being unset. 16431 # If omitted, this color object is to be rendered as a solid color 16432 # (as if the alpha value had been explicitly given with a value of 1.0). 16433 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 16434 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 16435 }, 16436 "width": 42, # The width of the border, in pixels. 16437 # Deprecated; the width is determined by the "style" field. 16438 "style": "A String", # The style of the border. 16439 }, 16440 "right": { # A border along a cell. # The right border of the cell. 16441 "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border. 16442 # for simplicity of conversion to/from color representations in various 16443 # languages over compactness; for example, the fields of this representation 16444 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 16445 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 16446 # method in iOS; and, with just a little work, it can be easily formatted into 16447 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 16448 # 16449 # Example (Java): 16450 # 16451 # import com.google.type.Color; 16452 # 16453 # // ... 16454 # public static java.awt.Color fromProto(Color protocolor) { 16455 # float alpha = protocolor.hasAlpha() 16456 # ? protocolor.getAlpha().getValue() 16457 # : 1.0; 16458 # 16459 # return new java.awt.Color( 16460 # protocolor.getRed(), 16461 # protocolor.getGreen(), 16462 # protocolor.getBlue(), 16463 # alpha); 16464 # } 16465 # 16466 # public static Color toProto(java.awt.Color color) { 16467 # float red = (float) color.getRed(); 16468 # float green = (float) color.getGreen(); 16469 # float blue = (float) color.getBlue(); 16470 # float denominator = 255.0; 16471 # Color.Builder resultBuilder = 16472 # Color 16473 # .newBuilder() 16474 # .setRed(red / denominator) 16475 # .setGreen(green / denominator) 16476 # .setBlue(blue / denominator); 16477 # int alpha = color.getAlpha(); 16478 # if (alpha != 255) { 16479 # result.setAlpha( 16480 # FloatValue 16481 # .newBuilder() 16482 # .setValue(((float) alpha) / denominator) 16483 # .build()); 16484 # } 16485 # return resultBuilder.build(); 16486 # } 16487 # // ... 16488 # 16489 # Example (iOS / Obj-C): 16490 # 16491 # // ... 16492 # static UIColor* fromProto(Color* protocolor) { 16493 # float red = [protocolor red]; 16494 # float green = [protocolor green]; 16495 # float blue = [protocolor blue]; 16496 # FloatValue* alpha_wrapper = [protocolor alpha]; 16497 # float alpha = 1.0; 16498 # if (alpha_wrapper != nil) { 16499 # alpha = [alpha_wrapper value]; 16500 # } 16501 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 16502 # } 16503 # 16504 # static Color* toProto(UIColor* color) { 16505 # CGFloat red, green, blue, alpha; 16506 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 16507 # return nil; 16508 # } 16509 # Color* result = [Color alloc] init]; 16510 # [result setRed:red]; 16511 # [result setGreen:green]; 16512 # [result setBlue:blue]; 16513 # if (alpha <= 0.9999) { 16514 # [result setAlpha:floatWrapperWithValue(alpha)]; 16515 # } 16516 # [result autorelease]; 16517 # return result; 16518 # } 16519 # // ... 16520 # 16521 # Example (JavaScript): 16522 # 16523 # // ... 16524 # 16525 # var protoToCssColor = function(rgb_color) { 16526 # var redFrac = rgb_color.red || 0.0; 16527 # var greenFrac = rgb_color.green || 0.0; 16528 # var blueFrac = rgb_color.blue || 0.0; 16529 # var red = Math.floor(redFrac * 255); 16530 # var green = Math.floor(greenFrac * 255); 16531 # var blue = Math.floor(blueFrac * 255); 16532 # 16533 # if (!('alpha' in rgb_color)) { 16534 # return rgbToCssColor_(red, green, blue); 16535 # } 16536 # 16537 # var alphaFrac = rgb_color.alpha.value || 0.0; 16538 # var rgbParams = [red, green, blue].join(','); 16539 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 16540 # }; 16541 # 16542 # var rgbToCssColor_ = function(red, green, blue) { 16543 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 16544 # var hexString = rgbNumber.toString(16); 16545 # var missingZeros = 6 - hexString.length; 16546 # var resultBuilder = ['#']; 16547 # for (var i = 0; i < missingZeros; i++) { 16548 # resultBuilder.push('0'); 16549 # } 16550 # resultBuilder.push(hexString); 16551 # return resultBuilder.join(''); 16552 # }; 16553 # 16554 # // ... 16555 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 16556 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 16557 # the final pixel color is defined by the equation: 16558 # 16559 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 16560 # 16561 # This means that a value of 1.0 corresponds to a solid color, whereas 16562 # a value of 0.0 corresponds to a completely transparent color. This 16563 # uses a wrapper message rather than a simple float scalar so that it is 16564 # possible to distinguish between a default value and the value being unset. 16565 # If omitted, this color object is to be rendered as a solid color 16566 # (as if the alpha value had been explicitly given with a value of 1.0). 16567 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 16568 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 16569 }, 16570 "width": 42, # The width of the border, in pixels. 16571 # Deprecated; the width is determined by the "style" field. 16572 "style": "A String", # The style of the border. 16573 }, 16574 "bottom": { # A border along a cell. # The bottom border of the cell. 16575 "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border. 16576 # for simplicity of conversion to/from color representations in various 16577 # languages over compactness; for example, the fields of this representation 16578 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 16579 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 16580 # method in iOS; and, with just a little work, it can be easily formatted into 16581 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 16582 # 16583 # Example (Java): 16584 # 16585 # import com.google.type.Color; 16586 # 16587 # // ... 16588 # public static java.awt.Color fromProto(Color protocolor) { 16589 # float alpha = protocolor.hasAlpha() 16590 # ? protocolor.getAlpha().getValue() 16591 # : 1.0; 16592 # 16593 # return new java.awt.Color( 16594 # protocolor.getRed(), 16595 # protocolor.getGreen(), 16596 # protocolor.getBlue(), 16597 # alpha); 16598 # } 16599 # 16600 # public static Color toProto(java.awt.Color color) { 16601 # float red = (float) color.getRed(); 16602 # float green = (float) color.getGreen(); 16603 # float blue = (float) color.getBlue(); 16604 # float denominator = 255.0; 16605 # Color.Builder resultBuilder = 16606 # Color 16607 # .newBuilder() 16608 # .setRed(red / denominator) 16609 # .setGreen(green / denominator) 16610 # .setBlue(blue / denominator); 16611 # int alpha = color.getAlpha(); 16612 # if (alpha != 255) { 16613 # result.setAlpha( 16614 # FloatValue 16615 # .newBuilder() 16616 # .setValue(((float) alpha) / denominator) 16617 # .build()); 16618 # } 16619 # return resultBuilder.build(); 16620 # } 16621 # // ... 16622 # 16623 # Example (iOS / Obj-C): 16624 # 16625 # // ... 16626 # static UIColor* fromProto(Color* protocolor) { 16627 # float red = [protocolor red]; 16628 # float green = [protocolor green]; 16629 # float blue = [protocolor blue]; 16630 # FloatValue* alpha_wrapper = [protocolor alpha]; 16631 # float alpha = 1.0; 16632 # if (alpha_wrapper != nil) { 16633 # alpha = [alpha_wrapper value]; 16634 # } 16635 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 16636 # } 16637 # 16638 # static Color* toProto(UIColor* color) { 16639 # CGFloat red, green, blue, alpha; 16640 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 16641 # return nil; 16642 # } 16643 # Color* result = [Color alloc] init]; 16644 # [result setRed:red]; 16645 # [result setGreen:green]; 16646 # [result setBlue:blue]; 16647 # if (alpha <= 0.9999) { 16648 # [result setAlpha:floatWrapperWithValue(alpha)]; 16649 # } 16650 # [result autorelease]; 16651 # return result; 16652 # } 16653 # // ... 16654 # 16655 # Example (JavaScript): 16656 # 16657 # // ... 16658 # 16659 # var protoToCssColor = function(rgb_color) { 16660 # var redFrac = rgb_color.red || 0.0; 16661 # var greenFrac = rgb_color.green || 0.0; 16662 # var blueFrac = rgb_color.blue || 0.0; 16663 # var red = Math.floor(redFrac * 255); 16664 # var green = Math.floor(greenFrac * 255); 16665 # var blue = Math.floor(blueFrac * 255); 16666 # 16667 # if (!('alpha' in rgb_color)) { 16668 # return rgbToCssColor_(red, green, blue); 16669 # } 16670 # 16671 # var alphaFrac = rgb_color.alpha.value || 0.0; 16672 # var rgbParams = [red, green, blue].join(','); 16673 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 16674 # }; 16675 # 16676 # var rgbToCssColor_ = function(red, green, blue) { 16677 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 16678 # var hexString = rgbNumber.toString(16); 16679 # var missingZeros = 6 - hexString.length; 16680 # var resultBuilder = ['#']; 16681 # for (var i = 0; i < missingZeros; i++) { 16682 # resultBuilder.push('0'); 16683 # } 16684 # resultBuilder.push(hexString); 16685 # return resultBuilder.join(''); 16686 # }; 16687 # 16688 # // ... 16689 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 16690 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 16691 # the final pixel color is defined by the equation: 16692 # 16693 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 16694 # 16695 # This means that a value of 1.0 corresponds to a solid color, whereas 16696 # a value of 0.0 corresponds to a completely transparent color. This 16697 # uses a wrapper message rather than a simple float scalar so that it is 16698 # possible to distinguish between a default value and the value being unset. 16699 # If omitted, this color object is to be rendered as a solid color 16700 # (as if the alpha value had been explicitly given with a value of 1.0). 16701 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 16702 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 16703 }, 16704 "width": 42, # The width of the border, in pixels. 16705 # Deprecated; the width is determined by the "style" field. 16706 "style": "A String", # The style of the border. 16707 }, 16708 "left": { # A border along a cell. # The left border of the cell. 16709 "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border. 16710 # for simplicity of conversion to/from color representations in various 16711 # languages over compactness; for example, the fields of this representation 16712 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 16713 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 16714 # method in iOS; and, with just a little work, it can be easily formatted into 16715 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 16716 # 16717 # Example (Java): 16718 # 16719 # import com.google.type.Color; 16720 # 16721 # // ... 16722 # public static java.awt.Color fromProto(Color protocolor) { 16723 # float alpha = protocolor.hasAlpha() 16724 # ? protocolor.getAlpha().getValue() 16725 # : 1.0; 16726 # 16727 # return new java.awt.Color( 16728 # protocolor.getRed(), 16729 # protocolor.getGreen(), 16730 # protocolor.getBlue(), 16731 # alpha); 16732 # } 16733 # 16734 # public static Color toProto(java.awt.Color color) { 16735 # float red = (float) color.getRed(); 16736 # float green = (float) color.getGreen(); 16737 # float blue = (float) color.getBlue(); 16738 # float denominator = 255.0; 16739 # Color.Builder resultBuilder = 16740 # Color 16741 # .newBuilder() 16742 # .setRed(red / denominator) 16743 # .setGreen(green / denominator) 16744 # .setBlue(blue / denominator); 16745 # int alpha = color.getAlpha(); 16746 # if (alpha != 255) { 16747 # result.setAlpha( 16748 # FloatValue 16749 # .newBuilder() 16750 # .setValue(((float) alpha) / denominator) 16751 # .build()); 16752 # } 16753 # return resultBuilder.build(); 16754 # } 16755 # // ... 16756 # 16757 # Example (iOS / Obj-C): 16758 # 16759 # // ... 16760 # static UIColor* fromProto(Color* protocolor) { 16761 # float red = [protocolor red]; 16762 # float green = [protocolor green]; 16763 # float blue = [protocolor blue]; 16764 # FloatValue* alpha_wrapper = [protocolor alpha]; 16765 # float alpha = 1.0; 16766 # if (alpha_wrapper != nil) { 16767 # alpha = [alpha_wrapper value]; 16768 # } 16769 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 16770 # } 16771 # 16772 # static Color* toProto(UIColor* color) { 16773 # CGFloat red, green, blue, alpha; 16774 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 16775 # return nil; 16776 # } 16777 # Color* result = [Color alloc] init]; 16778 # [result setRed:red]; 16779 # [result setGreen:green]; 16780 # [result setBlue:blue]; 16781 # if (alpha <= 0.9999) { 16782 # [result setAlpha:floatWrapperWithValue(alpha)]; 16783 # } 16784 # [result autorelease]; 16785 # return result; 16786 # } 16787 # // ... 16788 # 16789 # Example (JavaScript): 16790 # 16791 # // ... 16792 # 16793 # var protoToCssColor = function(rgb_color) { 16794 # var redFrac = rgb_color.red || 0.0; 16795 # var greenFrac = rgb_color.green || 0.0; 16796 # var blueFrac = rgb_color.blue || 0.0; 16797 # var red = Math.floor(redFrac * 255); 16798 # var green = Math.floor(greenFrac * 255); 16799 # var blue = Math.floor(blueFrac * 255); 16800 # 16801 # if (!('alpha' in rgb_color)) { 16802 # return rgbToCssColor_(red, green, blue); 16803 # } 16804 # 16805 # var alphaFrac = rgb_color.alpha.value || 0.0; 16806 # var rgbParams = [red, green, blue].join(','); 16807 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 16808 # }; 16809 # 16810 # var rgbToCssColor_ = function(red, green, blue) { 16811 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 16812 # var hexString = rgbNumber.toString(16); 16813 # var missingZeros = 6 - hexString.length; 16814 # var resultBuilder = ['#']; 16815 # for (var i = 0; i < missingZeros; i++) { 16816 # resultBuilder.push('0'); 16817 # } 16818 # resultBuilder.push(hexString); 16819 # return resultBuilder.join(''); 16820 # }; 16821 # 16822 # // ... 16823 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 16824 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 16825 # the final pixel color is defined by the equation: 16826 # 16827 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 16828 # 16829 # This means that a value of 1.0 corresponds to a solid color, whereas 16830 # a value of 0.0 corresponds to a completely transparent color. This 16831 # uses a wrapper message rather than a simple float scalar so that it is 16832 # possible to distinguish between a default value and the value being unset. 16833 # If omitted, this color object is to be rendered as a solid color 16834 # (as if the alpha value had been explicitly given with a value of 1.0). 16835 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 16836 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 16837 }, 16838 "width": 42, # The width of the border, in pixels. 16839 # Deprecated; the width is determined by the "style" field. 16840 "style": "A String", # The style of the border. 16841 }, 16842 }, 16843 "wrapStrategy": "A String", # The wrap strategy for the value in the cell. 16844 }, 16845 "autoRecalc": "A String", # The amount of time to wait before volatile functions are recalculated. 16846 "iterativeCalculationSettings": { # Settings to control how circular dependencies are resolved with iterative # Determines whether and how circular references are resolved with iterative 16847 # calculation. Absence of this field means that circular references will 16848 # result in calculation errors. 16849 # calculation. 16850 "convergenceThreshold": 3.14, # When iterative calculation is enabled and successive results differ by 16851 # less than this threshold value, the calculation rounds stop. 16852 "maxIterations": 42, # When iterative calculation is enabled, the maximum number of calculation 16853 # rounds to perform. 16854 }, 16855 "timeZone": "A String", # The time zone of the spreadsheet, in CLDR format such as 16856 # `America/New_York`. If the time zone isn't recognized, this may 16857 # be a custom time zone such as `GMT-07:00`. 16858 }, 16859 "sheets": [ # The sheets that are part of a spreadsheet. 16860 { # A sheet in a spreadsheet. 16861 "conditionalFormats": [ # The conditional format rules in this sheet. 16862 { # A rule describing a conditional format. 16863 "ranges": [ # The ranges that will be formatted if the condition is true. 16864 # All the ranges must be on the same grid. 16865 { # A range on a sheet. 16866 # All indexes are zero-based. 16867 # Indexes are half open, e.g the start index is inclusive 16868 # and the end index is exclusive -- [start_index, end_index). 16869 # Missing indexes indicate the range is unbounded on that side. 16870 # 16871 # For example, if `"Sheet1"` is sheet ID 0, then: 16872 # 16873 # `Sheet1!A1:A1 == sheet_id: 0, 16874 # start_row_index: 0, end_row_index: 1, 16875 # start_column_index: 0, end_column_index: 1` 16876 # 16877 # `Sheet1!A3:B4 == sheet_id: 0, 16878 # start_row_index: 2, end_row_index: 4, 16879 # start_column_index: 0, end_column_index: 2` 16880 # 16881 # `Sheet1!A:B == sheet_id: 0, 16882 # start_column_index: 0, end_column_index: 2` 16883 # 16884 # `Sheet1!A5:B == sheet_id: 0, 16885 # start_row_index: 4, 16886 # start_column_index: 0, end_column_index: 2` 16887 # 16888 # `Sheet1 == sheet_id:0` 16889 # 16890 # The start index must always be less than or equal to the end index. 16891 # If the start index equals the end index, then the range is empty. 16892 # Empty ranges are typically not meaningful and are usually rendered in the 16893 # UI as `#REF!`. 16894 "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded. 16895 "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded. 16896 "sheetId": 42, # The sheet this range is on. 16897 "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded. 16898 "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded. 16899 }, 16900 ], 16901 "booleanRule": { # A rule that may or may not match, depending on the condition. # The formatting is either "on" or "off" according to the rule. 16902 "condition": { # A condition that can evaluate to true or false. # The condition of the rule. If the condition evaluates to true, 16903 # the format will be applied. 16904 # BooleanConditions are used by conditional formatting, 16905 # data validation, and the criteria in filters. 16906 "values": [ # The values of the condition. The number of supported values depends 16907 # on the condition type. Some support zero values, 16908 # others one or two values, 16909 # and ConditionType.ONE_OF_LIST supports an arbitrary number of values. 16910 { # The value of the condition. 16911 "relativeDate": "A String", # A relative date (based on the current date). 16912 # Valid only if the type is 16913 # DATE_BEFORE, 16914 # DATE_AFTER, 16915 # DATE_ON_OR_BEFORE or 16916 # DATE_ON_OR_AFTER. 16917 # 16918 # Relative dates are not supported in data validation. 16919 # They are supported only in conditional formatting and 16920 # conditional filters. 16921 "userEnteredValue": "A String", # A value the condition is based on. 16922 # The value will be parsed as if the user typed into a cell. 16923 # Formulas are supported (and must begin with an `=`). 16924 }, 16925 ], 16926 "type": "A String", # The type of condition. 16927 }, 16928 "format": { # The format of a cell. # The format to apply. 16929 # Conditional formatting can only apply a subset of formatting: 16930 # bold, italic, 16931 # strikethrough, 16932 # foreground color & 16933 # background color. 16934 "numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user. 16935 "pattern": "A String", # Pattern string used for formatting. If not set, a default pattern based on 16936 # the user's locale will be used if necessary for the given type. 16937 # See the [Date and Number Formats guide](/sheets/api/guides/formats) for more 16938 # information about the supported patterns. 16939 "type": "A String", # The type of the number format. 16940 # When writing, this field must be set. 16941 }, 16942 "textDirection": "A String", # The direction of the text in the cell. 16943 "padding": { # The amount of padding around the cell, in pixels. # The padding of the cell. 16944 # When updating padding, every field must be specified. 16945 "top": 42, # The top padding of the cell. 16946 "right": 42, # The right padding of the cell. 16947 "bottom": 42, # The bottom padding of the cell. 16948 "left": 42, # The left padding of the cell. 16949 }, 16950 "verticalAlignment": "A String", # The vertical alignment of the value in the cell. 16951 "backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell. 16952 # for simplicity of conversion to/from color representations in various 16953 # languages over compactness; for example, the fields of this representation 16954 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 16955 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 16956 # method in iOS; and, with just a little work, it can be easily formatted into 16957 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 16958 # 16959 # Example (Java): 16960 # 16961 # import com.google.type.Color; 16962 # 16963 # // ... 16964 # public static java.awt.Color fromProto(Color protocolor) { 16965 # float alpha = protocolor.hasAlpha() 16966 # ? protocolor.getAlpha().getValue() 16967 # : 1.0; 16968 # 16969 # return new java.awt.Color( 16970 # protocolor.getRed(), 16971 # protocolor.getGreen(), 16972 # protocolor.getBlue(), 16973 # alpha); 16974 # } 16975 # 16976 # public static Color toProto(java.awt.Color color) { 16977 # float red = (float) color.getRed(); 16978 # float green = (float) color.getGreen(); 16979 # float blue = (float) color.getBlue(); 16980 # float denominator = 255.0; 16981 # Color.Builder resultBuilder = 16982 # Color 16983 # .newBuilder() 16984 # .setRed(red / denominator) 16985 # .setGreen(green / denominator) 16986 # .setBlue(blue / denominator); 16987 # int alpha = color.getAlpha(); 16988 # if (alpha != 255) { 16989 # result.setAlpha( 16990 # FloatValue 16991 # .newBuilder() 16992 # .setValue(((float) alpha) / denominator) 16993 # .build()); 16994 # } 16995 # return resultBuilder.build(); 16996 # } 16997 # // ... 16998 # 16999 # Example (iOS / Obj-C): 17000 # 17001 # // ... 17002 # static UIColor* fromProto(Color* protocolor) { 17003 # float red = [protocolor red]; 17004 # float green = [protocolor green]; 17005 # float blue = [protocolor blue]; 17006 # FloatValue* alpha_wrapper = [protocolor alpha]; 17007 # float alpha = 1.0; 17008 # if (alpha_wrapper != nil) { 17009 # alpha = [alpha_wrapper value]; 17010 # } 17011 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 17012 # } 17013 # 17014 # static Color* toProto(UIColor* color) { 17015 # CGFloat red, green, blue, alpha; 17016 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 17017 # return nil; 17018 # } 17019 # Color* result = [Color alloc] init]; 17020 # [result setRed:red]; 17021 # [result setGreen:green]; 17022 # [result setBlue:blue]; 17023 # if (alpha <= 0.9999) { 17024 # [result setAlpha:floatWrapperWithValue(alpha)]; 17025 # } 17026 # [result autorelease]; 17027 # return result; 17028 # } 17029 # // ... 17030 # 17031 # Example (JavaScript): 17032 # 17033 # // ... 17034 # 17035 # var protoToCssColor = function(rgb_color) { 17036 # var redFrac = rgb_color.red || 0.0; 17037 # var greenFrac = rgb_color.green || 0.0; 17038 # var blueFrac = rgb_color.blue || 0.0; 17039 # var red = Math.floor(redFrac * 255); 17040 # var green = Math.floor(greenFrac * 255); 17041 # var blue = Math.floor(blueFrac * 255); 17042 # 17043 # if (!('alpha' in rgb_color)) { 17044 # return rgbToCssColor_(red, green, blue); 17045 # } 17046 # 17047 # var alphaFrac = rgb_color.alpha.value || 0.0; 17048 # var rgbParams = [red, green, blue].join(','); 17049 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 17050 # }; 17051 # 17052 # var rgbToCssColor_ = function(red, green, blue) { 17053 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 17054 # var hexString = rgbNumber.toString(16); 17055 # var missingZeros = 6 - hexString.length; 17056 # var resultBuilder = ['#']; 17057 # for (var i = 0; i < missingZeros; i++) { 17058 # resultBuilder.push('0'); 17059 # } 17060 # resultBuilder.push(hexString); 17061 # return resultBuilder.join(''); 17062 # }; 17063 # 17064 # // ... 17065 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 17066 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 17067 # the final pixel color is defined by the equation: 17068 # 17069 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 17070 # 17071 # This means that a value of 1.0 corresponds to a solid color, whereas 17072 # a value of 0.0 corresponds to a completely transparent color. This 17073 # uses a wrapper message rather than a simple float scalar so that it is 17074 # possible to distinguish between a default value and the value being unset. 17075 # If omitted, this color object is to be rendered as a solid color 17076 # (as if the alpha value had been explicitly given with a value of 1.0). 17077 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 17078 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 17079 }, 17080 "horizontalAlignment": "A String", # The horizontal alignment of the value in the cell. 17081 "textFormat": { # The format of a run of text in a cell. # The format of the text in the cell (unless overridden by a format run). 17082 # Absent values indicate that the field isn't specified. 17083 "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text. 17084 # for simplicity of conversion to/from color representations in various 17085 # languages over compactness; for example, the fields of this representation 17086 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 17087 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 17088 # method in iOS; and, with just a little work, it can be easily formatted into 17089 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 17090 # 17091 # Example (Java): 17092 # 17093 # import com.google.type.Color; 17094 # 17095 # // ... 17096 # public static java.awt.Color fromProto(Color protocolor) { 17097 # float alpha = protocolor.hasAlpha() 17098 # ? protocolor.getAlpha().getValue() 17099 # : 1.0; 17100 # 17101 # return new java.awt.Color( 17102 # protocolor.getRed(), 17103 # protocolor.getGreen(), 17104 # protocolor.getBlue(), 17105 # alpha); 17106 # } 17107 # 17108 # public static Color toProto(java.awt.Color color) { 17109 # float red = (float) color.getRed(); 17110 # float green = (float) color.getGreen(); 17111 # float blue = (float) color.getBlue(); 17112 # float denominator = 255.0; 17113 # Color.Builder resultBuilder = 17114 # Color 17115 # .newBuilder() 17116 # .setRed(red / denominator) 17117 # .setGreen(green / denominator) 17118 # .setBlue(blue / denominator); 17119 # int alpha = color.getAlpha(); 17120 # if (alpha != 255) { 17121 # result.setAlpha( 17122 # FloatValue 17123 # .newBuilder() 17124 # .setValue(((float) alpha) / denominator) 17125 # .build()); 17126 # } 17127 # return resultBuilder.build(); 17128 # } 17129 # // ... 17130 # 17131 # Example (iOS / Obj-C): 17132 # 17133 # // ... 17134 # static UIColor* fromProto(Color* protocolor) { 17135 # float red = [protocolor red]; 17136 # float green = [protocolor green]; 17137 # float blue = [protocolor blue]; 17138 # FloatValue* alpha_wrapper = [protocolor alpha]; 17139 # float alpha = 1.0; 17140 # if (alpha_wrapper != nil) { 17141 # alpha = [alpha_wrapper value]; 17142 # } 17143 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 17144 # } 17145 # 17146 # static Color* toProto(UIColor* color) { 17147 # CGFloat red, green, blue, alpha; 17148 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 17149 # return nil; 17150 # } 17151 # Color* result = [Color alloc] init]; 17152 # [result setRed:red]; 17153 # [result setGreen:green]; 17154 # [result setBlue:blue]; 17155 # if (alpha <= 0.9999) { 17156 # [result setAlpha:floatWrapperWithValue(alpha)]; 17157 # } 17158 # [result autorelease]; 17159 # return result; 17160 # } 17161 # // ... 17162 # 17163 # Example (JavaScript): 17164 # 17165 # // ... 17166 # 17167 # var protoToCssColor = function(rgb_color) { 17168 # var redFrac = rgb_color.red || 0.0; 17169 # var greenFrac = rgb_color.green || 0.0; 17170 # var blueFrac = rgb_color.blue || 0.0; 17171 # var red = Math.floor(redFrac * 255); 17172 # var green = Math.floor(greenFrac * 255); 17173 # var blue = Math.floor(blueFrac * 255); 17174 # 17175 # if (!('alpha' in rgb_color)) { 17176 # return rgbToCssColor_(red, green, blue); 17177 # } 17178 # 17179 # var alphaFrac = rgb_color.alpha.value || 0.0; 17180 # var rgbParams = [red, green, blue].join(','); 17181 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 17182 # }; 17183 # 17184 # var rgbToCssColor_ = function(red, green, blue) { 17185 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 17186 # var hexString = rgbNumber.toString(16); 17187 # var missingZeros = 6 - hexString.length; 17188 # var resultBuilder = ['#']; 17189 # for (var i = 0; i < missingZeros; i++) { 17190 # resultBuilder.push('0'); 17191 # } 17192 # resultBuilder.push(hexString); 17193 # return resultBuilder.join(''); 17194 # }; 17195 # 17196 # // ... 17197 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 17198 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 17199 # the final pixel color is defined by the equation: 17200 # 17201 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 17202 # 17203 # This means that a value of 1.0 corresponds to a solid color, whereas 17204 # a value of 0.0 corresponds to a completely transparent color. This 17205 # uses a wrapper message rather than a simple float scalar so that it is 17206 # possible to distinguish between a default value and the value being unset. 17207 # If omitted, this color object is to be rendered as a solid color 17208 # (as if the alpha value had been explicitly given with a value of 1.0). 17209 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 17210 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 17211 }, 17212 "bold": True or False, # True if the text is bold. 17213 "strikethrough": True or False, # True if the text has a strikethrough. 17214 "fontFamily": "A String", # The font family. 17215 "fontSize": 42, # The size of the font. 17216 "italic": True or False, # True if the text is italicized. 17217 "underline": True or False, # True if the text is underlined. 17218 }, 17219 "textRotation": { # The rotation applied to text in a cell. # The rotation applied to text in a cell 17220 "angle": 42, # The angle between the standard orientation and the desired orientation. 17221 # Measured in degrees. Valid values are between -90 and 90. Positive 17222 # angles are angled upwards, negative are angled downwards. 17223 # 17224 # Note: For LTR text direction positive angles are in the counterclockwise 17225 # direction, whereas for RTL they are in the clockwise direction 17226 "vertical": True or False, # If true, text reads top to bottom, but the orientation of individual 17227 # characters is unchanged. 17228 # For example: 17229 # 17230 # | V | 17231 # | e | 17232 # | r | 17233 # | t | 17234 # | i | 17235 # | c | 17236 # | a | 17237 # | l | 17238 }, 17239 "hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell. 17240 "borders": { # The borders of the cell. # The borders of the cell. 17241 "top": { # A border along a cell. # The top border of the cell. 17242 "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border. 17243 # for simplicity of conversion to/from color representations in various 17244 # languages over compactness; for example, the fields of this representation 17245 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 17246 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 17247 # method in iOS; and, with just a little work, it can be easily formatted into 17248 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 17249 # 17250 # Example (Java): 17251 # 17252 # import com.google.type.Color; 17253 # 17254 # // ... 17255 # public static java.awt.Color fromProto(Color protocolor) { 17256 # float alpha = protocolor.hasAlpha() 17257 # ? protocolor.getAlpha().getValue() 17258 # : 1.0; 17259 # 17260 # return new java.awt.Color( 17261 # protocolor.getRed(), 17262 # protocolor.getGreen(), 17263 # protocolor.getBlue(), 17264 # alpha); 17265 # } 17266 # 17267 # public static Color toProto(java.awt.Color color) { 17268 # float red = (float) color.getRed(); 17269 # float green = (float) color.getGreen(); 17270 # float blue = (float) color.getBlue(); 17271 # float denominator = 255.0; 17272 # Color.Builder resultBuilder = 17273 # Color 17274 # .newBuilder() 17275 # .setRed(red / denominator) 17276 # .setGreen(green / denominator) 17277 # .setBlue(blue / denominator); 17278 # int alpha = color.getAlpha(); 17279 # if (alpha != 255) { 17280 # result.setAlpha( 17281 # FloatValue 17282 # .newBuilder() 17283 # .setValue(((float) alpha) / denominator) 17284 # .build()); 17285 # } 17286 # return resultBuilder.build(); 17287 # } 17288 # // ... 17289 # 17290 # Example (iOS / Obj-C): 17291 # 17292 # // ... 17293 # static UIColor* fromProto(Color* protocolor) { 17294 # float red = [protocolor red]; 17295 # float green = [protocolor green]; 17296 # float blue = [protocolor blue]; 17297 # FloatValue* alpha_wrapper = [protocolor alpha]; 17298 # float alpha = 1.0; 17299 # if (alpha_wrapper != nil) { 17300 # alpha = [alpha_wrapper value]; 17301 # } 17302 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 17303 # } 17304 # 17305 # static Color* toProto(UIColor* color) { 17306 # CGFloat red, green, blue, alpha; 17307 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 17308 # return nil; 17309 # } 17310 # Color* result = [Color alloc] init]; 17311 # [result setRed:red]; 17312 # [result setGreen:green]; 17313 # [result setBlue:blue]; 17314 # if (alpha <= 0.9999) { 17315 # [result setAlpha:floatWrapperWithValue(alpha)]; 17316 # } 17317 # [result autorelease]; 17318 # return result; 17319 # } 17320 # // ... 17321 # 17322 # Example (JavaScript): 17323 # 17324 # // ... 17325 # 17326 # var protoToCssColor = function(rgb_color) { 17327 # var redFrac = rgb_color.red || 0.0; 17328 # var greenFrac = rgb_color.green || 0.0; 17329 # var blueFrac = rgb_color.blue || 0.0; 17330 # var red = Math.floor(redFrac * 255); 17331 # var green = Math.floor(greenFrac * 255); 17332 # var blue = Math.floor(blueFrac * 255); 17333 # 17334 # if (!('alpha' in rgb_color)) { 17335 # return rgbToCssColor_(red, green, blue); 17336 # } 17337 # 17338 # var alphaFrac = rgb_color.alpha.value || 0.0; 17339 # var rgbParams = [red, green, blue].join(','); 17340 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 17341 # }; 17342 # 17343 # var rgbToCssColor_ = function(red, green, blue) { 17344 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 17345 # var hexString = rgbNumber.toString(16); 17346 # var missingZeros = 6 - hexString.length; 17347 # var resultBuilder = ['#']; 17348 # for (var i = 0; i < missingZeros; i++) { 17349 # resultBuilder.push('0'); 17350 # } 17351 # resultBuilder.push(hexString); 17352 # return resultBuilder.join(''); 17353 # }; 17354 # 17355 # // ... 17356 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 17357 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 17358 # the final pixel color is defined by the equation: 17359 # 17360 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 17361 # 17362 # This means that a value of 1.0 corresponds to a solid color, whereas 17363 # a value of 0.0 corresponds to a completely transparent color. This 17364 # uses a wrapper message rather than a simple float scalar so that it is 17365 # possible to distinguish between a default value and the value being unset. 17366 # If omitted, this color object is to be rendered as a solid color 17367 # (as if the alpha value had been explicitly given with a value of 1.0). 17368 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 17369 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 17370 }, 17371 "width": 42, # The width of the border, in pixels. 17372 # Deprecated; the width is determined by the "style" field. 17373 "style": "A String", # The style of the border. 17374 }, 17375 "right": { # A border along a cell. # The right border of the cell. 17376 "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border. 17377 # for simplicity of conversion to/from color representations in various 17378 # languages over compactness; for example, the fields of this representation 17379 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 17380 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 17381 # method in iOS; and, with just a little work, it can be easily formatted into 17382 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 17383 # 17384 # Example (Java): 17385 # 17386 # import com.google.type.Color; 17387 # 17388 # // ... 17389 # public static java.awt.Color fromProto(Color protocolor) { 17390 # float alpha = protocolor.hasAlpha() 17391 # ? protocolor.getAlpha().getValue() 17392 # : 1.0; 17393 # 17394 # return new java.awt.Color( 17395 # protocolor.getRed(), 17396 # protocolor.getGreen(), 17397 # protocolor.getBlue(), 17398 # alpha); 17399 # } 17400 # 17401 # public static Color toProto(java.awt.Color color) { 17402 # float red = (float) color.getRed(); 17403 # float green = (float) color.getGreen(); 17404 # float blue = (float) color.getBlue(); 17405 # float denominator = 255.0; 17406 # Color.Builder resultBuilder = 17407 # Color 17408 # .newBuilder() 17409 # .setRed(red / denominator) 17410 # .setGreen(green / denominator) 17411 # .setBlue(blue / denominator); 17412 # int alpha = color.getAlpha(); 17413 # if (alpha != 255) { 17414 # result.setAlpha( 17415 # FloatValue 17416 # .newBuilder() 17417 # .setValue(((float) alpha) / denominator) 17418 # .build()); 17419 # } 17420 # return resultBuilder.build(); 17421 # } 17422 # // ... 17423 # 17424 # Example (iOS / Obj-C): 17425 # 17426 # // ... 17427 # static UIColor* fromProto(Color* protocolor) { 17428 # float red = [protocolor red]; 17429 # float green = [protocolor green]; 17430 # float blue = [protocolor blue]; 17431 # FloatValue* alpha_wrapper = [protocolor alpha]; 17432 # float alpha = 1.0; 17433 # if (alpha_wrapper != nil) { 17434 # alpha = [alpha_wrapper value]; 17435 # } 17436 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 17437 # } 17438 # 17439 # static Color* toProto(UIColor* color) { 17440 # CGFloat red, green, blue, alpha; 17441 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 17442 # return nil; 17443 # } 17444 # Color* result = [Color alloc] init]; 17445 # [result setRed:red]; 17446 # [result setGreen:green]; 17447 # [result setBlue:blue]; 17448 # if (alpha <= 0.9999) { 17449 # [result setAlpha:floatWrapperWithValue(alpha)]; 17450 # } 17451 # [result autorelease]; 17452 # return result; 17453 # } 17454 # // ... 17455 # 17456 # Example (JavaScript): 17457 # 17458 # // ... 17459 # 17460 # var protoToCssColor = function(rgb_color) { 17461 # var redFrac = rgb_color.red || 0.0; 17462 # var greenFrac = rgb_color.green || 0.0; 17463 # var blueFrac = rgb_color.blue || 0.0; 17464 # var red = Math.floor(redFrac * 255); 17465 # var green = Math.floor(greenFrac * 255); 17466 # var blue = Math.floor(blueFrac * 255); 17467 # 17468 # if (!('alpha' in rgb_color)) { 17469 # return rgbToCssColor_(red, green, blue); 17470 # } 17471 # 17472 # var alphaFrac = rgb_color.alpha.value || 0.0; 17473 # var rgbParams = [red, green, blue].join(','); 17474 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 17475 # }; 17476 # 17477 # var rgbToCssColor_ = function(red, green, blue) { 17478 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 17479 # var hexString = rgbNumber.toString(16); 17480 # var missingZeros = 6 - hexString.length; 17481 # var resultBuilder = ['#']; 17482 # for (var i = 0; i < missingZeros; i++) { 17483 # resultBuilder.push('0'); 17484 # } 17485 # resultBuilder.push(hexString); 17486 # return resultBuilder.join(''); 17487 # }; 17488 # 17489 # // ... 17490 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 17491 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 17492 # the final pixel color is defined by the equation: 17493 # 17494 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 17495 # 17496 # This means that a value of 1.0 corresponds to a solid color, whereas 17497 # a value of 0.0 corresponds to a completely transparent color. This 17498 # uses a wrapper message rather than a simple float scalar so that it is 17499 # possible to distinguish between a default value and the value being unset. 17500 # If omitted, this color object is to be rendered as a solid color 17501 # (as if the alpha value had been explicitly given with a value of 1.0). 17502 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 17503 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 17504 }, 17505 "width": 42, # The width of the border, in pixels. 17506 # Deprecated; the width is determined by the "style" field. 17507 "style": "A String", # The style of the border. 17508 }, 17509 "bottom": { # A border along a cell. # The bottom border of the cell. 17510 "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border. 17511 # for simplicity of conversion to/from color representations in various 17512 # languages over compactness; for example, the fields of this representation 17513 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 17514 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 17515 # method in iOS; and, with just a little work, it can be easily formatted into 17516 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 17517 # 17518 # Example (Java): 17519 # 17520 # import com.google.type.Color; 17521 # 17522 # // ... 17523 # public static java.awt.Color fromProto(Color protocolor) { 17524 # float alpha = protocolor.hasAlpha() 17525 # ? protocolor.getAlpha().getValue() 17526 # : 1.0; 17527 # 17528 # return new java.awt.Color( 17529 # protocolor.getRed(), 17530 # protocolor.getGreen(), 17531 # protocolor.getBlue(), 17532 # alpha); 17533 # } 17534 # 17535 # public static Color toProto(java.awt.Color color) { 17536 # float red = (float) color.getRed(); 17537 # float green = (float) color.getGreen(); 17538 # float blue = (float) color.getBlue(); 17539 # float denominator = 255.0; 17540 # Color.Builder resultBuilder = 17541 # Color 17542 # .newBuilder() 17543 # .setRed(red / denominator) 17544 # .setGreen(green / denominator) 17545 # .setBlue(blue / denominator); 17546 # int alpha = color.getAlpha(); 17547 # if (alpha != 255) { 17548 # result.setAlpha( 17549 # FloatValue 17550 # .newBuilder() 17551 # .setValue(((float) alpha) / denominator) 17552 # .build()); 17553 # } 17554 # return resultBuilder.build(); 17555 # } 17556 # // ... 17557 # 17558 # Example (iOS / Obj-C): 17559 # 17560 # // ... 17561 # static UIColor* fromProto(Color* protocolor) { 17562 # float red = [protocolor red]; 17563 # float green = [protocolor green]; 17564 # float blue = [protocolor blue]; 17565 # FloatValue* alpha_wrapper = [protocolor alpha]; 17566 # float alpha = 1.0; 17567 # if (alpha_wrapper != nil) { 17568 # alpha = [alpha_wrapper value]; 17569 # } 17570 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 17571 # } 17572 # 17573 # static Color* toProto(UIColor* color) { 17574 # CGFloat red, green, blue, alpha; 17575 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 17576 # return nil; 17577 # } 17578 # Color* result = [Color alloc] init]; 17579 # [result setRed:red]; 17580 # [result setGreen:green]; 17581 # [result setBlue:blue]; 17582 # if (alpha <= 0.9999) { 17583 # [result setAlpha:floatWrapperWithValue(alpha)]; 17584 # } 17585 # [result autorelease]; 17586 # return result; 17587 # } 17588 # // ... 17589 # 17590 # Example (JavaScript): 17591 # 17592 # // ... 17593 # 17594 # var protoToCssColor = function(rgb_color) { 17595 # var redFrac = rgb_color.red || 0.0; 17596 # var greenFrac = rgb_color.green || 0.0; 17597 # var blueFrac = rgb_color.blue || 0.0; 17598 # var red = Math.floor(redFrac * 255); 17599 # var green = Math.floor(greenFrac * 255); 17600 # var blue = Math.floor(blueFrac * 255); 17601 # 17602 # if (!('alpha' in rgb_color)) { 17603 # return rgbToCssColor_(red, green, blue); 17604 # } 17605 # 17606 # var alphaFrac = rgb_color.alpha.value || 0.0; 17607 # var rgbParams = [red, green, blue].join(','); 17608 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 17609 # }; 17610 # 17611 # var rgbToCssColor_ = function(red, green, blue) { 17612 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 17613 # var hexString = rgbNumber.toString(16); 17614 # var missingZeros = 6 - hexString.length; 17615 # var resultBuilder = ['#']; 17616 # for (var i = 0; i < missingZeros; i++) { 17617 # resultBuilder.push('0'); 17618 # } 17619 # resultBuilder.push(hexString); 17620 # return resultBuilder.join(''); 17621 # }; 17622 # 17623 # // ... 17624 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 17625 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 17626 # the final pixel color is defined by the equation: 17627 # 17628 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 17629 # 17630 # This means that a value of 1.0 corresponds to a solid color, whereas 17631 # a value of 0.0 corresponds to a completely transparent color. This 17632 # uses a wrapper message rather than a simple float scalar so that it is 17633 # possible to distinguish between a default value and the value being unset. 17634 # If omitted, this color object is to be rendered as a solid color 17635 # (as if the alpha value had been explicitly given with a value of 1.0). 17636 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 17637 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 17638 }, 17639 "width": 42, # The width of the border, in pixels. 17640 # Deprecated; the width is determined by the "style" field. 17641 "style": "A String", # The style of the border. 17642 }, 17643 "left": { # A border along a cell. # The left border of the cell. 17644 "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border. 17645 # for simplicity of conversion to/from color representations in various 17646 # languages over compactness; for example, the fields of this representation 17647 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 17648 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 17649 # method in iOS; and, with just a little work, it can be easily formatted into 17650 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 17651 # 17652 # Example (Java): 17653 # 17654 # import com.google.type.Color; 17655 # 17656 # // ... 17657 # public static java.awt.Color fromProto(Color protocolor) { 17658 # float alpha = protocolor.hasAlpha() 17659 # ? protocolor.getAlpha().getValue() 17660 # : 1.0; 17661 # 17662 # return new java.awt.Color( 17663 # protocolor.getRed(), 17664 # protocolor.getGreen(), 17665 # protocolor.getBlue(), 17666 # alpha); 17667 # } 17668 # 17669 # public static Color toProto(java.awt.Color color) { 17670 # float red = (float) color.getRed(); 17671 # float green = (float) color.getGreen(); 17672 # float blue = (float) color.getBlue(); 17673 # float denominator = 255.0; 17674 # Color.Builder resultBuilder = 17675 # Color 17676 # .newBuilder() 17677 # .setRed(red / denominator) 17678 # .setGreen(green / denominator) 17679 # .setBlue(blue / denominator); 17680 # int alpha = color.getAlpha(); 17681 # if (alpha != 255) { 17682 # result.setAlpha( 17683 # FloatValue 17684 # .newBuilder() 17685 # .setValue(((float) alpha) / denominator) 17686 # .build()); 17687 # } 17688 # return resultBuilder.build(); 17689 # } 17690 # // ... 17691 # 17692 # Example (iOS / Obj-C): 17693 # 17694 # // ... 17695 # static UIColor* fromProto(Color* protocolor) { 17696 # float red = [protocolor red]; 17697 # float green = [protocolor green]; 17698 # float blue = [protocolor blue]; 17699 # FloatValue* alpha_wrapper = [protocolor alpha]; 17700 # float alpha = 1.0; 17701 # if (alpha_wrapper != nil) { 17702 # alpha = [alpha_wrapper value]; 17703 # } 17704 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 17705 # } 17706 # 17707 # static Color* toProto(UIColor* color) { 17708 # CGFloat red, green, blue, alpha; 17709 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 17710 # return nil; 17711 # } 17712 # Color* result = [Color alloc] init]; 17713 # [result setRed:red]; 17714 # [result setGreen:green]; 17715 # [result setBlue:blue]; 17716 # if (alpha <= 0.9999) { 17717 # [result setAlpha:floatWrapperWithValue(alpha)]; 17718 # } 17719 # [result autorelease]; 17720 # return result; 17721 # } 17722 # // ... 17723 # 17724 # Example (JavaScript): 17725 # 17726 # // ... 17727 # 17728 # var protoToCssColor = function(rgb_color) { 17729 # var redFrac = rgb_color.red || 0.0; 17730 # var greenFrac = rgb_color.green || 0.0; 17731 # var blueFrac = rgb_color.blue || 0.0; 17732 # var red = Math.floor(redFrac * 255); 17733 # var green = Math.floor(greenFrac * 255); 17734 # var blue = Math.floor(blueFrac * 255); 17735 # 17736 # if (!('alpha' in rgb_color)) { 17737 # return rgbToCssColor_(red, green, blue); 17738 # } 17739 # 17740 # var alphaFrac = rgb_color.alpha.value || 0.0; 17741 # var rgbParams = [red, green, blue].join(','); 17742 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 17743 # }; 17744 # 17745 # var rgbToCssColor_ = function(red, green, blue) { 17746 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 17747 # var hexString = rgbNumber.toString(16); 17748 # var missingZeros = 6 - hexString.length; 17749 # var resultBuilder = ['#']; 17750 # for (var i = 0; i < missingZeros; i++) { 17751 # resultBuilder.push('0'); 17752 # } 17753 # resultBuilder.push(hexString); 17754 # return resultBuilder.join(''); 17755 # }; 17756 # 17757 # // ... 17758 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 17759 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 17760 # the final pixel color is defined by the equation: 17761 # 17762 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 17763 # 17764 # This means that a value of 1.0 corresponds to a solid color, whereas 17765 # a value of 0.0 corresponds to a completely transparent color. This 17766 # uses a wrapper message rather than a simple float scalar so that it is 17767 # possible to distinguish between a default value and the value being unset. 17768 # If omitted, this color object is to be rendered as a solid color 17769 # (as if the alpha value had been explicitly given with a value of 1.0). 17770 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 17771 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 17772 }, 17773 "width": 42, # The width of the border, in pixels. 17774 # Deprecated; the width is determined by the "style" field. 17775 "style": "A String", # The style of the border. 17776 }, 17777 }, 17778 "wrapStrategy": "A String", # The wrap strategy for the value in the cell. 17779 }, 17780 }, 17781 "gradientRule": { # A rule that applies a gradient color scale format, based on # The formatting will vary based on the gradients in the rule. 17782 # the interpolation points listed. The format of a cell will vary 17783 # based on its contents as compared to the values of the interpolation 17784 # points. 17785 "maxpoint": { # A single interpolation point on a gradient conditional format. # The final interpolation point. 17786 # These pin the gradient color scale according to the color, 17787 # type and value chosen. 17788 "color": { # Represents a color in the RGBA color space. This representation is designed # The color this interpolation point should use. 17789 # for simplicity of conversion to/from color representations in various 17790 # languages over compactness; for example, the fields of this representation 17791 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 17792 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 17793 # method in iOS; and, with just a little work, it can be easily formatted into 17794 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 17795 # 17796 # Example (Java): 17797 # 17798 # import com.google.type.Color; 17799 # 17800 # // ... 17801 # public static java.awt.Color fromProto(Color protocolor) { 17802 # float alpha = protocolor.hasAlpha() 17803 # ? protocolor.getAlpha().getValue() 17804 # : 1.0; 17805 # 17806 # return new java.awt.Color( 17807 # protocolor.getRed(), 17808 # protocolor.getGreen(), 17809 # protocolor.getBlue(), 17810 # alpha); 17811 # } 17812 # 17813 # public static Color toProto(java.awt.Color color) { 17814 # float red = (float) color.getRed(); 17815 # float green = (float) color.getGreen(); 17816 # float blue = (float) color.getBlue(); 17817 # float denominator = 255.0; 17818 # Color.Builder resultBuilder = 17819 # Color 17820 # .newBuilder() 17821 # .setRed(red / denominator) 17822 # .setGreen(green / denominator) 17823 # .setBlue(blue / denominator); 17824 # int alpha = color.getAlpha(); 17825 # if (alpha != 255) { 17826 # result.setAlpha( 17827 # FloatValue 17828 # .newBuilder() 17829 # .setValue(((float) alpha) / denominator) 17830 # .build()); 17831 # } 17832 # return resultBuilder.build(); 17833 # } 17834 # // ... 17835 # 17836 # Example (iOS / Obj-C): 17837 # 17838 # // ... 17839 # static UIColor* fromProto(Color* protocolor) { 17840 # float red = [protocolor red]; 17841 # float green = [protocolor green]; 17842 # float blue = [protocolor blue]; 17843 # FloatValue* alpha_wrapper = [protocolor alpha]; 17844 # float alpha = 1.0; 17845 # if (alpha_wrapper != nil) { 17846 # alpha = [alpha_wrapper value]; 17847 # } 17848 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 17849 # } 17850 # 17851 # static Color* toProto(UIColor* color) { 17852 # CGFloat red, green, blue, alpha; 17853 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 17854 # return nil; 17855 # } 17856 # Color* result = [Color alloc] init]; 17857 # [result setRed:red]; 17858 # [result setGreen:green]; 17859 # [result setBlue:blue]; 17860 # if (alpha <= 0.9999) { 17861 # [result setAlpha:floatWrapperWithValue(alpha)]; 17862 # } 17863 # [result autorelease]; 17864 # return result; 17865 # } 17866 # // ... 17867 # 17868 # Example (JavaScript): 17869 # 17870 # // ... 17871 # 17872 # var protoToCssColor = function(rgb_color) { 17873 # var redFrac = rgb_color.red || 0.0; 17874 # var greenFrac = rgb_color.green || 0.0; 17875 # var blueFrac = rgb_color.blue || 0.0; 17876 # var red = Math.floor(redFrac * 255); 17877 # var green = Math.floor(greenFrac * 255); 17878 # var blue = Math.floor(blueFrac * 255); 17879 # 17880 # if (!('alpha' in rgb_color)) { 17881 # return rgbToCssColor_(red, green, blue); 17882 # } 17883 # 17884 # var alphaFrac = rgb_color.alpha.value || 0.0; 17885 # var rgbParams = [red, green, blue].join(','); 17886 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 17887 # }; 17888 # 17889 # var rgbToCssColor_ = function(red, green, blue) { 17890 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 17891 # var hexString = rgbNumber.toString(16); 17892 # var missingZeros = 6 - hexString.length; 17893 # var resultBuilder = ['#']; 17894 # for (var i = 0; i < missingZeros; i++) { 17895 # resultBuilder.push('0'); 17896 # } 17897 # resultBuilder.push(hexString); 17898 # return resultBuilder.join(''); 17899 # }; 17900 # 17901 # // ... 17902 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 17903 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 17904 # the final pixel color is defined by the equation: 17905 # 17906 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 17907 # 17908 # This means that a value of 1.0 corresponds to a solid color, whereas 17909 # a value of 0.0 corresponds to a completely transparent color. This 17910 # uses a wrapper message rather than a simple float scalar so that it is 17911 # possible to distinguish between a default value and the value being unset. 17912 # If omitted, this color object is to be rendered as a solid color 17913 # (as if the alpha value had been explicitly given with a value of 1.0). 17914 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 17915 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 17916 }, 17917 "type": "A String", # How the value should be interpreted. 17918 "value": "A String", # The value this interpolation point uses. May be a formula. 17919 # Unused if type is MIN or 17920 # MAX. 17921 }, 17922 "midpoint": { # A single interpolation point on a gradient conditional format. # An optional midway interpolation point. 17923 # These pin the gradient color scale according to the color, 17924 # type and value chosen. 17925 "color": { # Represents a color in the RGBA color space. This representation is designed # The color this interpolation point should use. 17926 # for simplicity of conversion to/from color representations in various 17927 # languages over compactness; for example, the fields of this representation 17928 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 17929 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 17930 # method in iOS; and, with just a little work, it can be easily formatted into 17931 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 17932 # 17933 # Example (Java): 17934 # 17935 # import com.google.type.Color; 17936 # 17937 # // ... 17938 # public static java.awt.Color fromProto(Color protocolor) { 17939 # float alpha = protocolor.hasAlpha() 17940 # ? protocolor.getAlpha().getValue() 17941 # : 1.0; 17942 # 17943 # return new java.awt.Color( 17944 # protocolor.getRed(), 17945 # protocolor.getGreen(), 17946 # protocolor.getBlue(), 17947 # alpha); 17948 # } 17949 # 17950 # public static Color toProto(java.awt.Color color) { 17951 # float red = (float) color.getRed(); 17952 # float green = (float) color.getGreen(); 17953 # float blue = (float) color.getBlue(); 17954 # float denominator = 255.0; 17955 # Color.Builder resultBuilder = 17956 # Color 17957 # .newBuilder() 17958 # .setRed(red / denominator) 17959 # .setGreen(green / denominator) 17960 # .setBlue(blue / denominator); 17961 # int alpha = color.getAlpha(); 17962 # if (alpha != 255) { 17963 # result.setAlpha( 17964 # FloatValue 17965 # .newBuilder() 17966 # .setValue(((float) alpha) / denominator) 17967 # .build()); 17968 # } 17969 # return resultBuilder.build(); 17970 # } 17971 # // ... 17972 # 17973 # Example (iOS / Obj-C): 17974 # 17975 # // ... 17976 # static UIColor* fromProto(Color* protocolor) { 17977 # float red = [protocolor red]; 17978 # float green = [protocolor green]; 17979 # float blue = [protocolor blue]; 17980 # FloatValue* alpha_wrapper = [protocolor alpha]; 17981 # float alpha = 1.0; 17982 # if (alpha_wrapper != nil) { 17983 # alpha = [alpha_wrapper value]; 17984 # } 17985 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 17986 # } 17987 # 17988 # static Color* toProto(UIColor* color) { 17989 # CGFloat red, green, blue, alpha; 17990 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 17991 # return nil; 17992 # } 17993 # Color* result = [Color alloc] init]; 17994 # [result setRed:red]; 17995 # [result setGreen:green]; 17996 # [result setBlue:blue]; 17997 # if (alpha <= 0.9999) { 17998 # [result setAlpha:floatWrapperWithValue(alpha)]; 17999 # } 18000 # [result autorelease]; 18001 # return result; 18002 # } 18003 # // ... 18004 # 18005 # Example (JavaScript): 18006 # 18007 # // ... 18008 # 18009 # var protoToCssColor = function(rgb_color) { 18010 # var redFrac = rgb_color.red || 0.0; 18011 # var greenFrac = rgb_color.green || 0.0; 18012 # var blueFrac = rgb_color.blue || 0.0; 18013 # var red = Math.floor(redFrac * 255); 18014 # var green = Math.floor(greenFrac * 255); 18015 # var blue = Math.floor(blueFrac * 255); 18016 # 18017 # if (!('alpha' in rgb_color)) { 18018 # return rgbToCssColor_(red, green, blue); 18019 # } 18020 # 18021 # var alphaFrac = rgb_color.alpha.value || 0.0; 18022 # var rgbParams = [red, green, blue].join(','); 18023 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 18024 # }; 18025 # 18026 # var rgbToCssColor_ = function(red, green, blue) { 18027 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 18028 # var hexString = rgbNumber.toString(16); 18029 # var missingZeros = 6 - hexString.length; 18030 # var resultBuilder = ['#']; 18031 # for (var i = 0; i < missingZeros; i++) { 18032 # resultBuilder.push('0'); 18033 # } 18034 # resultBuilder.push(hexString); 18035 # return resultBuilder.join(''); 18036 # }; 18037 # 18038 # // ... 18039 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 18040 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 18041 # the final pixel color is defined by the equation: 18042 # 18043 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 18044 # 18045 # This means that a value of 1.0 corresponds to a solid color, whereas 18046 # a value of 0.0 corresponds to a completely transparent color. This 18047 # uses a wrapper message rather than a simple float scalar so that it is 18048 # possible to distinguish between a default value and the value being unset. 18049 # If omitted, this color object is to be rendered as a solid color 18050 # (as if the alpha value had been explicitly given with a value of 1.0). 18051 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 18052 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 18053 }, 18054 "type": "A String", # How the value should be interpreted. 18055 "value": "A String", # The value this interpolation point uses. May be a formula. 18056 # Unused if type is MIN or 18057 # MAX. 18058 }, 18059 "minpoint": { # A single interpolation point on a gradient conditional format. # The starting interpolation point. 18060 # These pin the gradient color scale according to the color, 18061 # type and value chosen. 18062 "color": { # Represents a color in the RGBA color space. This representation is designed # The color this interpolation point should use. 18063 # for simplicity of conversion to/from color representations in various 18064 # languages over compactness; for example, the fields of this representation 18065 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 18066 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 18067 # method in iOS; and, with just a little work, it can be easily formatted into 18068 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 18069 # 18070 # Example (Java): 18071 # 18072 # import com.google.type.Color; 18073 # 18074 # // ... 18075 # public static java.awt.Color fromProto(Color protocolor) { 18076 # float alpha = protocolor.hasAlpha() 18077 # ? protocolor.getAlpha().getValue() 18078 # : 1.0; 18079 # 18080 # return new java.awt.Color( 18081 # protocolor.getRed(), 18082 # protocolor.getGreen(), 18083 # protocolor.getBlue(), 18084 # alpha); 18085 # } 18086 # 18087 # public static Color toProto(java.awt.Color color) { 18088 # float red = (float) color.getRed(); 18089 # float green = (float) color.getGreen(); 18090 # float blue = (float) color.getBlue(); 18091 # float denominator = 255.0; 18092 # Color.Builder resultBuilder = 18093 # Color 18094 # .newBuilder() 18095 # .setRed(red / denominator) 18096 # .setGreen(green / denominator) 18097 # .setBlue(blue / denominator); 18098 # int alpha = color.getAlpha(); 18099 # if (alpha != 255) { 18100 # result.setAlpha( 18101 # FloatValue 18102 # .newBuilder() 18103 # .setValue(((float) alpha) / denominator) 18104 # .build()); 18105 # } 18106 # return resultBuilder.build(); 18107 # } 18108 # // ... 18109 # 18110 # Example (iOS / Obj-C): 18111 # 18112 # // ... 18113 # static UIColor* fromProto(Color* protocolor) { 18114 # float red = [protocolor red]; 18115 # float green = [protocolor green]; 18116 # float blue = [protocolor blue]; 18117 # FloatValue* alpha_wrapper = [protocolor alpha]; 18118 # float alpha = 1.0; 18119 # if (alpha_wrapper != nil) { 18120 # alpha = [alpha_wrapper value]; 18121 # } 18122 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 18123 # } 18124 # 18125 # static Color* toProto(UIColor* color) { 18126 # CGFloat red, green, blue, alpha; 18127 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 18128 # return nil; 18129 # } 18130 # Color* result = [Color alloc] init]; 18131 # [result setRed:red]; 18132 # [result setGreen:green]; 18133 # [result setBlue:blue]; 18134 # if (alpha <= 0.9999) { 18135 # [result setAlpha:floatWrapperWithValue(alpha)]; 18136 # } 18137 # [result autorelease]; 18138 # return result; 18139 # } 18140 # // ... 18141 # 18142 # Example (JavaScript): 18143 # 18144 # // ... 18145 # 18146 # var protoToCssColor = function(rgb_color) { 18147 # var redFrac = rgb_color.red || 0.0; 18148 # var greenFrac = rgb_color.green || 0.0; 18149 # var blueFrac = rgb_color.blue || 0.0; 18150 # var red = Math.floor(redFrac * 255); 18151 # var green = Math.floor(greenFrac * 255); 18152 # var blue = Math.floor(blueFrac * 255); 18153 # 18154 # if (!('alpha' in rgb_color)) { 18155 # return rgbToCssColor_(red, green, blue); 18156 # } 18157 # 18158 # var alphaFrac = rgb_color.alpha.value || 0.0; 18159 # var rgbParams = [red, green, blue].join(','); 18160 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 18161 # }; 18162 # 18163 # var rgbToCssColor_ = function(red, green, blue) { 18164 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 18165 # var hexString = rgbNumber.toString(16); 18166 # var missingZeros = 6 - hexString.length; 18167 # var resultBuilder = ['#']; 18168 # for (var i = 0; i < missingZeros; i++) { 18169 # resultBuilder.push('0'); 18170 # } 18171 # resultBuilder.push(hexString); 18172 # return resultBuilder.join(''); 18173 # }; 18174 # 18175 # // ... 18176 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 18177 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 18178 # the final pixel color is defined by the equation: 18179 # 18180 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 18181 # 18182 # This means that a value of 1.0 corresponds to a solid color, whereas 18183 # a value of 0.0 corresponds to a completely transparent color. This 18184 # uses a wrapper message rather than a simple float scalar so that it is 18185 # possible to distinguish between a default value and the value being unset. 18186 # If omitted, this color object is to be rendered as a solid color 18187 # (as if the alpha value had been explicitly given with a value of 1.0). 18188 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 18189 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 18190 }, 18191 "type": "A String", # How the value should be interpreted. 18192 "value": "A String", # The value this interpolation point uses. May be a formula. 18193 # Unused if type is MIN or 18194 # MAX. 18195 }, 18196 }, 18197 }, 18198 ], 18199 "bandedRanges": [ # The banded (i.e. alternating colors) ranges on this sheet. 18200 { # A banded (alternating colors) range in a sheet. 18201 "range": { # A range on a sheet. # The range over which these properties are applied. 18202 # All indexes are zero-based. 18203 # Indexes are half open, e.g the start index is inclusive 18204 # and the end index is exclusive -- [start_index, end_index). 18205 # Missing indexes indicate the range is unbounded on that side. 18206 # 18207 # For example, if `"Sheet1"` is sheet ID 0, then: 18208 # 18209 # `Sheet1!A1:A1 == sheet_id: 0, 18210 # start_row_index: 0, end_row_index: 1, 18211 # start_column_index: 0, end_column_index: 1` 18212 # 18213 # `Sheet1!A3:B4 == sheet_id: 0, 18214 # start_row_index: 2, end_row_index: 4, 18215 # start_column_index: 0, end_column_index: 2` 18216 # 18217 # `Sheet1!A:B == sheet_id: 0, 18218 # start_column_index: 0, end_column_index: 2` 18219 # 18220 # `Sheet1!A5:B == sheet_id: 0, 18221 # start_row_index: 4, 18222 # start_column_index: 0, end_column_index: 2` 18223 # 18224 # `Sheet1 == sheet_id:0` 18225 # 18226 # The start index must always be less than or equal to the end index. 18227 # If the start index equals the end index, then the range is empty. 18228 # Empty ranges are typically not meaningful and are usually rendered in the 18229 # UI as `#REF!`. 18230 "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded. 18231 "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded. 18232 "sheetId": 42, # The sheet this range is on. 18233 "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded. 18234 "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded. 18235 }, 18236 "columnProperties": { # Properties referring a single dimension (either row or column). If both # Properties for column bands. These properties will be applied on a column- 18237 # by-column basis throughout all the columns in the range. At least one of 18238 # row_properties or column_properties must be specified. 18239 # BandedRange.row_properties and BandedRange.column_properties are 18240 # set, the fill colors are applied to cells according to the following rules: 18241 # 18242 # * header_color and footer_color take priority over band colors. 18243 # * first_band_color takes priority over second_band_color. 18244 # * row_properties takes priority over column_properties. 18245 # 18246 # For example, the first row color takes priority over the first column 18247 # color, but the first column color takes priority over the second row color. 18248 # Similarly, the row header takes priority over the column header in the 18249 # top left cell, but the column header takes priority over the first row 18250 # color if the row header is not set. 18251 "secondBandColor": { # Represents a color in the RGBA color space. This representation is designed # The second color that is alternating. (Required) 18252 # for simplicity of conversion to/from color representations in various 18253 # languages over compactness; for example, the fields of this representation 18254 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 18255 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 18256 # method in iOS; and, with just a little work, it can be easily formatted into 18257 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 18258 # 18259 # Example (Java): 18260 # 18261 # import com.google.type.Color; 18262 # 18263 # // ... 18264 # public static java.awt.Color fromProto(Color protocolor) { 18265 # float alpha = protocolor.hasAlpha() 18266 # ? protocolor.getAlpha().getValue() 18267 # : 1.0; 18268 # 18269 # return new java.awt.Color( 18270 # protocolor.getRed(), 18271 # protocolor.getGreen(), 18272 # protocolor.getBlue(), 18273 # alpha); 18274 # } 18275 # 18276 # public static Color toProto(java.awt.Color color) { 18277 # float red = (float) color.getRed(); 18278 # float green = (float) color.getGreen(); 18279 # float blue = (float) color.getBlue(); 18280 # float denominator = 255.0; 18281 # Color.Builder resultBuilder = 18282 # Color 18283 # .newBuilder() 18284 # .setRed(red / denominator) 18285 # .setGreen(green / denominator) 18286 # .setBlue(blue / denominator); 18287 # int alpha = color.getAlpha(); 18288 # if (alpha != 255) { 18289 # result.setAlpha( 18290 # FloatValue 18291 # .newBuilder() 18292 # .setValue(((float) alpha) / denominator) 18293 # .build()); 18294 # } 18295 # return resultBuilder.build(); 18296 # } 18297 # // ... 18298 # 18299 # Example (iOS / Obj-C): 18300 # 18301 # // ... 18302 # static UIColor* fromProto(Color* protocolor) { 18303 # float red = [protocolor red]; 18304 # float green = [protocolor green]; 18305 # float blue = [protocolor blue]; 18306 # FloatValue* alpha_wrapper = [protocolor alpha]; 18307 # float alpha = 1.0; 18308 # if (alpha_wrapper != nil) { 18309 # alpha = [alpha_wrapper value]; 18310 # } 18311 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 18312 # } 18313 # 18314 # static Color* toProto(UIColor* color) { 18315 # CGFloat red, green, blue, alpha; 18316 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 18317 # return nil; 18318 # } 18319 # Color* result = [Color alloc] init]; 18320 # [result setRed:red]; 18321 # [result setGreen:green]; 18322 # [result setBlue:blue]; 18323 # if (alpha <= 0.9999) { 18324 # [result setAlpha:floatWrapperWithValue(alpha)]; 18325 # } 18326 # [result autorelease]; 18327 # return result; 18328 # } 18329 # // ... 18330 # 18331 # Example (JavaScript): 18332 # 18333 # // ... 18334 # 18335 # var protoToCssColor = function(rgb_color) { 18336 # var redFrac = rgb_color.red || 0.0; 18337 # var greenFrac = rgb_color.green || 0.0; 18338 # var blueFrac = rgb_color.blue || 0.0; 18339 # var red = Math.floor(redFrac * 255); 18340 # var green = Math.floor(greenFrac * 255); 18341 # var blue = Math.floor(blueFrac * 255); 18342 # 18343 # if (!('alpha' in rgb_color)) { 18344 # return rgbToCssColor_(red, green, blue); 18345 # } 18346 # 18347 # var alphaFrac = rgb_color.alpha.value || 0.0; 18348 # var rgbParams = [red, green, blue].join(','); 18349 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 18350 # }; 18351 # 18352 # var rgbToCssColor_ = function(red, green, blue) { 18353 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 18354 # var hexString = rgbNumber.toString(16); 18355 # var missingZeros = 6 - hexString.length; 18356 # var resultBuilder = ['#']; 18357 # for (var i = 0; i < missingZeros; i++) { 18358 # resultBuilder.push('0'); 18359 # } 18360 # resultBuilder.push(hexString); 18361 # return resultBuilder.join(''); 18362 # }; 18363 # 18364 # // ... 18365 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 18366 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 18367 # the final pixel color is defined by the equation: 18368 # 18369 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 18370 # 18371 # This means that a value of 1.0 corresponds to a solid color, whereas 18372 # a value of 0.0 corresponds to a completely transparent color. This 18373 # uses a wrapper message rather than a simple float scalar so that it is 18374 # possible to distinguish between a default value and the value being unset. 18375 # If omitted, this color object is to be rendered as a solid color 18376 # (as if the alpha value had been explicitly given with a value of 1.0). 18377 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 18378 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 18379 }, 18380 "headerColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the first row or column. If this field is set, the first 18381 # row or column will be filled with this color and the colors will 18382 # alternate between first_band_color and second_band_color starting 18383 # from the second row or column. Otherwise, the first row or column will be 18384 # filled with first_band_color and the colors will proceed to alternate 18385 # as they normally would. 18386 # for simplicity of conversion to/from color representations in various 18387 # languages over compactness; for example, the fields of this representation 18388 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 18389 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 18390 # method in iOS; and, with just a little work, it can be easily formatted into 18391 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 18392 # 18393 # Example (Java): 18394 # 18395 # import com.google.type.Color; 18396 # 18397 # // ... 18398 # public static java.awt.Color fromProto(Color protocolor) { 18399 # float alpha = protocolor.hasAlpha() 18400 # ? protocolor.getAlpha().getValue() 18401 # : 1.0; 18402 # 18403 # return new java.awt.Color( 18404 # protocolor.getRed(), 18405 # protocolor.getGreen(), 18406 # protocolor.getBlue(), 18407 # alpha); 18408 # } 18409 # 18410 # public static Color toProto(java.awt.Color color) { 18411 # float red = (float) color.getRed(); 18412 # float green = (float) color.getGreen(); 18413 # float blue = (float) color.getBlue(); 18414 # float denominator = 255.0; 18415 # Color.Builder resultBuilder = 18416 # Color 18417 # .newBuilder() 18418 # .setRed(red / denominator) 18419 # .setGreen(green / denominator) 18420 # .setBlue(blue / denominator); 18421 # int alpha = color.getAlpha(); 18422 # if (alpha != 255) { 18423 # result.setAlpha( 18424 # FloatValue 18425 # .newBuilder() 18426 # .setValue(((float) alpha) / denominator) 18427 # .build()); 18428 # } 18429 # return resultBuilder.build(); 18430 # } 18431 # // ... 18432 # 18433 # Example (iOS / Obj-C): 18434 # 18435 # // ... 18436 # static UIColor* fromProto(Color* protocolor) { 18437 # float red = [protocolor red]; 18438 # float green = [protocolor green]; 18439 # float blue = [protocolor blue]; 18440 # FloatValue* alpha_wrapper = [protocolor alpha]; 18441 # float alpha = 1.0; 18442 # if (alpha_wrapper != nil) { 18443 # alpha = [alpha_wrapper value]; 18444 # } 18445 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 18446 # } 18447 # 18448 # static Color* toProto(UIColor* color) { 18449 # CGFloat red, green, blue, alpha; 18450 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 18451 # return nil; 18452 # } 18453 # Color* result = [Color alloc] init]; 18454 # [result setRed:red]; 18455 # [result setGreen:green]; 18456 # [result setBlue:blue]; 18457 # if (alpha <= 0.9999) { 18458 # [result setAlpha:floatWrapperWithValue(alpha)]; 18459 # } 18460 # [result autorelease]; 18461 # return result; 18462 # } 18463 # // ... 18464 # 18465 # Example (JavaScript): 18466 # 18467 # // ... 18468 # 18469 # var protoToCssColor = function(rgb_color) { 18470 # var redFrac = rgb_color.red || 0.0; 18471 # var greenFrac = rgb_color.green || 0.0; 18472 # var blueFrac = rgb_color.blue || 0.0; 18473 # var red = Math.floor(redFrac * 255); 18474 # var green = Math.floor(greenFrac * 255); 18475 # var blue = Math.floor(blueFrac * 255); 18476 # 18477 # if (!('alpha' in rgb_color)) { 18478 # return rgbToCssColor_(red, green, blue); 18479 # } 18480 # 18481 # var alphaFrac = rgb_color.alpha.value || 0.0; 18482 # var rgbParams = [red, green, blue].join(','); 18483 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 18484 # }; 18485 # 18486 # var rgbToCssColor_ = function(red, green, blue) { 18487 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 18488 # var hexString = rgbNumber.toString(16); 18489 # var missingZeros = 6 - hexString.length; 18490 # var resultBuilder = ['#']; 18491 # for (var i = 0; i < missingZeros; i++) { 18492 # resultBuilder.push('0'); 18493 # } 18494 # resultBuilder.push(hexString); 18495 # return resultBuilder.join(''); 18496 # }; 18497 # 18498 # // ... 18499 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 18500 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 18501 # the final pixel color is defined by the equation: 18502 # 18503 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 18504 # 18505 # This means that a value of 1.0 corresponds to a solid color, whereas 18506 # a value of 0.0 corresponds to a completely transparent color. This 18507 # uses a wrapper message rather than a simple float scalar so that it is 18508 # possible to distinguish between a default value and the value being unset. 18509 # If omitted, this color object is to be rendered as a solid color 18510 # (as if the alpha value had been explicitly given with a value of 1.0). 18511 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 18512 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 18513 }, 18514 "footerColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the last row or column. If this field is not set, the last 18515 # row or column will be filled with either first_band_color or 18516 # second_band_color, depending on the color of the previous row or 18517 # column. 18518 # for simplicity of conversion to/from color representations in various 18519 # languages over compactness; for example, the fields of this representation 18520 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 18521 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 18522 # method in iOS; and, with just a little work, it can be easily formatted into 18523 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 18524 # 18525 # Example (Java): 18526 # 18527 # import com.google.type.Color; 18528 # 18529 # // ... 18530 # public static java.awt.Color fromProto(Color protocolor) { 18531 # float alpha = protocolor.hasAlpha() 18532 # ? protocolor.getAlpha().getValue() 18533 # : 1.0; 18534 # 18535 # return new java.awt.Color( 18536 # protocolor.getRed(), 18537 # protocolor.getGreen(), 18538 # protocolor.getBlue(), 18539 # alpha); 18540 # } 18541 # 18542 # public static Color toProto(java.awt.Color color) { 18543 # float red = (float) color.getRed(); 18544 # float green = (float) color.getGreen(); 18545 # float blue = (float) color.getBlue(); 18546 # float denominator = 255.0; 18547 # Color.Builder resultBuilder = 18548 # Color 18549 # .newBuilder() 18550 # .setRed(red / denominator) 18551 # .setGreen(green / denominator) 18552 # .setBlue(blue / denominator); 18553 # int alpha = color.getAlpha(); 18554 # if (alpha != 255) { 18555 # result.setAlpha( 18556 # FloatValue 18557 # .newBuilder() 18558 # .setValue(((float) alpha) / denominator) 18559 # .build()); 18560 # } 18561 # return resultBuilder.build(); 18562 # } 18563 # // ... 18564 # 18565 # Example (iOS / Obj-C): 18566 # 18567 # // ... 18568 # static UIColor* fromProto(Color* protocolor) { 18569 # float red = [protocolor red]; 18570 # float green = [protocolor green]; 18571 # float blue = [protocolor blue]; 18572 # FloatValue* alpha_wrapper = [protocolor alpha]; 18573 # float alpha = 1.0; 18574 # if (alpha_wrapper != nil) { 18575 # alpha = [alpha_wrapper value]; 18576 # } 18577 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 18578 # } 18579 # 18580 # static Color* toProto(UIColor* color) { 18581 # CGFloat red, green, blue, alpha; 18582 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 18583 # return nil; 18584 # } 18585 # Color* result = [Color alloc] init]; 18586 # [result setRed:red]; 18587 # [result setGreen:green]; 18588 # [result setBlue:blue]; 18589 # if (alpha <= 0.9999) { 18590 # [result setAlpha:floatWrapperWithValue(alpha)]; 18591 # } 18592 # [result autorelease]; 18593 # return result; 18594 # } 18595 # // ... 18596 # 18597 # Example (JavaScript): 18598 # 18599 # // ... 18600 # 18601 # var protoToCssColor = function(rgb_color) { 18602 # var redFrac = rgb_color.red || 0.0; 18603 # var greenFrac = rgb_color.green || 0.0; 18604 # var blueFrac = rgb_color.blue || 0.0; 18605 # var red = Math.floor(redFrac * 255); 18606 # var green = Math.floor(greenFrac * 255); 18607 # var blue = Math.floor(blueFrac * 255); 18608 # 18609 # if (!('alpha' in rgb_color)) { 18610 # return rgbToCssColor_(red, green, blue); 18611 # } 18612 # 18613 # var alphaFrac = rgb_color.alpha.value || 0.0; 18614 # var rgbParams = [red, green, blue].join(','); 18615 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 18616 # }; 18617 # 18618 # var rgbToCssColor_ = function(red, green, blue) { 18619 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 18620 # var hexString = rgbNumber.toString(16); 18621 # var missingZeros = 6 - hexString.length; 18622 # var resultBuilder = ['#']; 18623 # for (var i = 0; i < missingZeros; i++) { 18624 # resultBuilder.push('0'); 18625 # } 18626 # resultBuilder.push(hexString); 18627 # return resultBuilder.join(''); 18628 # }; 18629 # 18630 # // ... 18631 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 18632 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 18633 # the final pixel color is defined by the equation: 18634 # 18635 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 18636 # 18637 # This means that a value of 1.0 corresponds to a solid color, whereas 18638 # a value of 0.0 corresponds to a completely transparent color. This 18639 # uses a wrapper message rather than a simple float scalar so that it is 18640 # possible to distinguish between a default value and the value being unset. 18641 # If omitted, this color object is to be rendered as a solid color 18642 # (as if the alpha value had been explicitly given with a value of 1.0). 18643 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 18644 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 18645 }, 18646 "firstBandColor": { # Represents a color in the RGBA color space. This representation is designed # The first color that is alternating. (Required) 18647 # for simplicity of conversion to/from color representations in various 18648 # languages over compactness; for example, the fields of this representation 18649 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 18650 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 18651 # method in iOS; and, with just a little work, it can be easily formatted into 18652 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 18653 # 18654 # Example (Java): 18655 # 18656 # import com.google.type.Color; 18657 # 18658 # // ... 18659 # public static java.awt.Color fromProto(Color protocolor) { 18660 # float alpha = protocolor.hasAlpha() 18661 # ? protocolor.getAlpha().getValue() 18662 # : 1.0; 18663 # 18664 # return new java.awt.Color( 18665 # protocolor.getRed(), 18666 # protocolor.getGreen(), 18667 # protocolor.getBlue(), 18668 # alpha); 18669 # } 18670 # 18671 # public static Color toProto(java.awt.Color color) { 18672 # float red = (float) color.getRed(); 18673 # float green = (float) color.getGreen(); 18674 # float blue = (float) color.getBlue(); 18675 # float denominator = 255.0; 18676 # Color.Builder resultBuilder = 18677 # Color 18678 # .newBuilder() 18679 # .setRed(red / denominator) 18680 # .setGreen(green / denominator) 18681 # .setBlue(blue / denominator); 18682 # int alpha = color.getAlpha(); 18683 # if (alpha != 255) { 18684 # result.setAlpha( 18685 # FloatValue 18686 # .newBuilder() 18687 # .setValue(((float) alpha) / denominator) 18688 # .build()); 18689 # } 18690 # return resultBuilder.build(); 18691 # } 18692 # // ... 18693 # 18694 # Example (iOS / Obj-C): 18695 # 18696 # // ... 18697 # static UIColor* fromProto(Color* protocolor) { 18698 # float red = [protocolor red]; 18699 # float green = [protocolor green]; 18700 # float blue = [protocolor blue]; 18701 # FloatValue* alpha_wrapper = [protocolor alpha]; 18702 # float alpha = 1.0; 18703 # if (alpha_wrapper != nil) { 18704 # alpha = [alpha_wrapper value]; 18705 # } 18706 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 18707 # } 18708 # 18709 # static Color* toProto(UIColor* color) { 18710 # CGFloat red, green, blue, alpha; 18711 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 18712 # return nil; 18713 # } 18714 # Color* result = [Color alloc] init]; 18715 # [result setRed:red]; 18716 # [result setGreen:green]; 18717 # [result setBlue:blue]; 18718 # if (alpha <= 0.9999) { 18719 # [result setAlpha:floatWrapperWithValue(alpha)]; 18720 # } 18721 # [result autorelease]; 18722 # return result; 18723 # } 18724 # // ... 18725 # 18726 # Example (JavaScript): 18727 # 18728 # // ... 18729 # 18730 # var protoToCssColor = function(rgb_color) { 18731 # var redFrac = rgb_color.red || 0.0; 18732 # var greenFrac = rgb_color.green || 0.0; 18733 # var blueFrac = rgb_color.blue || 0.0; 18734 # var red = Math.floor(redFrac * 255); 18735 # var green = Math.floor(greenFrac * 255); 18736 # var blue = Math.floor(blueFrac * 255); 18737 # 18738 # if (!('alpha' in rgb_color)) { 18739 # return rgbToCssColor_(red, green, blue); 18740 # } 18741 # 18742 # var alphaFrac = rgb_color.alpha.value || 0.0; 18743 # var rgbParams = [red, green, blue].join(','); 18744 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 18745 # }; 18746 # 18747 # var rgbToCssColor_ = function(red, green, blue) { 18748 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 18749 # var hexString = rgbNumber.toString(16); 18750 # var missingZeros = 6 - hexString.length; 18751 # var resultBuilder = ['#']; 18752 # for (var i = 0; i < missingZeros; i++) { 18753 # resultBuilder.push('0'); 18754 # } 18755 # resultBuilder.push(hexString); 18756 # return resultBuilder.join(''); 18757 # }; 18758 # 18759 # // ... 18760 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 18761 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 18762 # the final pixel color is defined by the equation: 18763 # 18764 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 18765 # 18766 # This means that a value of 1.0 corresponds to a solid color, whereas 18767 # a value of 0.0 corresponds to a completely transparent color. This 18768 # uses a wrapper message rather than a simple float scalar so that it is 18769 # possible to distinguish between a default value and the value being unset. 18770 # If omitted, this color object is to be rendered as a solid color 18771 # (as if the alpha value had been explicitly given with a value of 1.0). 18772 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 18773 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 18774 }, 18775 }, 18776 "rowProperties": { # Properties referring a single dimension (either row or column). If both # Properties for row bands. These properties will be applied on a row-by-row 18777 # basis throughout all the rows in the range. At least one of 18778 # row_properties or column_properties must be specified. 18779 # BandedRange.row_properties and BandedRange.column_properties are 18780 # set, the fill colors are applied to cells according to the following rules: 18781 # 18782 # * header_color and footer_color take priority over band colors. 18783 # * first_band_color takes priority over second_band_color. 18784 # * row_properties takes priority over column_properties. 18785 # 18786 # For example, the first row color takes priority over the first column 18787 # color, but the first column color takes priority over the second row color. 18788 # Similarly, the row header takes priority over the column header in the 18789 # top left cell, but the column header takes priority over the first row 18790 # color if the row header is not set. 18791 "secondBandColor": { # Represents a color in the RGBA color space. This representation is designed # The second color that is alternating. (Required) 18792 # for simplicity of conversion to/from color representations in various 18793 # languages over compactness; for example, the fields of this representation 18794 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 18795 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 18796 # method in iOS; and, with just a little work, it can be easily formatted into 18797 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 18798 # 18799 # Example (Java): 18800 # 18801 # import com.google.type.Color; 18802 # 18803 # // ... 18804 # public static java.awt.Color fromProto(Color protocolor) { 18805 # float alpha = protocolor.hasAlpha() 18806 # ? protocolor.getAlpha().getValue() 18807 # : 1.0; 18808 # 18809 # return new java.awt.Color( 18810 # protocolor.getRed(), 18811 # protocolor.getGreen(), 18812 # protocolor.getBlue(), 18813 # alpha); 18814 # } 18815 # 18816 # public static Color toProto(java.awt.Color color) { 18817 # float red = (float) color.getRed(); 18818 # float green = (float) color.getGreen(); 18819 # float blue = (float) color.getBlue(); 18820 # float denominator = 255.0; 18821 # Color.Builder resultBuilder = 18822 # Color 18823 # .newBuilder() 18824 # .setRed(red / denominator) 18825 # .setGreen(green / denominator) 18826 # .setBlue(blue / denominator); 18827 # int alpha = color.getAlpha(); 18828 # if (alpha != 255) { 18829 # result.setAlpha( 18830 # FloatValue 18831 # .newBuilder() 18832 # .setValue(((float) alpha) / denominator) 18833 # .build()); 18834 # } 18835 # return resultBuilder.build(); 18836 # } 18837 # // ... 18838 # 18839 # Example (iOS / Obj-C): 18840 # 18841 # // ... 18842 # static UIColor* fromProto(Color* protocolor) { 18843 # float red = [protocolor red]; 18844 # float green = [protocolor green]; 18845 # float blue = [protocolor blue]; 18846 # FloatValue* alpha_wrapper = [protocolor alpha]; 18847 # float alpha = 1.0; 18848 # if (alpha_wrapper != nil) { 18849 # alpha = [alpha_wrapper value]; 18850 # } 18851 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 18852 # } 18853 # 18854 # static Color* toProto(UIColor* color) { 18855 # CGFloat red, green, blue, alpha; 18856 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 18857 # return nil; 18858 # } 18859 # Color* result = [Color alloc] init]; 18860 # [result setRed:red]; 18861 # [result setGreen:green]; 18862 # [result setBlue:blue]; 18863 # if (alpha <= 0.9999) { 18864 # [result setAlpha:floatWrapperWithValue(alpha)]; 18865 # } 18866 # [result autorelease]; 18867 # return result; 18868 # } 18869 # // ... 18870 # 18871 # Example (JavaScript): 18872 # 18873 # // ... 18874 # 18875 # var protoToCssColor = function(rgb_color) { 18876 # var redFrac = rgb_color.red || 0.0; 18877 # var greenFrac = rgb_color.green || 0.0; 18878 # var blueFrac = rgb_color.blue || 0.0; 18879 # var red = Math.floor(redFrac * 255); 18880 # var green = Math.floor(greenFrac * 255); 18881 # var blue = Math.floor(blueFrac * 255); 18882 # 18883 # if (!('alpha' in rgb_color)) { 18884 # return rgbToCssColor_(red, green, blue); 18885 # } 18886 # 18887 # var alphaFrac = rgb_color.alpha.value || 0.0; 18888 # var rgbParams = [red, green, blue].join(','); 18889 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 18890 # }; 18891 # 18892 # var rgbToCssColor_ = function(red, green, blue) { 18893 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 18894 # var hexString = rgbNumber.toString(16); 18895 # var missingZeros = 6 - hexString.length; 18896 # var resultBuilder = ['#']; 18897 # for (var i = 0; i < missingZeros; i++) { 18898 # resultBuilder.push('0'); 18899 # } 18900 # resultBuilder.push(hexString); 18901 # return resultBuilder.join(''); 18902 # }; 18903 # 18904 # // ... 18905 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 18906 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 18907 # the final pixel color is defined by the equation: 18908 # 18909 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 18910 # 18911 # This means that a value of 1.0 corresponds to a solid color, whereas 18912 # a value of 0.0 corresponds to a completely transparent color. This 18913 # uses a wrapper message rather than a simple float scalar so that it is 18914 # possible to distinguish between a default value and the value being unset. 18915 # If omitted, this color object is to be rendered as a solid color 18916 # (as if the alpha value had been explicitly given with a value of 1.0). 18917 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 18918 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 18919 }, 18920 "headerColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the first row or column. If this field is set, the first 18921 # row or column will be filled with this color and the colors will 18922 # alternate between first_band_color and second_band_color starting 18923 # from the second row or column. Otherwise, the first row or column will be 18924 # filled with first_band_color and the colors will proceed to alternate 18925 # as they normally would. 18926 # for simplicity of conversion to/from color representations in various 18927 # languages over compactness; for example, the fields of this representation 18928 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 18929 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 18930 # method in iOS; and, with just a little work, it can be easily formatted into 18931 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 18932 # 18933 # Example (Java): 18934 # 18935 # import com.google.type.Color; 18936 # 18937 # // ... 18938 # public static java.awt.Color fromProto(Color protocolor) { 18939 # float alpha = protocolor.hasAlpha() 18940 # ? protocolor.getAlpha().getValue() 18941 # : 1.0; 18942 # 18943 # return new java.awt.Color( 18944 # protocolor.getRed(), 18945 # protocolor.getGreen(), 18946 # protocolor.getBlue(), 18947 # alpha); 18948 # } 18949 # 18950 # public static Color toProto(java.awt.Color color) { 18951 # float red = (float) color.getRed(); 18952 # float green = (float) color.getGreen(); 18953 # float blue = (float) color.getBlue(); 18954 # float denominator = 255.0; 18955 # Color.Builder resultBuilder = 18956 # Color 18957 # .newBuilder() 18958 # .setRed(red / denominator) 18959 # .setGreen(green / denominator) 18960 # .setBlue(blue / denominator); 18961 # int alpha = color.getAlpha(); 18962 # if (alpha != 255) { 18963 # result.setAlpha( 18964 # FloatValue 18965 # .newBuilder() 18966 # .setValue(((float) alpha) / denominator) 18967 # .build()); 18968 # } 18969 # return resultBuilder.build(); 18970 # } 18971 # // ... 18972 # 18973 # Example (iOS / Obj-C): 18974 # 18975 # // ... 18976 # static UIColor* fromProto(Color* protocolor) { 18977 # float red = [protocolor red]; 18978 # float green = [protocolor green]; 18979 # float blue = [protocolor blue]; 18980 # FloatValue* alpha_wrapper = [protocolor alpha]; 18981 # float alpha = 1.0; 18982 # if (alpha_wrapper != nil) { 18983 # alpha = [alpha_wrapper value]; 18984 # } 18985 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 18986 # } 18987 # 18988 # static Color* toProto(UIColor* color) { 18989 # CGFloat red, green, blue, alpha; 18990 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 18991 # return nil; 18992 # } 18993 # Color* result = [Color alloc] init]; 18994 # [result setRed:red]; 18995 # [result setGreen:green]; 18996 # [result setBlue:blue]; 18997 # if (alpha <= 0.9999) { 18998 # [result setAlpha:floatWrapperWithValue(alpha)]; 18999 # } 19000 # [result autorelease]; 19001 # return result; 19002 # } 19003 # // ... 19004 # 19005 # Example (JavaScript): 19006 # 19007 # // ... 19008 # 19009 # var protoToCssColor = function(rgb_color) { 19010 # var redFrac = rgb_color.red || 0.0; 19011 # var greenFrac = rgb_color.green || 0.0; 19012 # var blueFrac = rgb_color.blue || 0.0; 19013 # var red = Math.floor(redFrac * 255); 19014 # var green = Math.floor(greenFrac * 255); 19015 # var blue = Math.floor(blueFrac * 255); 19016 # 19017 # if (!('alpha' in rgb_color)) { 19018 # return rgbToCssColor_(red, green, blue); 19019 # } 19020 # 19021 # var alphaFrac = rgb_color.alpha.value || 0.0; 19022 # var rgbParams = [red, green, blue].join(','); 19023 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 19024 # }; 19025 # 19026 # var rgbToCssColor_ = function(red, green, blue) { 19027 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 19028 # var hexString = rgbNumber.toString(16); 19029 # var missingZeros = 6 - hexString.length; 19030 # var resultBuilder = ['#']; 19031 # for (var i = 0; i < missingZeros; i++) { 19032 # resultBuilder.push('0'); 19033 # } 19034 # resultBuilder.push(hexString); 19035 # return resultBuilder.join(''); 19036 # }; 19037 # 19038 # // ... 19039 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 19040 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 19041 # the final pixel color is defined by the equation: 19042 # 19043 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 19044 # 19045 # This means that a value of 1.0 corresponds to a solid color, whereas 19046 # a value of 0.0 corresponds to a completely transparent color. This 19047 # uses a wrapper message rather than a simple float scalar so that it is 19048 # possible to distinguish between a default value and the value being unset. 19049 # If omitted, this color object is to be rendered as a solid color 19050 # (as if the alpha value had been explicitly given with a value of 1.0). 19051 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 19052 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 19053 }, 19054 "footerColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the last row or column. If this field is not set, the last 19055 # row or column will be filled with either first_band_color or 19056 # second_band_color, depending on the color of the previous row or 19057 # column. 19058 # for simplicity of conversion to/from color representations in various 19059 # languages over compactness; for example, the fields of this representation 19060 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 19061 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 19062 # method in iOS; and, with just a little work, it can be easily formatted into 19063 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 19064 # 19065 # Example (Java): 19066 # 19067 # import com.google.type.Color; 19068 # 19069 # // ... 19070 # public static java.awt.Color fromProto(Color protocolor) { 19071 # float alpha = protocolor.hasAlpha() 19072 # ? protocolor.getAlpha().getValue() 19073 # : 1.0; 19074 # 19075 # return new java.awt.Color( 19076 # protocolor.getRed(), 19077 # protocolor.getGreen(), 19078 # protocolor.getBlue(), 19079 # alpha); 19080 # } 19081 # 19082 # public static Color toProto(java.awt.Color color) { 19083 # float red = (float) color.getRed(); 19084 # float green = (float) color.getGreen(); 19085 # float blue = (float) color.getBlue(); 19086 # float denominator = 255.0; 19087 # Color.Builder resultBuilder = 19088 # Color 19089 # .newBuilder() 19090 # .setRed(red / denominator) 19091 # .setGreen(green / denominator) 19092 # .setBlue(blue / denominator); 19093 # int alpha = color.getAlpha(); 19094 # if (alpha != 255) { 19095 # result.setAlpha( 19096 # FloatValue 19097 # .newBuilder() 19098 # .setValue(((float) alpha) / denominator) 19099 # .build()); 19100 # } 19101 # return resultBuilder.build(); 19102 # } 19103 # // ... 19104 # 19105 # Example (iOS / Obj-C): 19106 # 19107 # // ... 19108 # static UIColor* fromProto(Color* protocolor) { 19109 # float red = [protocolor red]; 19110 # float green = [protocolor green]; 19111 # float blue = [protocolor blue]; 19112 # FloatValue* alpha_wrapper = [protocolor alpha]; 19113 # float alpha = 1.0; 19114 # if (alpha_wrapper != nil) { 19115 # alpha = [alpha_wrapper value]; 19116 # } 19117 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 19118 # } 19119 # 19120 # static Color* toProto(UIColor* color) { 19121 # CGFloat red, green, blue, alpha; 19122 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 19123 # return nil; 19124 # } 19125 # Color* result = [Color alloc] init]; 19126 # [result setRed:red]; 19127 # [result setGreen:green]; 19128 # [result setBlue:blue]; 19129 # if (alpha <= 0.9999) { 19130 # [result setAlpha:floatWrapperWithValue(alpha)]; 19131 # } 19132 # [result autorelease]; 19133 # return result; 19134 # } 19135 # // ... 19136 # 19137 # Example (JavaScript): 19138 # 19139 # // ... 19140 # 19141 # var protoToCssColor = function(rgb_color) { 19142 # var redFrac = rgb_color.red || 0.0; 19143 # var greenFrac = rgb_color.green || 0.0; 19144 # var blueFrac = rgb_color.blue || 0.0; 19145 # var red = Math.floor(redFrac * 255); 19146 # var green = Math.floor(greenFrac * 255); 19147 # var blue = Math.floor(blueFrac * 255); 19148 # 19149 # if (!('alpha' in rgb_color)) { 19150 # return rgbToCssColor_(red, green, blue); 19151 # } 19152 # 19153 # var alphaFrac = rgb_color.alpha.value || 0.0; 19154 # var rgbParams = [red, green, blue].join(','); 19155 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 19156 # }; 19157 # 19158 # var rgbToCssColor_ = function(red, green, blue) { 19159 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 19160 # var hexString = rgbNumber.toString(16); 19161 # var missingZeros = 6 - hexString.length; 19162 # var resultBuilder = ['#']; 19163 # for (var i = 0; i < missingZeros; i++) { 19164 # resultBuilder.push('0'); 19165 # } 19166 # resultBuilder.push(hexString); 19167 # return resultBuilder.join(''); 19168 # }; 19169 # 19170 # // ... 19171 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 19172 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 19173 # the final pixel color is defined by the equation: 19174 # 19175 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 19176 # 19177 # This means that a value of 1.0 corresponds to a solid color, whereas 19178 # a value of 0.0 corresponds to a completely transparent color. This 19179 # uses a wrapper message rather than a simple float scalar so that it is 19180 # possible to distinguish between a default value and the value being unset. 19181 # If omitted, this color object is to be rendered as a solid color 19182 # (as if the alpha value had been explicitly given with a value of 1.0). 19183 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 19184 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 19185 }, 19186 "firstBandColor": { # Represents a color in the RGBA color space. This representation is designed # The first color that is alternating. (Required) 19187 # for simplicity of conversion to/from color representations in various 19188 # languages over compactness; for example, the fields of this representation 19189 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 19190 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 19191 # method in iOS; and, with just a little work, it can be easily formatted into 19192 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 19193 # 19194 # Example (Java): 19195 # 19196 # import com.google.type.Color; 19197 # 19198 # // ... 19199 # public static java.awt.Color fromProto(Color protocolor) { 19200 # float alpha = protocolor.hasAlpha() 19201 # ? protocolor.getAlpha().getValue() 19202 # : 1.0; 19203 # 19204 # return new java.awt.Color( 19205 # protocolor.getRed(), 19206 # protocolor.getGreen(), 19207 # protocolor.getBlue(), 19208 # alpha); 19209 # } 19210 # 19211 # public static Color toProto(java.awt.Color color) { 19212 # float red = (float) color.getRed(); 19213 # float green = (float) color.getGreen(); 19214 # float blue = (float) color.getBlue(); 19215 # float denominator = 255.0; 19216 # Color.Builder resultBuilder = 19217 # Color 19218 # .newBuilder() 19219 # .setRed(red / denominator) 19220 # .setGreen(green / denominator) 19221 # .setBlue(blue / denominator); 19222 # int alpha = color.getAlpha(); 19223 # if (alpha != 255) { 19224 # result.setAlpha( 19225 # FloatValue 19226 # .newBuilder() 19227 # .setValue(((float) alpha) / denominator) 19228 # .build()); 19229 # } 19230 # return resultBuilder.build(); 19231 # } 19232 # // ... 19233 # 19234 # Example (iOS / Obj-C): 19235 # 19236 # // ... 19237 # static UIColor* fromProto(Color* protocolor) { 19238 # float red = [protocolor red]; 19239 # float green = [protocolor green]; 19240 # float blue = [protocolor blue]; 19241 # FloatValue* alpha_wrapper = [protocolor alpha]; 19242 # float alpha = 1.0; 19243 # if (alpha_wrapper != nil) { 19244 # alpha = [alpha_wrapper value]; 19245 # } 19246 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 19247 # } 19248 # 19249 # static Color* toProto(UIColor* color) { 19250 # CGFloat red, green, blue, alpha; 19251 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 19252 # return nil; 19253 # } 19254 # Color* result = [Color alloc] init]; 19255 # [result setRed:red]; 19256 # [result setGreen:green]; 19257 # [result setBlue:blue]; 19258 # if (alpha <= 0.9999) { 19259 # [result setAlpha:floatWrapperWithValue(alpha)]; 19260 # } 19261 # [result autorelease]; 19262 # return result; 19263 # } 19264 # // ... 19265 # 19266 # Example (JavaScript): 19267 # 19268 # // ... 19269 # 19270 # var protoToCssColor = function(rgb_color) { 19271 # var redFrac = rgb_color.red || 0.0; 19272 # var greenFrac = rgb_color.green || 0.0; 19273 # var blueFrac = rgb_color.blue || 0.0; 19274 # var red = Math.floor(redFrac * 255); 19275 # var green = Math.floor(greenFrac * 255); 19276 # var blue = Math.floor(blueFrac * 255); 19277 # 19278 # if (!('alpha' in rgb_color)) { 19279 # return rgbToCssColor_(red, green, blue); 19280 # } 19281 # 19282 # var alphaFrac = rgb_color.alpha.value || 0.0; 19283 # var rgbParams = [red, green, blue].join(','); 19284 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 19285 # }; 19286 # 19287 # var rgbToCssColor_ = function(red, green, blue) { 19288 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 19289 # var hexString = rgbNumber.toString(16); 19290 # var missingZeros = 6 - hexString.length; 19291 # var resultBuilder = ['#']; 19292 # for (var i = 0; i < missingZeros; i++) { 19293 # resultBuilder.push('0'); 19294 # } 19295 # resultBuilder.push(hexString); 19296 # return resultBuilder.join(''); 19297 # }; 19298 # 19299 # // ... 19300 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 19301 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 19302 # the final pixel color is defined by the equation: 19303 # 19304 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 19305 # 19306 # This means that a value of 1.0 corresponds to a solid color, whereas 19307 # a value of 0.0 corresponds to a completely transparent color. This 19308 # uses a wrapper message rather than a simple float scalar so that it is 19309 # possible to distinguish between a default value and the value being unset. 19310 # If omitted, this color object is to be rendered as a solid color 19311 # (as if the alpha value had been explicitly given with a value of 1.0). 19312 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 19313 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 19314 }, 19315 }, 19316 "bandedRangeId": 42, # The id of the banded range. 19317 }, 19318 ], 19319 "merges": [ # The ranges that are merged together. 19320 { # A range on a sheet. 19321 # All indexes are zero-based. 19322 # Indexes are half open, e.g the start index is inclusive 19323 # and the end index is exclusive -- [start_index, end_index). 19324 # Missing indexes indicate the range is unbounded on that side. 19325 # 19326 # For example, if `"Sheet1"` is sheet ID 0, then: 19327 # 19328 # `Sheet1!A1:A1 == sheet_id: 0, 19329 # start_row_index: 0, end_row_index: 1, 19330 # start_column_index: 0, end_column_index: 1` 19331 # 19332 # `Sheet1!A3:B4 == sheet_id: 0, 19333 # start_row_index: 2, end_row_index: 4, 19334 # start_column_index: 0, end_column_index: 2` 19335 # 19336 # `Sheet1!A:B == sheet_id: 0, 19337 # start_column_index: 0, end_column_index: 2` 19338 # 19339 # `Sheet1!A5:B == sheet_id: 0, 19340 # start_row_index: 4, 19341 # start_column_index: 0, end_column_index: 2` 19342 # 19343 # `Sheet1 == sheet_id:0` 19344 # 19345 # The start index must always be less than or equal to the end index. 19346 # If the start index equals the end index, then the range is empty. 19347 # Empty ranges are typically not meaningful and are usually rendered in the 19348 # UI as `#REF!`. 19349 "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded. 19350 "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded. 19351 "sheetId": 42, # The sheet this range is on. 19352 "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded. 19353 "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded. 19354 }, 19355 ], 19356 "basicFilter": { # The default filter associated with a sheet. # The filter on this sheet, if any. 19357 "range": { # A range on a sheet. # The range the filter covers. 19358 # All indexes are zero-based. 19359 # Indexes are half open, e.g the start index is inclusive 19360 # and the end index is exclusive -- [start_index, end_index). 19361 # Missing indexes indicate the range is unbounded on that side. 19362 # 19363 # For example, if `"Sheet1"` is sheet ID 0, then: 19364 # 19365 # `Sheet1!A1:A1 == sheet_id: 0, 19366 # start_row_index: 0, end_row_index: 1, 19367 # start_column_index: 0, end_column_index: 1` 19368 # 19369 # `Sheet1!A3:B4 == sheet_id: 0, 19370 # start_row_index: 2, end_row_index: 4, 19371 # start_column_index: 0, end_column_index: 2` 19372 # 19373 # `Sheet1!A:B == sheet_id: 0, 19374 # start_column_index: 0, end_column_index: 2` 19375 # 19376 # `Sheet1!A5:B == sheet_id: 0, 19377 # start_row_index: 4, 19378 # start_column_index: 0, end_column_index: 2` 19379 # 19380 # `Sheet1 == sheet_id:0` 19381 # 19382 # The start index must always be less than or equal to the end index. 19383 # If the start index equals the end index, then the range is empty. 19384 # Empty ranges are typically not meaningful and are usually rendered in the 19385 # UI as `#REF!`. 19386 "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded. 19387 "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded. 19388 "sheetId": 42, # The sheet this range is on. 19389 "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded. 19390 "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded. 19391 }, 19392 "sortSpecs": [ # The sort order per column. Later specifications are used when values 19393 # are equal in the earlier specifications. 19394 { # A sort order associated with a specific column or row. 19395 "sortOrder": "A String", # The order data should be sorted. 19396 "dimensionIndex": 42, # The dimension the sort should be applied to. 19397 }, 19398 ], 19399 "criteria": { # The criteria for showing/hiding values per column. 19400 # The map's key is the column index, and the value is the criteria for 19401 # that column. 19402 "a_key": { # Criteria for showing/hiding rows in a filter or filter view. 19403 "hiddenValues": [ # Values that should be hidden. 19404 "A String", 19405 ], 19406 "condition": { # A condition that can evaluate to true or false. # A condition that must be true for values to be shown. 19407 # (This does not override hiddenValues -- if a value is listed there, 19408 # it will still be hidden.) 19409 # BooleanConditions are used by conditional formatting, 19410 # data validation, and the criteria in filters. 19411 "values": [ # The values of the condition. The number of supported values depends 19412 # on the condition type. Some support zero values, 19413 # others one or two values, 19414 # and ConditionType.ONE_OF_LIST supports an arbitrary number of values. 19415 { # The value of the condition. 19416 "relativeDate": "A String", # A relative date (based on the current date). 19417 # Valid only if the type is 19418 # DATE_BEFORE, 19419 # DATE_AFTER, 19420 # DATE_ON_OR_BEFORE or 19421 # DATE_ON_OR_AFTER. 19422 # 19423 # Relative dates are not supported in data validation. 19424 # They are supported only in conditional formatting and 19425 # conditional filters. 19426 "userEnteredValue": "A String", # A value the condition is based on. 19427 # The value will be parsed as if the user typed into a cell. 19428 # Formulas are supported (and must begin with an `=`). 19429 }, 19430 ], 19431 "type": "A String", # The type of condition. 19432 }, 19433 }, 19434 }, 19435 }, 19436 "charts": [ # The specifications of every chart on this sheet. 19437 { # A chart embedded in a sheet. 19438 "chartId": 42, # The ID of the chart. 19439 "position": { # The position of an embedded object such as a chart. # The position of the chart. 19440 "newSheet": True or False, # If true, the embedded object will be put on a new sheet whose ID 19441 # is chosen for you. Used only when writing. 19442 "sheetId": 42, # The sheet this is on. Set only if the embedded object 19443 # is on its own sheet. Must be non-negative. 19444 "overlayPosition": { # The location an object is overlaid on top of a grid. # The position at which the object is overlaid on top of a grid. 19445 "anchorCell": { # A coordinate in a sheet. # The cell the object is anchored to. 19446 # All indexes are zero-based. 19447 "rowIndex": 42, # The row index of the coordinate. 19448 "columnIndex": 42, # The column index of the coordinate. 19449 "sheetId": 42, # The sheet this coordinate is on. 19450 }, 19451 "offsetYPixels": 42, # The vertical offset, in pixels, that the object is offset 19452 # from the anchor cell. 19453 "widthPixels": 42, # The width of the object, in pixels. Defaults to 600. 19454 "offsetXPixels": 42, # The horizontal offset, in pixels, that the object is offset 19455 # from the anchor cell. 19456 "heightPixels": 42, # The height of the object, in pixels. Defaults to 371. 19457 }, 19458 }, 19459 "spec": { # The specifications of a chart. # The specification of the chart. 19460 "hiddenDimensionStrategy": "A String", # Determines how the charts will use hidden rows or columns. 19461 "pieChart": { # A <a href="/chart/interactive/docs/gallery/piechart">pie chart</a>. # A pie chart specification. 19462 "series": { # The data included in a domain or series. # The data that covers the one and only series of the pie chart. 19463 "sourceRange": { # Source ranges for a chart. # The source ranges of the data. 19464 "sources": [ # The ranges of data for a series or domain. 19465 # Exactly one dimension must have a length of 1, 19466 # and all sources in the list must have the same dimension 19467 # with length 1. 19468 # The domain (if it exists) & all series must have the same number 19469 # of source ranges. If using more than one source range, then the source 19470 # range at a given offset must be contiguous across the domain and series. 19471 # 19472 # For example, these are valid configurations: 19473 # 19474 # domain sources: A1:A5 19475 # series1 sources: B1:B5 19476 # series2 sources: D6:D10 19477 # 19478 # domain sources: A1:A5, C10:C12 19479 # series1 sources: B1:B5, D10:D12 19480 # series2 sources: C1:C5, E10:E12 19481 { # A range on a sheet. 19482 # All indexes are zero-based. 19483 # Indexes are half open, e.g the start index is inclusive 19484 # and the end index is exclusive -- [start_index, end_index). 19485 # Missing indexes indicate the range is unbounded on that side. 19486 # 19487 # For example, if `"Sheet1"` is sheet ID 0, then: 19488 # 19489 # `Sheet1!A1:A1 == sheet_id: 0, 19490 # start_row_index: 0, end_row_index: 1, 19491 # start_column_index: 0, end_column_index: 1` 19492 # 19493 # `Sheet1!A3:B4 == sheet_id: 0, 19494 # start_row_index: 2, end_row_index: 4, 19495 # start_column_index: 0, end_column_index: 2` 19496 # 19497 # `Sheet1!A:B == sheet_id: 0, 19498 # start_column_index: 0, end_column_index: 2` 19499 # 19500 # `Sheet1!A5:B == sheet_id: 0, 19501 # start_row_index: 4, 19502 # start_column_index: 0, end_column_index: 2` 19503 # 19504 # `Sheet1 == sheet_id:0` 19505 # 19506 # The start index must always be less than or equal to the end index. 19507 # If the start index equals the end index, then the range is empty. 19508 # Empty ranges are typically not meaningful and are usually rendered in the 19509 # UI as `#REF!`. 19510 "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded. 19511 "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded. 19512 "sheetId": 42, # The sheet this range is on. 19513 "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded. 19514 "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded. 19515 }, 19516 ], 19517 }, 19518 }, 19519 "domain": { # The data included in a domain or series. # The data that covers the domain of the pie chart. 19520 "sourceRange": { # Source ranges for a chart. # The source ranges of the data. 19521 "sources": [ # The ranges of data for a series or domain. 19522 # Exactly one dimension must have a length of 1, 19523 # and all sources in the list must have the same dimension 19524 # with length 1. 19525 # The domain (if it exists) & all series must have the same number 19526 # of source ranges. If using more than one source range, then the source 19527 # range at a given offset must be contiguous across the domain and series. 19528 # 19529 # For example, these are valid configurations: 19530 # 19531 # domain sources: A1:A5 19532 # series1 sources: B1:B5 19533 # series2 sources: D6:D10 19534 # 19535 # domain sources: A1:A5, C10:C12 19536 # series1 sources: B1:B5, D10:D12 19537 # series2 sources: C1:C5, E10:E12 19538 { # A range on a sheet. 19539 # All indexes are zero-based. 19540 # Indexes are half open, e.g the start index is inclusive 19541 # and the end index is exclusive -- [start_index, end_index). 19542 # Missing indexes indicate the range is unbounded on that side. 19543 # 19544 # For example, if `"Sheet1"` is sheet ID 0, then: 19545 # 19546 # `Sheet1!A1:A1 == sheet_id: 0, 19547 # start_row_index: 0, end_row_index: 1, 19548 # start_column_index: 0, end_column_index: 1` 19549 # 19550 # `Sheet1!A3:B4 == sheet_id: 0, 19551 # start_row_index: 2, end_row_index: 4, 19552 # start_column_index: 0, end_column_index: 2` 19553 # 19554 # `Sheet1!A:B == sheet_id: 0, 19555 # start_column_index: 0, end_column_index: 2` 19556 # 19557 # `Sheet1!A5:B == sheet_id: 0, 19558 # start_row_index: 4, 19559 # start_column_index: 0, end_column_index: 2` 19560 # 19561 # `Sheet1 == sheet_id:0` 19562 # 19563 # The start index must always be less than or equal to the end index. 19564 # If the start index equals the end index, then the range is empty. 19565 # Empty ranges are typically not meaningful and are usually rendered in the 19566 # UI as `#REF!`. 19567 "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded. 19568 "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded. 19569 "sheetId": 42, # The sheet this range is on. 19570 "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded. 19571 "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded. 19572 }, 19573 ], 19574 }, 19575 }, 19576 "threeDimensional": True or False, # True if the pie is three dimensional. 19577 "legendPosition": "A String", # Where the legend of the pie chart should be drawn. 19578 "pieHole": 3.14, # The size of the hole in the pie chart. 19579 }, 19580 "basicChart": { # The specification for a basic chart. See BasicChartType for the list # A basic chart specification, can be one of many kinds of charts. 19581 # See BasicChartType for the list of all 19582 # charts this supports. 19583 # of charts this supports. 19584 "headerCount": 42, # The number of rows or columns in the data that are "headers". 19585 # If not set, Google Sheets will guess how many rows are headers based 19586 # on the data. 19587 # 19588 # (Note that BasicChartAxis.title may override the axis title 19589 # inferred from the header values.) 19590 "series": [ # The data this chart is visualizing. 19591 { # A single series of data in a chart. 19592 # For example, if charting stock prices over time, multiple series may exist, 19593 # one for the "Open Price", "High Price", "Low Price" and "Close Price". 19594 "series": { # The data included in a domain or series. # The data being visualized in this chart series. 19595 "sourceRange": { # Source ranges for a chart. # The source ranges of the data. 19596 "sources": [ # The ranges of data for a series or domain. 19597 # Exactly one dimension must have a length of 1, 19598 # and all sources in the list must have the same dimension 19599 # with length 1. 19600 # The domain (if it exists) & all series must have the same number 19601 # of source ranges. If using more than one source range, then the source 19602 # range at a given offset must be contiguous across the domain and series. 19603 # 19604 # For example, these are valid configurations: 19605 # 19606 # domain sources: A1:A5 19607 # series1 sources: B1:B5 19608 # series2 sources: D6:D10 19609 # 19610 # domain sources: A1:A5, C10:C12 19611 # series1 sources: B1:B5, D10:D12 19612 # series2 sources: C1:C5, E10:E12 19613 { # A range on a sheet. 19614 # All indexes are zero-based. 19615 # Indexes are half open, e.g the start index is inclusive 19616 # and the end index is exclusive -- [start_index, end_index). 19617 # Missing indexes indicate the range is unbounded on that side. 19618 # 19619 # For example, if `"Sheet1"` is sheet ID 0, then: 19620 # 19621 # `Sheet1!A1:A1 == sheet_id: 0, 19622 # start_row_index: 0, end_row_index: 1, 19623 # start_column_index: 0, end_column_index: 1` 19624 # 19625 # `Sheet1!A3:B4 == sheet_id: 0, 19626 # start_row_index: 2, end_row_index: 4, 19627 # start_column_index: 0, end_column_index: 2` 19628 # 19629 # `Sheet1!A:B == sheet_id: 0, 19630 # start_column_index: 0, end_column_index: 2` 19631 # 19632 # `Sheet1!A5:B == sheet_id: 0, 19633 # start_row_index: 4, 19634 # start_column_index: 0, end_column_index: 2` 19635 # 19636 # `Sheet1 == sheet_id:0` 19637 # 19638 # The start index must always be less than or equal to the end index. 19639 # If the start index equals the end index, then the range is empty. 19640 # Empty ranges are typically not meaningful and are usually rendered in the 19641 # UI as `#REF!`. 19642 "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded. 19643 "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded. 19644 "sheetId": 42, # The sheet this range is on. 19645 "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded. 19646 "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded. 19647 }, 19648 ], 19649 }, 19650 }, 19651 "targetAxis": "A String", # The minor axis that will specify the range of values for this series. 19652 # For example, if charting stocks over time, the "Volume" series 19653 # may want to be pinned to the right with the prices pinned to the left, 19654 # because the scale of trading volume is different than the scale of 19655 # prices. 19656 # It is an error to specify an axis that isn't a valid minor axis 19657 # for the chart's type. 19658 "type": "A String", # The type of this series. Valid only if the 19659 # chartType is 19660 # COMBO. 19661 # Different types will change the way the series is visualized. 19662 # Only LINE, AREA, 19663 # and COLUMN are supported. 19664 }, 19665 ], 19666 "legendPosition": "A String", # The position of the chart legend. 19667 "domains": [ # The domain of data this is charting. 19668 # Only a single domain is supported. 19669 { # The domain of a chart. 19670 # For example, if charting stock prices over time, this would be the date. 19671 "domain": { # The data included in a domain or series. # The data of the domain. For example, if charting stock prices over time, 19672 # this is the data representing the dates. 19673 "sourceRange": { # Source ranges for a chart. # The source ranges of the data. 19674 "sources": [ # The ranges of data for a series or domain. 19675 # Exactly one dimension must have a length of 1, 19676 # and all sources in the list must have the same dimension 19677 # with length 1. 19678 # The domain (if it exists) & all series must have the same number 19679 # of source ranges. If using more than one source range, then the source 19680 # range at a given offset must be contiguous across the domain and series. 19681 # 19682 # For example, these are valid configurations: 19683 # 19684 # domain sources: A1:A5 19685 # series1 sources: B1:B5 19686 # series2 sources: D6:D10 19687 # 19688 # domain sources: A1:A5, C10:C12 19689 # series1 sources: B1:B5, D10:D12 19690 # series2 sources: C1:C5, E10:E12 19691 { # A range on a sheet. 19692 # All indexes are zero-based. 19693 # Indexes are half open, e.g the start index is inclusive 19694 # and the end index is exclusive -- [start_index, end_index). 19695 # Missing indexes indicate the range is unbounded on that side. 19696 # 19697 # For example, if `"Sheet1"` is sheet ID 0, then: 19698 # 19699 # `Sheet1!A1:A1 == sheet_id: 0, 19700 # start_row_index: 0, end_row_index: 1, 19701 # start_column_index: 0, end_column_index: 1` 19702 # 19703 # `Sheet1!A3:B4 == sheet_id: 0, 19704 # start_row_index: 2, end_row_index: 4, 19705 # start_column_index: 0, end_column_index: 2` 19706 # 19707 # `Sheet1!A:B == sheet_id: 0, 19708 # start_column_index: 0, end_column_index: 2` 19709 # 19710 # `Sheet1!A5:B == sheet_id: 0, 19711 # start_row_index: 4, 19712 # start_column_index: 0, end_column_index: 2` 19713 # 19714 # `Sheet1 == sheet_id:0` 19715 # 19716 # The start index must always be less than or equal to the end index. 19717 # If the start index equals the end index, then the range is empty. 19718 # Empty ranges are typically not meaningful and are usually rendered in the 19719 # UI as `#REF!`. 19720 "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded. 19721 "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded. 19722 "sheetId": 42, # The sheet this range is on. 19723 "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded. 19724 "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded. 19725 }, 19726 ], 19727 }, 19728 }, 19729 }, 19730 ], 19731 "chartType": "A String", # The type of the chart. 19732 "axis": [ # The axis on the chart. 19733 { # An axis of the chart. 19734 # A chart may not have more than one axis per 19735 # axis position. 19736 "position": "A String", # The position of this axis. 19737 "format": { # The format of a run of text in a cell. # The format of the title. 19738 # Only valid if the axis is not associated with the domain. 19739 # Absent values indicate that the field isn't specified. 19740 "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text. 19741 # for simplicity of conversion to/from color representations in various 19742 # languages over compactness; for example, the fields of this representation 19743 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 19744 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 19745 # method in iOS; and, with just a little work, it can be easily formatted into 19746 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 19747 # 19748 # Example (Java): 19749 # 19750 # import com.google.type.Color; 19751 # 19752 # // ... 19753 # public static java.awt.Color fromProto(Color protocolor) { 19754 # float alpha = protocolor.hasAlpha() 19755 # ? protocolor.getAlpha().getValue() 19756 # : 1.0; 19757 # 19758 # return new java.awt.Color( 19759 # protocolor.getRed(), 19760 # protocolor.getGreen(), 19761 # protocolor.getBlue(), 19762 # alpha); 19763 # } 19764 # 19765 # public static Color toProto(java.awt.Color color) { 19766 # float red = (float) color.getRed(); 19767 # float green = (float) color.getGreen(); 19768 # float blue = (float) color.getBlue(); 19769 # float denominator = 255.0; 19770 # Color.Builder resultBuilder = 19771 # Color 19772 # .newBuilder() 19773 # .setRed(red / denominator) 19774 # .setGreen(green / denominator) 19775 # .setBlue(blue / denominator); 19776 # int alpha = color.getAlpha(); 19777 # if (alpha != 255) { 19778 # result.setAlpha( 19779 # FloatValue 19780 # .newBuilder() 19781 # .setValue(((float) alpha) / denominator) 19782 # .build()); 19783 # } 19784 # return resultBuilder.build(); 19785 # } 19786 # // ... 19787 # 19788 # Example (iOS / Obj-C): 19789 # 19790 # // ... 19791 # static UIColor* fromProto(Color* protocolor) { 19792 # float red = [protocolor red]; 19793 # float green = [protocolor green]; 19794 # float blue = [protocolor blue]; 19795 # FloatValue* alpha_wrapper = [protocolor alpha]; 19796 # float alpha = 1.0; 19797 # if (alpha_wrapper != nil) { 19798 # alpha = [alpha_wrapper value]; 19799 # } 19800 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 19801 # } 19802 # 19803 # static Color* toProto(UIColor* color) { 19804 # CGFloat red, green, blue, alpha; 19805 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 19806 # return nil; 19807 # } 19808 # Color* result = [Color alloc] init]; 19809 # [result setRed:red]; 19810 # [result setGreen:green]; 19811 # [result setBlue:blue]; 19812 # if (alpha <= 0.9999) { 19813 # [result setAlpha:floatWrapperWithValue(alpha)]; 19814 # } 19815 # [result autorelease]; 19816 # return result; 19817 # } 19818 # // ... 19819 # 19820 # Example (JavaScript): 19821 # 19822 # // ... 19823 # 19824 # var protoToCssColor = function(rgb_color) { 19825 # var redFrac = rgb_color.red || 0.0; 19826 # var greenFrac = rgb_color.green || 0.0; 19827 # var blueFrac = rgb_color.blue || 0.0; 19828 # var red = Math.floor(redFrac * 255); 19829 # var green = Math.floor(greenFrac * 255); 19830 # var blue = Math.floor(blueFrac * 255); 19831 # 19832 # if (!('alpha' in rgb_color)) { 19833 # return rgbToCssColor_(red, green, blue); 19834 # } 19835 # 19836 # var alphaFrac = rgb_color.alpha.value || 0.0; 19837 # var rgbParams = [red, green, blue].join(','); 19838 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 19839 # }; 19840 # 19841 # var rgbToCssColor_ = function(red, green, blue) { 19842 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 19843 # var hexString = rgbNumber.toString(16); 19844 # var missingZeros = 6 - hexString.length; 19845 # var resultBuilder = ['#']; 19846 # for (var i = 0; i < missingZeros; i++) { 19847 # resultBuilder.push('0'); 19848 # } 19849 # resultBuilder.push(hexString); 19850 # return resultBuilder.join(''); 19851 # }; 19852 # 19853 # // ... 19854 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 19855 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 19856 # the final pixel color is defined by the equation: 19857 # 19858 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 19859 # 19860 # This means that a value of 1.0 corresponds to a solid color, whereas 19861 # a value of 0.0 corresponds to a completely transparent color. This 19862 # uses a wrapper message rather than a simple float scalar so that it is 19863 # possible to distinguish between a default value and the value being unset. 19864 # If omitted, this color object is to be rendered as a solid color 19865 # (as if the alpha value had been explicitly given with a value of 1.0). 19866 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 19867 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 19868 }, 19869 "bold": True or False, # True if the text is bold. 19870 "strikethrough": True or False, # True if the text has a strikethrough. 19871 "fontFamily": "A String", # The font family. 19872 "fontSize": 42, # The size of the font. 19873 "italic": True or False, # True if the text is italicized. 19874 "underline": True or False, # True if the text is underlined. 19875 }, 19876 "title": "A String", # The title of this axis. If set, this overrides any title inferred 19877 # from headers of the data. 19878 }, 19879 ], 19880 }, 19881 "title": "A String", # The title of the chart. 19882 }, 19883 }, 19884 ], 19885 "filterViews": [ # The filter views in this sheet. 19886 { # A filter view. 19887 "title": "A String", # The name of the filter view. 19888 "namedRangeId": "A String", # The named range this filter view is backed by, if any. 19889 # 19890 # When writing, only one of range or named_range_id 19891 # may be set. 19892 "filterViewId": 42, # The ID of the filter view. 19893 "range": { # A range on a sheet. # The range this filter view covers. 19894 # 19895 # When writing, only one of range or named_range_id 19896 # may be set. 19897 # All indexes are zero-based. 19898 # Indexes are half open, e.g the start index is inclusive 19899 # and the end index is exclusive -- [start_index, end_index). 19900 # Missing indexes indicate the range is unbounded on that side. 19901 # 19902 # For example, if `"Sheet1"` is sheet ID 0, then: 19903 # 19904 # `Sheet1!A1:A1 == sheet_id: 0, 19905 # start_row_index: 0, end_row_index: 1, 19906 # start_column_index: 0, end_column_index: 1` 19907 # 19908 # `Sheet1!A3:B4 == sheet_id: 0, 19909 # start_row_index: 2, end_row_index: 4, 19910 # start_column_index: 0, end_column_index: 2` 19911 # 19912 # `Sheet1!A:B == sheet_id: 0, 19913 # start_column_index: 0, end_column_index: 2` 19914 # 19915 # `Sheet1!A5:B == sheet_id: 0, 19916 # start_row_index: 4, 19917 # start_column_index: 0, end_column_index: 2` 19918 # 19919 # `Sheet1 == sheet_id:0` 19920 # 19921 # The start index must always be less than or equal to the end index. 19922 # If the start index equals the end index, then the range is empty. 19923 # Empty ranges are typically not meaningful and are usually rendered in the 19924 # UI as `#REF!`. 19925 "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded. 19926 "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded. 19927 "sheetId": 42, # The sheet this range is on. 19928 "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded. 19929 "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded. 19930 }, 19931 "sortSpecs": [ # The sort order per column. Later specifications are used when values 19932 # are equal in the earlier specifications. 19933 { # A sort order associated with a specific column or row. 19934 "sortOrder": "A String", # The order data should be sorted. 19935 "dimensionIndex": 42, # The dimension the sort should be applied to. 19936 }, 19937 ], 19938 "criteria": { # The criteria for showing/hiding values per column. 19939 # The map's key is the column index, and the value is the criteria for 19940 # that column. 19941 "a_key": { # Criteria for showing/hiding rows in a filter or filter view. 19942 "hiddenValues": [ # Values that should be hidden. 19943 "A String", 19944 ], 19945 "condition": { # A condition that can evaluate to true or false. # A condition that must be true for values to be shown. 19946 # (This does not override hiddenValues -- if a value is listed there, 19947 # it will still be hidden.) 19948 # BooleanConditions are used by conditional formatting, 19949 # data validation, and the criteria in filters. 19950 "values": [ # The values of the condition. The number of supported values depends 19951 # on the condition type. Some support zero values, 19952 # others one or two values, 19953 # and ConditionType.ONE_OF_LIST supports an arbitrary number of values. 19954 { # The value of the condition. 19955 "relativeDate": "A String", # A relative date (based on the current date). 19956 # Valid only if the type is 19957 # DATE_BEFORE, 19958 # DATE_AFTER, 19959 # DATE_ON_OR_BEFORE or 19960 # DATE_ON_OR_AFTER. 19961 # 19962 # Relative dates are not supported in data validation. 19963 # They are supported only in conditional formatting and 19964 # conditional filters. 19965 "userEnteredValue": "A String", # A value the condition is based on. 19966 # The value will be parsed as if the user typed into a cell. 19967 # Formulas are supported (and must begin with an `=`). 19968 }, 19969 ], 19970 "type": "A String", # The type of condition. 19971 }, 19972 }, 19973 }, 19974 }, 19975 ], 19976 "protectedRanges": [ # The protected ranges in this sheet. 19977 { # A protected range. 19978 "unprotectedRanges": [ # The list of unprotected ranges within a protected sheet. 19979 # Unprotected ranges are only supported on protected sheets. 19980 { # A range on a sheet. 19981 # All indexes are zero-based. 19982 # Indexes are half open, e.g the start index is inclusive 19983 # and the end index is exclusive -- [start_index, end_index). 19984 # Missing indexes indicate the range is unbounded on that side. 19985 # 19986 # For example, if `"Sheet1"` is sheet ID 0, then: 19987 # 19988 # `Sheet1!A1:A1 == sheet_id: 0, 19989 # start_row_index: 0, end_row_index: 1, 19990 # start_column_index: 0, end_column_index: 1` 19991 # 19992 # `Sheet1!A3:B4 == sheet_id: 0, 19993 # start_row_index: 2, end_row_index: 4, 19994 # start_column_index: 0, end_column_index: 2` 19995 # 19996 # `Sheet1!A:B == sheet_id: 0, 19997 # start_column_index: 0, end_column_index: 2` 19998 # 19999 # `Sheet1!A5:B == sheet_id: 0, 20000 # start_row_index: 4, 20001 # start_column_index: 0, end_column_index: 2` 20002 # 20003 # `Sheet1 == sheet_id:0` 20004 # 20005 # The start index must always be less than or equal to the end index. 20006 # If the start index equals the end index, then the range is empty. 20007 # Empty ranges are typically not meaningful and are usually rendered in the 20008 # UI as `#REF!`. 20009 "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded. 20010 "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded. 20011 "sheetId": 42, # The sheet this range is on. 20012 "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded. 20013 "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded. 20014 }, 20015 ], 20016 "requestingUserCanEdit": True or False, # True if the user who requested this protected range can edit the 20017 # protected area. 20018 # This field is read-only. 20019 "description": "A String", # The description of this protected range. 20020 "namedRangeId": "A String", # The named range this protected range is backed by, if any. 20021 # 20022 # When writing, only one of range or named_range_id 20023 # may be set. 20024 "editors": { # The editors of a protected range. # The users and groups with edit access to the protected range. 20025 # This field is only visible to users with edit access to the protected 20026 # range and the document. 20027 # Editors are not supported with warning_only protection. 20028 "domainUsersCanEdit": True or False, # True if anyone in the document's domain has edit access to the protected 20029 # range. Domain protection is only supported on documents within a domain. 20030 "users": [ # The email addresses of users with edit access to the protected range. 20031 "A String", 20032 ], 20033 "groups": [ # The email addresses of groups with edit access to the protected range. 20034 "A String", 20035 ], 20036 }, 20037 "protectedRangeId": 42, # The ID of the protected range. 20038 # This field is read-only. 20039 "warningOnly": True or False, # True if this protected range will show a warning when editing. 20040 # Warning-based protection means that every user can edit data in the 20041 # protected range, except editing will prompt a warning asking the user 20042 # to confirm the edit. 20043 # 20044 # When writing: if this field is true, then editors is ignored. 20045 # Additionally, if this field is changed from true to false and the 20046 # `editors` field is not set (nor included in the field mask), then 20047 # the editors will be set to all the editors in the document. 20048 "range": { # A range on a sheet. # The range that is being protected. 20049 # The range may be fully unbounded, in which case this is considered 20050 # a protected sheet. 20051 # 20052 # When writing, only one of range or named_range_id 20053 # may be set. 20054 # All indexes are zero-based. 20055 # Indexes are half open, e.g the start index is inclusive 20056 # and the end index is exclusive -- [start_index, end_index). 20057 # Missing indexes indicate the range is unbounded on that side. 20058 # 20059 # For example, if `"Sheet1"` is sheet ID 0, then: 20060 # 20061 # `Sheet1!A1:A1 == sheet_id: 0, 20062 # start_row_index: 0, end_row_index: 1, 20063 # start_column_index: 0, end_column_index: 1` 20064 # 20065 # `Sheet1!A3:B4 == sheet_id: 0, 20066 # start_row_index: 2, end_row_index: 4, 20067 # start_column_index: 0, end_column_index: 2` 20068 # 20069 # `Sheet1!A:B == sheet_id: 0, 20070 # start_column_index: 0, end_column_index: 2` 20071 # 20072 # `Sheet1!A5:B == sheet_id: 0, 20073 # start_row_index: 4, 20074 # start_column_index: 0, end_column_index: 2` 20075 # 20076 # `Sheet1 == sheet_id:0` 20077 # 20078 # The start index must always be less than or equal to the end index. 20079 # If the start index equals the end index, then the range is empty. 20080 # Empty ranges are typically not meaningful and are usually rendered in the 20081 # UI as `#REF!`. 20082 "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded. 20083 "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded. 20084 "sheetId": 42, # The sheet this range is on. 20085 "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded. 20086 "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded. 20087 }, 20088 }, 20089 ], 20090 "data": [ # Data in the grid, if this is a grid sheet. 20091 # The number of GridData objects returned is dependent on the number of 20092 # ranges requested on this sheet. For example, if this is representing 20093 # `Sheet1`, and the spreadsheet was requested with ranges 20094 # `Sheet1!A1:C10` and `Sheet1!D15:E20`, then the first GridData will have a 20095 # startRow/startColumn of `0`, 20096 # while the second one will have `startRow 14` (zero-based row 15), 20097 # and `startColumn 3` (zero-based column D). 20098 { # Data in the grid, as well as metadata about the dimensions. 20099 "rowMetadata": [ # Metadata about the requested rows in the grid, starting with the row 20100 # in start_row. 20101 { # Properties about a dimension. 20102 "pixelSize": 42, # The height (if a row) or width (if a column) of the dimension in pixels. 20103 "hiddenByUser": True or False, # True if this dimension is explicitly hidden. 20104 "hiddenByFilter": True or False, # True if this dimension is being filtered. 20105 # This field is read-only. 20106 }, 20107 ], 20108 "startColumn": 42, # The first column this GridData refers to, zero-based. 20109 "rowData": [ # The data in the grid, one entry per row, 20110 # starting with the row in startRow. 20111 # The values in RowData will correspond to columns starting 20112 # at start_column. 20113 { # Data about each cell in a row. 20114 "values": [ # The values in the row, one per column. 20115 { # Data about a specific cell. 20116 "pivotTable": { # A pivot table. # A pivot table anchored at this cell. The size of pivot table itself 20117 # is computed dynamically based on its data, grouping, filters, values, 20118 # etc. Only the top-left cell of the pivot table contains the pivot table 20119 # definition. The other cells will contain the calculated values of the 20120 # results of the pivot in their effective_value fields. 20121 "valueLayout": "A String", # Whether values should be listed horizontally (as columns) 20122 # or vertically (as rows). 20123 "rows": [ # Each row grouping in the pivot table. 20124 { # A single grouping (either row or column) in a pivot table. 20125 "showTotals": True or False, # True if the pivot table should include the totals for this grouping. 20126 "valueMetadata": [ # Metadata about values in the grouping. 20127 { # Metadata about a value in a pivot grouping. 20128 "collapsed": True or False, # True if the data corresponding to the value is collapsed. 20129 "value": { # The kinds of value that a cell in a spreadsheet can have. # The calculated value the metadata corresponds to. 20130 # (Note that formulaValue is not valid, 20131 # because the values will be calculated.) 20132 "stringValue": "A String", # Represents a string value. 20133 # Leading single quotes are not included. For example, if the user typed 20134 # `'123` into the UI, this would be represented as a `stringValue` of 20135 # `"123"`. 20136 "boolValue": True or False, # Represents a boolean value. 20137 "errorValue": { # An error in a cell. # Represents an error. 20138 # This field is read-only. 20139 "message": "A String", # A message with more information about the error 20140 # (in the spreadsheet's locale). 20141 "type": "A String", # The type of error. 20142 }, 20143 "formulaValue": "A String", # Represents a formula. 20144 "numberValue": 3.14, # Represents a double value. 20145 # Note: Dates, Times and DateTimes are represented as doubles in 20146 # "serial number" format. 20147 }, 20148 }, 20149 ], 20150 "valueBucket": { # Information about which values in a pivot group should be used for sorting. # The bucket of the opposite pivot group to sort by. 20151 # If not specified, sorting is alphabetical by this group's values. 20152 "buckets": [ # Determines the bucket from which values are chosen to sort. 20153 # 20154 # For example, in a pivot table with one row group & two column groups, 20155 # the row group can list up to two values. The first value corresponds 20156 # to a value within the first column group, and the second value 20157 # corresponds to a value in the second column group. If no values 20158 # are listed, this would indicate that the row should be sorted according 20159 # to the "Grand Total" over the column groups. If a single value is listed, 20160 # this would correspond to using the "Total" of that bucket. 20161 { # The kinds of value that a cell in a spreadsheet can have. 20162 "stringValue": "A String", # Represents a string value. 20163 # Leading single quotes are not included. For example, if the user typed 20164 # `'123` into the UI, this would be represented as a `stringValue` of 20165 # `"123"`. 20166 "boolValue": True or False, # Represents a boolean value. 20167 "errorValue": { # An error in a cell. # Represents an error. 20168 # This field is read-only. 20169 "message": "A String", # A message with more information about the error 20170 # (in the spreadsheet's locale). 20171 "type": "A String", # The type of error. 20172 }, 20173 "formulaValue": "A String", # Represents a formula. 20174 "numberValue": 3.14, # Represents a double value. 20175 # Note: Dates, Times and DateTimes are represented as doubles in 20176 # "serial number" format. 20177 }, 20178 ], 20179 "valuesIndex": 42, # The offset in the PivotTable.values list which the values in this 20180 # grouping should be sorted by. 20181 }, 20182 "sortOrder": "A String", # The order the values in this group should be sorted. 20183 "sourceColumnOffset": 42, # The column offset of the source range that this grouping is based on. 20184 # 20185 # For example, if the source was `C10:E15`, a `sourceColumnOffset` of `0` 20186 # means this group refers to column `C`, whereas the offset `1` would refer 20187 # to column `D`. 20188 }, 20189 ], 20190 "source": { # A range on a sheet. # The range the pivot table is reading data from. 20191 # All indexes are zero-based. 20192 # Indexes are half open, e.g the start index is inclusive 20193 # and the end index is exclusive -- [start_index, end_index). 20194 # Missing indexes indicate the range is unbounded on that side. 20195 # 20196 # For example, if `"Sheet1"` is sheet ID 0, then: 20197 # 20198 # `Sheet1!A1:A1 == sheet_id: 0, 20199 # start_row_index: 0, end_row_index: 1, 20200 # start_column_index: 0, end_column_index: 1` 20201 # 20202 # `Sheet1!A3:B4 == sheet_id: 0, 20203 # start_row_index: 2, end_row_index: 4, 20204 # start_column_index: 0, end_column_index: 2` 20205 # 20206 # `Sheet1!A:B == sheet_id: 0, 20207 # start_column_index: 0, end_column_index: 2` 20208 # 20209 # `Sheet1!A5:B == sheet_id: 0, 20210 # start_row_index: 4, 20211 # start_column_index: 0, end_column_index: 2` 20212 # 20213 # `Sheet1 == sheet_id:0` 20214 # 20215 # The start index must always be less than or equal to the end index. 20216 # If the start index equals the end index, then the range is empty. 20217 # Empty ranges are typically not meaningful and are usually rendered in the 20218 # UI as `#REF!`. 20219 "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded. 20220 "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded. 20221 "sheetId": 42, # The sheet this range is on. 20222 "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded. 20223 "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded. 20224 }, 20225 "values": [ # A list of values to include in the pivot table. 20226 { # The definition of how a value in a pivot table should be calculated. 20227 "formula": "A String", # A custom formula to calculate the value. The formula must start 20228 # with an `=` character. 20229 "sourceColumnOffset": 42, # The column offset of the source range that this value reads from. 20230 # 20231 # For example, if the source was `C10:E15`, a `sourceColumnOffset` of `0` 20232 # means this value refers to column `C`, whereas the offset `1` would 20233 # refer to column `D`. 20234 "summarizeFunction": "A String", # A function to summarize the value. 20235 # If formula is set, the only supported values are 20236 # SUM and 20237 # CUSTOM. 20238 # If sourceColumnOffset is set, then `CUSTOM` 20239 # is not supported. 20240 "name": "A String", # A name to use for the value. This is only used if formula was set. 20241 # Otherwise, the column name is used. 20242 }, 20243 ], 20244 "criteria": { # An optional mapping of filters per source column offset. 20245 # 20246 # The filters will be applied before aggregating data into the pivot table. 20247 # The map's key is the column offset of the source range that you want to 20248 # filter, and the value is the criteria for that column. 20249 # 20250 # For example, if the source was `C10:E15`, a key of `0` will have the filter 20251 # for column `C`, whereas the key `1` is for column `D`. 20252 "a_key": { # Criteria for showing/hiding rows in a pivot table. 20253 "visibleValues": [ # Values that should be included. Values not listed here are excluded. 20254 "A String", 20255 ], 20256 }, 20257 }, 20258 "columns": [ # Each column grouping in the pivot table. 20259 { # A single grouping (either row or column) in a pivot table. 20260 "showTotals": True or False, # True if the pivot table should include the totals for this grouping. 20261 "valueMetadata": [ # Metadata about values in the grouping. 20262 { # Metadata about a value in a pivot grouping. 20263 "collapsed": True or False, # True if the data corresponding to the value is collapsed. 20264 "value": { # The kinds of value that a cell in a spreadsheet can have. # The calculated value the metadata corresponds to. 20265 # (Note that formulaValue is not valid, 20266 # because the values will be calculated.) 20267 "stringValue": "A String", # Represents a string value. 20268 # Leading single quotes are not included. For example, if the user typed 20269 # `'123` into the UI, this would be represented as a `stringValue` of 20270 # `"123"`. 20271 "boolValue": True or False, # Represents a boolean value. 20272 "errorValue": { # An error in a cell. # Represents an error. 20273 # This field is read-only. 20274 "message": "A String", # A message with more information about the error 20275 # (in the spreadsheet's locale). 20276 "type": "A String", # The type of error. 20277 }, 20278 "formulaValue": "A String", # Represents a formula. 20279 "numberValue": 3.14, # Represents a double value. 20280 # Note: Dates, Times and DateTimes are represented as doubles in 20281 # "serial number" format. 20282 }, 20283 }, 20284 ], 20285 "valueBucket": { # Information about which values in a pivot group should be used for sorting. # The bucket of the opposite pivot group to sort by. 20286 # If not specified, sorting is alphabetical by this group's values. 20287 "buckets": [ # Determines the bucket from which values are chosen to sort. 20288 # 20289 # For example, in a pivot table with one row group & two column groups, 20290 # the row group can list up to two values. The first value corresponds 20291 # to a value within the first column group, and the second value 20292 # corresponds to a value in the second column group. If no values 20293 # are listed, this would indicate that the row should be sorted according 20294 # to the "Grand Total" over the column groups. If a single value is listed, 20295 # this would correspond to using the "Total" of that bucket. 20296 { # The kinds of value that a cell in a spreadsheet can have. 20297 "stringValue": "A String", # Represents a string value. 20298 # Leading single quotes are not included. For example, if the user typed 20299 # `'123` into the UI, this would be represented as a `stringValue` of 20300 # `"123"`. 20301 "boolValue": True or False, # Represents a boolean value. 20302 "errorValue": { # An error in a cell. # Represents an error. 20303 # This field is read-only. 20304 "message": "A String", # A message with more information about the error 20305 # (in the spreadsheet's locale). 20306 "type": "A String", # The type of error. 20307 }, 20308 "formulaValue": "A String", # Represents a formula. 20309 "numberValue": 3.14, # Represents a double value. 20310 # Note: Dates, Times and DateTimes are represented as doubles in 20311 # "serial number" format. 20312 }, 20313 ], 20314 "valuesIndex": 42, # The offset in the PivotTable.values list which the values in this 20315 # grouping should be sorted by. 20316 }, 20317 "sortOrder": "A String", # The order the values in this group should be sorted. 20318 "sourceColumnOffset": 42, # The column offset of the source range that this grouping is based on. 20319 # 20320 # For example, if the source was `C10:E15`, a `sourceColumnOffset` of `0` 20321 # means this group refers to column `C`, whereas the offset `1` would refer 20322 # to column `D`. 20323 }, 20324 ], 20325 }, 20326 "hyperlink": "A String", # A hyperlink this cell points to, if any. 20327 # This field is read-only. (To set it, use a `=HYPERLINK` formula 20328 # in the userEnteredValue.formulaValue 20329 # field.) 20330 "effectiveValue": { # The kinds of value that a cell in a spreadsheet can have. # The effective value of the cell. For cells with formulas, this will be 20331 # the calculated value. For cells with literals, this will be 20332 # the same as the user_entered_value. 20333 # This field is read-only. 20334 "stringValue": "A String", # Represents a string value. 20335 # Leading single quotes are not included. For example, if the user typed 20336 # `'123` into the UI, this would be represented as a `stringValue` of 20337 # `"123"`. 20338 "boolValue": True or False, # Represents a boolean value. 20339 "errorValue": { # An error in a cell. # Represents an error. 20340 # This field is read-only. 20341 "message": "A String", # A message with more information about the error 20342 # (in the spreadsheet's locale). 20343 "type": "A String", # The type of error. 20344 }, 20345 "formulaValue": "A String", # Represents a formula. 20346 "numberValue": 3.14, # Represents a double value. 20347 # Note: Dates, Times and DateTimes are represented as doubles in 20348 # "serial number" format. 20349 }, 20350 "formattedValue": "A String", # The formatted value of the cell. 20351 # This is the value as it's shown to the user. 20352 # This field is read-only. 20353 "userEnteredValue": { # The kinds of value that a cell in a spreadsheet can have. # The value the user entered in the cell. e.g, `1234`, `'Hello'`, or `=NOW()` 20354 # Note: Dates, Times and DateTimes are represented as doubles in 20355 # serial number format. 20356 "stringValue": "A String", # Represents a string value. 20357 # Leading single quotes are not included. For example, if the user typed 20358 # `'123` into the UI, this would be represented as a `stringValue` of 20359 # `"123"`. 20360 "boolValue": True or False, # Represents a boolean value. 20361 "errorValue": { # An error in a cell. # Represents an error. 20362 # This field is read-only. 20363 "message": "A String", # A message with more information about the error 20364 # (in the spreadsheet's locale). 20365 "type": "A String", # The type of error. 20366 }, 20367 "formulaValue": "A String", # Represents a formula. 20368 "numberValue": 3.14, # Represents a double value. 20369 # Note: Dates, Times and DateTimes are represented as doubles in 20370 # "serial number" format. 20371 }, 20372 "note": "A String", # Any note on the cell. 20373 "effectiveFormat": { # The format of a cell. # The effective format being used by the cell. 20374 # This includes the results of applying any conditional formatting and, 20375 # if the cell contains a formula, the computed number format. 20376 # If the effective format is the default format, effective format will 20377 # not be written. 20378 # This field is read-only. 20379 "numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user. 20380 "pattern": "A String", # Pattern string used for formatting. If not set, a default pattern based on 20381 # the user's locale will be used if necessary for the given type. 20382 # See the [Date and Number Formats guide](/sheets/api/guides/formats) for more 20383 # information about the supported patterns. 20384 "type": "A String", # The type of the number format. 20385 # When writing, this field must be set. 20386 }, 20387 "textDirection": "A String", # The direction of the text in the cell. 20388 "padding": { # The amount of padding around the cell, in pixels. # The padding of the cell. 20389 # When updating padding, every field must be specified. 20390 "top": 42, # The top padding of the cell. 20391 "right": 42, # The right padding of the cell. 20392 "bottom": 42, # The bottom padding of the cell. 20393 "left": 42, # The left padding of the cell. 20394 }, 20395 "verticalAlignment": "A String", # The vertical alignment of the value in the cell. 20396 "backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell. 20397 # for simplicity of conversion to/from color representations in various 20398 # languages over compactness; for example, the fields of this representation 20399 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 20400 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 20401 # method in iOS; and, with just a little work, it can be easily formatted into 20402 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 20403 # 20404 # Example (Java): 20405 # 20406 # import com.google.type.Color; 20407 # 20408 # // ... 20409 # public static java.awt.Color fromProto(Color protocolor) { 20410 # float alpha = protocolor.hasAlpha() 20411 # ? protocolor.getAlpha().getValue() 20412 # : 1.0; 20413 # 20414 # return new java.awt.Color( 20415 # protocolor.getRed(), 20416 # protocolor.getGreen(), 20417 # protocolor.getBlue(), 20418 # alpha); 20419 # } 20420 # 20421 # public static Color toProto(java.awt.Color color) { 20422 # float red = (float) color.getRed(); 20423 # float green = (float) color.getGreen(); 20424 # float blue = (float) color.getBlue(); 20425 # float denominator = 255.0; 20426 # Color.Builder resultBuilder = 20427 # Color 20428 # .newBuilder() 20429 # .setRed(red / denominator) 20430 # .setGreen(green / denominator) 20431 # .setBlue(blue / denominator); 20432 # int alpha = color.getAlpha(); 20433 # if (alpha != 255) { 20434 # result.setAlpha( 20435 # FloatValue 20436 # .newBuilder() 20437 # .setValue(((float) alpha) / denominator) 20438 # .build()); 20439 # } 20440 # return resultBuilder.build(); 20441 # } 20442 # // ... 20443 # 20444 # Example (iOS / Obj-C): 20445 # 20446 # // ... 20447 # static UIColor* fromProto(Color* protocolor) { 20448 # float red = [protocolor red]; 20449 # float green = [protocolor green]; 20450 # float blue = [protocolor blue]; 20451 # FloatValue* alpha_wrapper = [protocolor alpha]; 20452 # float alpha = 1.0; 20453 # if (alpha_wrapper != nil) { 20454 # alpha = [alpha_wrapper value]; 20455 # } 20456 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 20457 # } 20458 # 20459 # static Color* toProto(UIColor* color) { 20460 # CGFloat red, green, blue, alpha; 20461 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 20462 # return nil; 20463 # } 20464 # Color* result = [Color alloc] init]; 20465 # [result setRed:red]; 20466 # [result setGreen:green]; 20467 # [result setBlue:blue]; 20468 # if (alpha <= 0.9999) { 20469 # [result setAlpha:floatWrapperWithValue(alpha)]; 20470 # } 20471 # [result autorelease]; 20472 # return result; 20473 # } 20474 # // ... 20475 # 20476 # Example (JavaScript): 20477 # 20478 # // ... 20479 # 20480 # var protoToCssColor = function(rgb_color) { 20481 # var redFrac = rgb_color.red || 0.0; 20482 # var greenFrac = rgb_color.green || 0.0; 20483 # var blueFrac = rgb_color.blue || 0.0; 20484 # var red = Math.floor(redFrac * 255); 20485 # var green = Math.floor(greenFrac * 255); 20486 # var blue = Math.floor(blueFrac * 255); 20487 # 20488 # if (!('alpha' in rgb_color)) { 20489 # return rgbToCssColor_(red, green, blue); 20490 # } 20491 # 20492 # var alphaFrac = rgb_color.alpha.value || 0.0; 20493 # var rgbParams = [red, green, blue].join(','); 20494 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 20495 # }; 20496 # 20497 # var rgbToCssColor_ = function(red, green, blue) { 20498 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 20499 # var hexString = rgbNumber.toString(16); 20500 # var missingZeros = 6 - hexString.length; 20501 # var resultBuilder = ['#']; 20502 # for (var i = 0; i < missingZeros; i++) { 20503 # resultBuilder.push('0'); 20504 # } 20505 # resultBuilder.push(hexString); 20506 # return resultBuilder.join(''); 20507 # }; 20508 # 20509 # // ... 20510 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 20511 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 20512 # the final pixel color is defined by the equation: 20513 # 20514 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 20515 # 20516 # This means that a value of 1.0 corresponds to a solid color, whereas 20517 # a value of 0.0 corresponds to a completely transparent color. This 20518 # uses a wrapper message rather than a simple float scalar so that it is 20519 # possible to distinguish between a default value and the value being unset. 20520 # If omitted, this color object is to be rendered as a solid color 20521 # (as if the alpha value had been explicitly given with a value of 1.0). 20522 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 20523 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 20524 }, 20525 "horizontalAlignment": "A String", # The horizontal alignment of the value in the cell. 20526 "textFormat": { # The format of a run of text in a cell. # The format of the text in the cell (unless overridden by a format run). 20527 # Absent values indicate that the field isn't specified. 20528 "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text. 20529 # for simplicity of conversion to/from color representations in various 20530 # languages over compactness; for example, the fields of this representation 20531 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 20532 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 20533 # method in iOS; and, with just a little work, it can be easily formatted into 20534 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 20535 # 20536 # Example (Java): 20537 # 20538 # import com.google.type.Color; 20539 # 20540 # // ... 20541 # public static java.awt.Color fromProto(Color protocolor) { 20542 # float alpha = protocolor.hasAlpha() 20543 # ? protocolor.getAlpha().getValue() 20544 # : 1.0; 20545 # 20546 # return new java.awt.Color( 20547 # protocolor.getRed(), 20548 # protocolor.getGreen(), 20549 # protocolor.getBlue(), 20550 # alpha); 20551 # } 20552 # 20553 # public static Color toProto(java.awt.Color color) { 20554 # float red = (float) color.getRed(); 20555 # float green = (float) color.getGreen(); 20556 # float blue = (float) color.getBlue(); 20557 # float denominator = 255.0; 20558 # Color.Builder resultBuilder = 20559 # Color 20560 # .newBuilder() 20561 # .setRed(red / denominator) 20562 # .setGreen(green / denominator) 20563 # .setBlue(blue / denominator); 20564 # int alpha = color.getAlpha(); 20565 # if (alpha != 255) { 20566 # result.setAlpha( 20567 # FloatValue 20568 # .newBuilder() 20569 # .setValue(((float) alpha) / denominator) 20570 # .build()); 20571 # } 20572 # return resultBuilder.build(); 20573 # } 20574 # // ... 20575 # 20576 # Example (iOS / Obj-C): 20577 # 20578 # // ... 20579 # static UIColor* fromProto(Color* protocolor) { 20580 # float red = [protocolor red]; 20581 # float green = [protocolor green]; 20582 # float blue = [protocolor blue]; 20583 # FloatValue* alpha_wrapper = [protocolor alpha]; 20584 # float alpha = 1.0; 20585 # if (alpha_wrapper != nil) { 20586 # alpha = [alpha_wrapper value]; 20587 # } 20588 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 20589 # } 20590 # 20591 # static Color* toProto(UIColor* color) { 20592 # CGFloat red, green, blue, alpha; 20593 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 20594 # return nil; 20595 # } 20596 # Color* result = [Color alloc] init]; 20597 # [result setRed:red]; 20598 # [result setGreen:green]; 20599 # [result setBlue:blue]; 20600 # if (alpha <= 0.9999) { 20601 # [result setAlpha:floatWrapperWithValue(alpha)]; 20602 # } 20603 # [result autorelease]; 20604 # return result; 20605 # } 20606 # // ... 20607 # 20608 # Example (JavaScript): 20609 # 20610 # // ... 20611 # 20612 # var protoToCssColor = function(rgb_color) { 20613 # var redFrac = rgb_color.red || 0.0; 20614 # var greenFrac = rgb_color.green || 0.0; 20615 # var blueFrac = rgb_color.blue || 0.0; 20616 # var red = Math.floor(redFrac * 255); 20617 # var green = Math.floor(greenFrac * 255); 20618 # var blue = Math.floor(blueFrac * 255); 20619 # 20620 # if (!('alpha' in rgb_color)) { 20621 # return rgbToCssColor_(red, green, blue); 20622 # } 20623 # 20624 # var alphaFrac = rgb_color.alpha.value || 0.0; 20625 # var rgbParams = [red, green, blue].join(','); 20626 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 20627 # }; 20628 # 20629 # var rgbToCssColor_ = function(red, green, blue) { 20630 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 20631 # var hexString = rgbNumber.toString(16); 20632 # var missingZeros = 6 - hexString.length; 20633 # var resultBuilder = ['#']; 20634 # for (var i = 0; i < missingZeros; i++) { 20635 # resultBuilder.push('0'); 20636 # } 20637 # resultBuilder.push(hexString); 20638 # return resultBuilder.join(''); 20639 # }; 20640 # 20641 # // ... 20642 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 20643 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 20644 # the final pixel color is defined by the equation: 20645 # 20646 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 20647 # 20648 # This means that a value of 1.0 corresponds to a solid color, whereas 20649 # a value of 0.0 corresponds to a completely transparent color. This 20650 # uses a wrapper message rather than a simple float scalar so that it is 20651 # possible to distinguish between a default value and the value being unset. 20652 # If omitted, this color object is to be rendered as a solid color 20653 # (as if the alpha value had been explicitly given with a value of 1.0). 20654 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 20655 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 20656 }, 20657 "bold": True or False, # True if the text is bold. 20658 "strikethrough": True or False, # True if the text has a strikethrough. 20659 "fontFamily": "A String", # The font family. 20660 "fontSize": 42, # The size of the font. 20661 "italic": True or False, # True if the text is italicized. 20662 "underline": True or False, # True if the text is underlined. 20663 }, 20664 "textRotation": { # The rotation applied to text in a cell. # The rotation applied to text in a cell 20665 "angle": 42, # The angle between the standard orientation and the desired orientation. 20666 # Measured in degrees. Valid values are between -90 and 90. Positive 20667 # angles are angled upwards, negative are angled downwards. 20668 # 20669 # Note: For LTR text direction positive angles are in the counterclockwise 20670 # direction, whereas for RTL they are in the clockwise direction 20671 "vertical": True or False, # If true, text reads top to bottom, but the orientation of individual 20672 # characters is unchanged. 20673 # For example: 20674 # 20675 # | V | 20676 # | e | 20677 # | r | 20678 # | t | 20679 # | i | 20680 # | c | 20681 # | a | 20682 # | l | 20683 }, 20684 "hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell. 20685 "borders": { # The borders of the cell. # The borders of the cell. 20686 "top": { # A border along a cell. # The top border of the cell. 20687 "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border. 20688 # for simplicity of conversion to/from color representations in various 20689 # languages over compactness; for example, the fields of this representation 20690 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 20691 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 20692 # method in iOS; and, with just a little work, it can be easily formatted into 20693 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 20694 # 20695 # Example (Java): 20696 # 20697 # import com.google.type.Color; 20698 # 20699 # // ... 20700 # public static java.awt.Color fromProto(Color protocolor) { 20701 # float alpha = protocolor.hasAlpha() 20702 # ? protocolor.getAlpha().getValue() 20703 # : 1.0; 20704 # 20705 # return new java.awt.Color( 20706 # protocolor.getRed(), 20707 # protocolor.getGreen(), 20708 # protocolor.getBlue(), 20709 # alpha); 20710 # } 20711 # 20712 # public static Color toProto(java.awt.Color color) { 20713 # float red = (float) color.getRed(); 20714 # float green = (float) color.getGreen(); 20715 # float blue = (float) color.getBlue(); 20716 # float denominator = 255.0; 20717 # Color.Builder resultBuilder = 20718 # Color 20719 # .newBuilder() 20720 # .setRed(red / denominator) 20721 # .setGreen(green / denominator) 20722 # .setBlue(blue / denominator); 20723 # int alpha = color.getAlpha(); 20724 # if (alpha != 255) { 20725 # result.setAlpha( 20726 # FloatValue 20727 # .newBuilder() 20728 # .setValue(((float) alpha) / denominator) 20729 # .build()); 20730 # } 20731 # return resultBuilder.build(); 20732 # } 20733 # // ... 20734 # 20735 # Example (iOS / Obj-C): 20736 # 20737 # // ... 20738 # static UIColor* fromProto(Color* protocolor) { 20739 # float red = [protocolor red]; 20740 # float green = [protocolor green]; 20741 # float blue = [protocolor blue]; 20742 # FloatValue* alpha_wrapper = [protocolor alpha]; 20743 # float alpha = 1.0; 20744 # if (alpha_wrapper != nil) { 20745 # alpha = [alpha_wrapper value]; 20746 # } 20747 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 20748 # } 20749 # 20750 # static Color* toProto(UIColor* color) { 20751 # CGFloat red, green, blue, alpha; 20752 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 20753 # return nil; 20754 # } 20755 # Color* result = [Color alloc] init]; 20756 # [result setRed:red]; 20757 # [result setGreen:green]; 20758 # [result setBlue:blue]; 20759 # if (alpha <= 0.9999) { 20760 # [result setAlpha:floatWrapperWithValue(alpha)]; 20761 # } 20762 # [result autorelease]; 20763 # return result; 20764 # } 20765 # // ... 20766 # 20767 # Example (JavaScript): 20768 # 20769 # // ... 20770 # 20771 # var protoToCssColor = function(rgb_color) { 20772 # var redFrac = rgb_color.red || 0.0; 20773 # var greenFrac = rgb_color.green || 0.0; 20774 # var blueFrac = rgb_color.blue || 0.0; 20775 # var red = Math.floor(redFrac * 255); 20776 # var green = Math.floor(greenFrac * 255); 20777 # var blue = Math.floor(blueFrac * 255); 20778 # 20779 # if (!('alpha' in rgb_color)) { 20780 # return rgbToCssColor_(red, green, blue); 20781 # } 20782 # 20783 # var alphaFrac = rgb_color.alpha.value || 0.0; 20784 # var rgbParams = [red, green, blue].join(','); 20785 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 20786 # }; 20787 # 20788 # var rgbToCssColor_ = function(red, green, blue) { 20789 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 20790 # var hexString = rgbNumber.toString(16); 20791 # var missingZeros = 6 - hexString.length; 20792 # var resultBuilder = ['#']; 20793 # for (var i = 0; i < missingZeros; i++) { 20794 # resultBuilder.push('0'); 20795 # } 20796 # resultBuilder.push(hexString); 20797 # return resultBuilder.join(''); 20798 # }; 20799 # 20800 # // ... 20801 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 20802 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 20803 # the final pixel color is defined by the equation: 20804 # 20805 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 20806 # 20807 # This means that a value of 1.0 corresponds to a solid color, whereas 20808 # a value of 0.0 corresponds to a completely transparent color. This 20809 # uses a wrapper message rather than a simple float scalar so that it is 20810 # possible to distinguish between a default value and the value being unset. 20811 # If omitted, this color object is to be rendered as a solid color 20812 # (as if the alpha value had been explicitly given with a value of 1.0). 20813 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 20814 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 20815 }, 20816 "width": 42, # The width of the border, in pixels. 20817 # Deprecated; the width is determined by the "style" field. 20818 "style": "A String", # The style of the border. 20819 }, 20820 "right": { # A border along a cell. # The right border of the cell. 20821 "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border. 20822 # for simplicity of conversion to/from color representations in various 20823 # languages over compactness; for example, the fields of this representation 20824 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 20825 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 20826 # method in iOS; and, with just a little work, it can be easily formatted into 20827 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 20828 # 20829 # Example (Java): 20830 # 20831 # import com.google.type.Color; 20832 # 20833 # // ... 20834 # public static java.awt.Color fromProto(Color protocolor) { 20835 # float alpha = protocolor.hasAlpha() 20836 # ? protocolor.getAlpha().getValue() 20837 # : 1.0; 20838 # 20839 # return new java.awt.Color( 20840 # protocolor.getRed(), 20841 # protocolor.getGreen(), 20842 # protocolor.getBlue(), 20843 # alpha); 20844 # } 20845 # 20846 # public static Color toProto(java.awt.Color color) { 20847 # float red = (float) color.getRed(); 20848 # float green = (float) color.getGreen(); 20849 # float blue = (float) color.getBlue(); 20850 # float denominator = 255.0; 20851 # Color.Builder resultBuilder = 20852 # Color 20853 # .newBuilder() 20854 # .setRed(red / denominator) 20855 # .setGreen(green / denominator) 20856 # .setBlue(blue / denominator); 20857 # int alpha = color.getAlpha(); 20858 # if (alpha != 255) { 20859 # result.setAlpha( 20860 # FloatValue 20861 # .newBuilder() 20862 # .setValue(((float) alpha) / denominator) 20863 # .build()); 20864 # } 20865 # return resultBuilder.build(); 20866 # } 20867 # // ... 20868 # 20869 # Example (iOS / Obj-C): 20870 # 20871 # // ... 20872 # static UIColor* fromProto(Color* protocolor) { 20873 # float red = [protocolor red]; 20874 # float green = [protocolor green]; 20875 # float blue = [protocolor blue]; 20876 # FloatValue* alpha_wrapper = [protocolor alpha]; 20877 # float alpha = 1.0; 20878 # if (alpha_wrapper != nil) { 20879 # alpha = [alpha_wrapper value]; 20880 # } 20881 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 20882 # } 20883 # 20884 # static Color* toProto(UIColor* color) { 20885 # CGFloat red, green, blue, alpha; 20886 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 20887 # return nil; 20888 # } 20889 # Color* result = [Color alloc] init]; 20890 # [result setRed:red]; 20891 # [result setGreen:green]; 20892 # [result setBlue:blue]; 20893 # if (alpha <= 0.9999) { 20894 # [result setAlpha:floatWrapperWithValue(alpha)]; 20895 # } 20896 # [result autorelease]; 20897 # return result; 20898 # } 20899 # // ... 20900 # 20901 # Example (JavaScript): 20902 # 20903 # // ... 20904 # 20905 # var protoToCssColor = function(rgb_color) { 20906 # var redFrac = rgb_color.red || 0.0; 20907 # var greenFrac = rgb_color.green || 0.0; 20908 # var blueFrac = rgb_color.blue || 0.0; 20909 # var red = Math.floor(redFrac * 255); 20910 # var green = Math.floor(greenFrac * 255); 20911 # var blue = Math.floor(blueFrac * 255); 20912 # 20913 # if (!('alpha' in rgb_color)) { 20914 # return rgbToCssColor_(red, green, blue); 20915 # } 20916 # 20917 # var alphaFrac = rgb_color.alpha.value || 0.0; 20918 # var rgbParams = [red, green, blue].join(','); 20919 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 20920 # }; 20921 # 20922 # var rgbToCssColor_ = function(red, green, blue) { 20923 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 20924 # var hexString = rgbNumber.toString(16); 20925 # var missingZeros = 6 - hexString.length; 20926 # var resultBuilder = ['#']; 20927 # for (var i = 0; i < missingZeros; i++) { 20928 # resultBuilder.push('0'); 20929 # } 20930 # resultBuilder.push(hexString); 20931 # return resultBuilder.join(''); 20932 # }; 20933 # 20934 # // ... 20935 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 20936 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 20937 # the final pixel color is defined by the equation: 20938 # 20939 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 20940 # 20941 # This means that a value of 1.0 corresponds to a solid color, whereas 20942 # a value of 0.0 corresponds to a completely transparent color. This 20943 # uses a wrapper message rather than a simple float scalar so that it is 20944 # possible to distinguish between a default value and the value being unset. 20945 # If omitted, this color object is to be rendered as a solid color 20946 # (as if the alpha value had been explicitly given with a value of 1.0). 20947 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 20948 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 20949 }, 20950 "width": 42, # The width of the border, in pixels. 20951 # Deprecated; the width is determined by the "style" field. 20952 "style": "A String", # The style of the border. 20953 }, 20954 "bottom": { # A border along a cell. # The bottom border of the cell. 20955 "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border. 20956 # for simplicity of conversion to/from color representations in various 20957 # languages over compactness; for example, the fields of this representation 20958 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 20959 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 20960 # method in iOS; and, with just a little work, it can be easily formatted into 20961 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 20962 # 20963 # Example (Java): 20964 # 20965 # import com.google.type.Color; 20966 # 20967 # // ... 20968 # public static java.awt.Color fromProto(Color protocolor) { 20969 # float alpha = protocolor.hasAlpha() 20970 # ? protocolor.getAlpha().getValue() 20971 # : 1.0; 20972 # 20973 # return new java.awt.Color( 20974 # protocolor.getRed(), 20975 # protocolor.getGreen(), 20976 # protocolor.getBlue(), 20977 # alpha); 20978 # } 20979 # 20980 # public static Color toProto(java.awt.Color color) { 20981 # float red = (float) color.getRed(); 20982 # float green = (float) color.getGreen(); 20983 # float blue = (float) color.getBlue(); 20984 # float denominator = 255.0; 20985 # Color.Builder resultBuilder = 20986 # Color 20987 # .newBuilder() 20988 # .setRed(red / denominator) 20989 # .setGreen(green / denominator) 20990 # .setBlue(blue / denominator); 20991 # int alpha = color.getAlpha(); 20992 # if (alpha != 255) { 20993 # result.setAlpha( 20994 # FloatValue 20995 # .newBuilder() 20996 # .setValue(((float) alpha) / denominator) 20997 # .build()); 20998 # } 20999 # return resultBuilder.build(); 21000 # } 21001 # // ... 21002 # 21003 # Example (iOS / Obj-C): 21004 # 21005 # // ... 21006 # static UIColor* fromProto(Color* protocolor) { 21007 # float red = [protocolor red]; 21008 # float green = [protocolor green]; 21009 # float blue = [protocolor blue]; 21010 # FloatValue* alpha_wrapper = [protocolor alpha]; 21011 # float alpha = 1.0; 21012 # if (alpha_wrapper != nil) { 21013 # alpha = [alpha_wrapper value]; 21014 # } 21015 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 21016 # } 21017 # 21018 # static Color* toProto(UIColor* color) { 21019 # CGFloat red, green, blue, alpha; 21020 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 21021 # return nil; 21022 # } 21023 # Color* result = [Color alloc] init]; 21024 # [result setRed:red]; 21025 # [result setGreen:green]; 21026 # [result setBlue:blue]; 21027 # if (alpha <= 0.9999) { 21028 # [result setAlpha:floatWrapperWithValue(alpha)]; 21029 # } 21030 # [result autorelease]; 21031 # return result; 21032 # } 21033 # // ... 21034 # 21035 # Example (JavaScript): 21036 # 21037 # // ... 21038 # 21039 # var protoToCssColor = function(rgb_color) { 21040 # var redFrac = rgb_color.red || 0.0; 21041 # var greenFrac = rgb_color.green || 0.0; 21042 # var blueFrac = rgb_color.blue || 0.0; 21043 # var red = Math.floor(redFrac * 255); 21044 # var green = Math.floor(greenFrac * 255); 21045 # var blue = Math.floor(blueFrac * 255); 21046 # 21047 # if (!('alpha' in rgb_color)) { 21048 # return rgbToCssColor_(red, green, blue); 21049 # } 21050 # 21051 # var alphaFrac = rgb_color.alpha.value || 0.0; 21052 # var rgbParams = [red, green, blue].join(','); 21053 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 21054 # }; 21055 # 21056 # var rgbToCssColor_ = function(red, green, blue) { 21057 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 21058 # var hexString = rgbNumber.toString(16); 21059 # var missingZeros = 6 - hexString.length; 21060 # var resultBuilder = ['#']; 21061 # for (var i = 0; i < missingZeros; i++) { 21062 # resultBuilder.push('0'); 21063 # } 21064 # resultBuilder.push(hexString); 21065 # return resultBuilder.join(''); 21066 # }; 21067 # 21068 # // ... 21069 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 21070 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 21071 # the final pixel color is defined by the equation: 21072 # 21073 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 21074 # 21075 # This means that a value of 1.0 corresponds to a solid color, whereas 21076 # a value of 0.0 corresponds to a completely transparent color. This 21077 # uses a wrapper message rather than a simple float scalar so that it is 21078 # possible to distinguish between a default value and the value being unset. 21079 # If omitted, this color object is to be rendered as a solid color 21080 # (as if the alpha value had been explicitly given with a value of 1.0). 21081 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 21082 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 21083 }, 21084 "width": 42, # The width of the border, in pixels. 21085 # Deprecated; the width is determined by the "style" field. 21086 "style": "A String", # The style of the border. 21087 }, 21088 "left": { # A border along a cell. # The left border of the cell. 21089 "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border. 21090 # for simplicity of conversion to/from color representations in various 21091 # languages over compactness; for example, the fields of this representation 21092 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 21093 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 21094 # method in iOS; and, with just a little work, it can be easily formatted into 21095 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 21096 # 21097 # Example (Java): 21098 # 21099 # import com.google.type.Color; 21100 # 21101 # // ... 21102 # public static java.awt.Color fromProto(Color protocolor) { 21103 # float alpha = protocolor.hasAlpha() 21104 # ? protocolor.getAlpha().getValue() 21105 # : 1.0; 21106 # 21107 # return new java.awt.Color( 21108 # protocolor.getRed(), 21109 # protocolor.getGreen(), 21110 # protocolor.getBlue(), 21111 # alpha); 21112 # } 21113 # 21114 # public static Color toProto(java.awt.Color color) { 21115 # float red = (float) color.getRed(); 21116 # float green = (float) color.getGreen(); 21117 # float blue = (float) color.getBlue(); 21118 # float denominator = 255.0; 21119 # Color.Builder resultBuilder = 21120 # Color 21121 # .newBuilder() 21122 # .setRed(red / denominator) 21123 # .setGreen(green / denominator) 21124 # .setBlue(blue / denominator); 21125 # int alpha = color.getAlpha(); 21126 # if (alpha != 255) { 21127 # result.setAlpha( 21128 # FloatValue 21129 # .newBuilder() 21130 # .setValue(((float) alpha) / denominator) 21131 # .build()); 21132 # } 21133 # return resultBuilder.build(); 21134 # } 21135 # // ... 21136 # 21137 # Example (iOS / Obj-C): 21138 # 21139 # // ... 21140 # static UIColor* fromProto(Color* protocolor) { 21141 # float red = [protocolor red]; 21142 # float green = [protocolor green]; 21143 # float blue = [protocolor blue]; 21144 # FloatValue* alpha_wrapper = [protocolor alpha]; 21145 # float alpha = 1.0; 21146 # if (alpha_wrapper != nil) { 21147 # alpha = [alpha_wrapper value]; 21148 # } 21149 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 21150 # } 21151 # 21152 # static Color* toProto(UIColor* color) { 21153 # CGFloat red, green, blue, alpha; 21154 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 21155 # return nil; 21156 # } 21157 # Color* result = [Color alloc] init]; 21158 # [result setRed:red]; 21159 # [result setGreen:green]; 21160 # [result setBlue:blue]; 21161 # if (alpha <= 0.9999) { 21162 # [result setAlpha:floatWrapperWithValue(alpha)]; 21163 # } 21164 # [result autorelease]; 21165 # return result; 21166 # } 21167 # // ... 21168 # 21169 # Example (JavaScript): 21170 # 21171 # // ... 21172 # 21173 # var protoToCssColor = function(rgb_color) { 21174 # var redFrac = rgb_color.red || 0.0; 21175 # var greenFrac = rgb_color.green || 0.0; 21176 # var blueFrac = rgb_color.blue || 0.0; 21177 # var red = Math.floor(redFrac * 255); 21178 # var green = Math.floor(greenFrac * 255); 21179 # var blue = Math.floor(blueFrac * 255); 21180 # 21181 # if (!('alpha' in rgb_color)) { 21182 # return rgbToCssColor_(red, green, blue); 21183 # } 21184 # 21185 # var alphaFrac = rgb_color.alpha.value || 0.0; 21186 # var rgbParams = [red, green, blue].join(','); 21187 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 21188 # }; 21189 # 21190 # var rgbToCssColor_ = function(red, green, blue) { 21191 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 21192 # var hexString = rgbNumber.toString(16); 21193 # var missingZeros = 6 - hexString.length; 21194 # var resultBuilder = ['#']; 21195 # for (var i = 0; i < missingZeros; i++) { 21196 # resultBuilder.push('0'); 21197 # } 21198 # resultBuilder.push(hexString); 21199 # return resultBuilder.join(''); 21200 # }; 21201 # 21202 # // ... 21203 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 21204 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 21205 # the final pixel color is defined by the equation: 21206 # 21207 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 21208 # 21209 # This means that a value of 1.0 corresponds to a solid color, whereas 21210 # a value of 0.0 corresponds to a completely transparent color. This 21211 # uses a wrapper message rather than a simple float scalar so that it is 21212 # possible to distinguish between a default value and the value being unset. 21213 # If omitted, this color object is to be rendered as a solid color 21214 # (as if the alpha value had been explicitly given with a value of 1.0). 21215 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 21216 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 21217 }, 21218 "width": 42, # The width of the border, in pixels. 21219 # Deprecated; the width is determined by the "style" field. 21220 "style": "A String", # The style of the border. 21221 }, 21222 }, 21223 "wrapStrategy": "A String", # The wrap strategy for the value in the cell. 21224 }, 21225 "userEnteredFormat": { # The format of a cell. # The format the user entered for the cell. 21226 # 21227 # When writing, the new format will be merged with the existing format. 21228 "numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user. 21229 "pattern": "A String", # Pattern string used for formatting. If not set, a default pattern based on 21230 # the user's locale will be used if necessary for the given type. 21231 # See the [Date and Number Formats guide](/sheets/api/guides/formats) for more 21232 # information about the supported patterns. 21233 "type": "A String", # The type of the number format. 21234 # When writing, this field must be set. 21235 }, 21236 "textDirection": "A String", # The direction of the text in the cell. 21237 "padding": { # The amount of padding around the cell, in pixels. # The padding of the cell. 21238 # When updating padding, every field must be specified. 21239 "top": 42, # The top padding of the cell. 21240 "right": 42, # The right padding of the cell. 21241 "bottom": 42, # The bottom padding of the cell. 21242 "left": 42, # The left padding of the cell. 21243 }, 21244 "verticalAlignment": "A String", # The vertical alignment of the value in the cell. 21245 "backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell. 21246 # for simplicity of conversion to/from color representations in various 21247 # languages over compactness; for example, the fields of this representation 21248 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 21249 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 21250 # method in iOS; and, with just a little work, it can be easily formatted into 21251 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 21252 # 21253 # Example (Java): 21254 # 21255 # import com.google.type.Color; 21256 # 21257 # // ... 21258 # public static java.awt.Color fromProto(Color protocolor) { 21259 # float alpha = protocolor.hasAlpha() 21260 # ? protocolor.getAlpha().getValue() 21261 # : 1.0; 21262 # 21263 # return new java.awt.Color( 21264 # protocolor.getRed(), 21265 # protocolor.getGreen(), 21266 # protocolor.getBlue(), 21267 # alpha); 21268 # } 21269 # 21270 # public static Color toProto(java.awt.Color color) { 21271 # float red = (float) color.getRed(); 21272 # float green = (float) color.getGreen(); 21273 # float blue = (float) color.getBlue(); 21274 # float denominator = 255.0; 21275 # Color.Builder resultBuilder = 21276 # Color 21277 # .newBuilder() 21278 # .setRed(red / denominator) 21279 # .setGreen(green / denominator) 21280 # .setBlue(blue / denominator); 21281 # int alpha = color.getAlpha(); 21282 # if (alpha != 255) { 21283 # result.setAlpha( 21284 # FloatValue 21285 # .newBuilder() 21286 # .setValue(((float) alpha) / denominator) 21287 # .build()); 21288 # } 21289 # return resultBuilder.build(); 21290 # } 21291 # // ... 21292 # 21293 # Example (iOS / Obj-C): 21294 # 21295 # // ... 21296 # static UIColor* fromProto(Color* protocolor) { 21297 # float red = [protocolor red]; 21298 # float green = [protocolor green]; 21299 # float blue = [protocolor blue]; 21300 # FloatValue* alpha_wrapper = [protocolor alpha]; 21301 # float alpha = 1.0; 21302 # if (alpha_wrapper != nil) { 21303 # alpha = [alpha_wrapper value]; 21304 # } 21305 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 21306 # } 21307 # 21308 # static Color* toProto(UIColor* color) { 21309 # CGFloat red, green, blue, alpha; 21310 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 21311 # return nil; 21312 # } 21313 # Color* result = [Color alloc] init]; 21314 # [result setRed:red]; 21315 # [result setGreen:green]; 21316 # [result setBlue:blue]; 21317 # if (alpha <= 0.9999) { 21318 # [result setAlpha:floatWrapperWithValue(alpha)]; 21319 # } 21320 # [result autorelease]; 21321 # return result; 21322 # } 21323 # // ... 21324 # 21325 # Example (JavaScript): 21326 # 21327 # // ... 21328 # 21329 # var protoToCssColor = function(rgb_color) { 21330 # var redFrac = rgb_color.red || 0.0; 21331 # var greenFrac = rgb_color.green || 0.0; 21332 # var blueFrac = rgb_color.blue || 0.0; 21333 # var red = Math.floor(redFrac * 255); 21334 # var green = Math.floor(greenFrac * 255); 21335 # var blue = Math.floor(blueFrac * 255); 21336 # 21337 # if (!('alpha' in rgb_color)) { 21338 # return rgbToCssColor_(red, green, blue); 21339 # } 21340 # 21341 # var alphaFrac = rgb_color.alpha.value || 0.0; 21342 # var rgbParams = [red, green, blue].join(','); 21343 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 21344 # }; 21345 # 21346 # var rgbToCssColor_ = function(red, green, blue) { 21347 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 21348 # var hexString = rgbNumber.toString(16); 21349 # var missingZeros = 6 - hexString.length; 21350 # var resultBuilder = ['#']; 21351 # for (var i = 0; i < missingZeros; i++) { 21352 # resultBuilder.push('0'); 21353 # } 21354 # resultBuilder.push(hexString); 21355 # return resultBuilder.join(''); 21356 # }; 21357 # 21358 # // ... 21359 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 21360 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 21361 # the final pixel color is defined by the equation: 21362 # 21363 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 21364 # 21365 # This means that a value of 1.0 corresponds to a solid color, whereas 21366 # a value of 0.0 corresponds to a completely transparent color. This 21367 # uses a wrapper message rather than a simple float scalar so that it is 21368 # possible to distinguish between a default value and the value being unset. 21369 # If omitted, this color object is to be rendered as a solid color 21370 # (as if the alpha value had been explicitly given with a value of 1.0). 21371 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 21372 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 21373 }, 21374 "horizontalAlignment": "A String", # The horizontal alignment of the value in the cell. 21375 "textFormat": { # The format of a run of text in a cell. # The format of the text in the cell (unless overridden by a format run). 21376 # Absent values indicate that the field isn't specified. 21377 "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text. 21378 # for simplicity of conversion to/from color representations in various 21379 # languages over compactness; for example, the fields of this representation 21380 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 21381 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 21382 # method in iOS; and, with just a little work, it can be easily formatted into 21383 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 21384 # 21385 # Example (Java): 21386 # 21387 # import com.google.type.Color; 21388 # 21389 # // ... 21390 # public static java.awt.Color fromProto(Color protocolor) { 21391 # float alpha = protocolor.hasAlpha() 21392 # ? protocolor.getAlpha().getValue() 21393 # : 1.0; 21394 # 21395 # return new java.awt.Color( 21396 # protocolor.getRed(), 21397 # protocolor.getGreen(), 21398 # protocolor.getBlue(), 21399 # alpha); 21400 # } 21401 # 21402 # public static Color toProto(java.awt.Color color) { 21403 # float red = (float) color.getRed(); 21404 # float green = (float) color.getGreen(); 21405 # float blue = (float) color.getBlue(); 21406 # float denominator = 255.0; 21407 # Color.Builder resultBuilder = 21408 # Color 21409 # .newBuilder() 21410 # .setRed(red / denominator) 21411 # .setGreen(green / denominator) 21412 # .setBlue(blue / denominator); 21413 # int alpha = color.getAlpha(); 21414 # if (alpha != 255) { 21415 # result.setAlpha( 21416 # FloatValue 21417 # .newBuilder() 21418 # .setValue(((float) alpha) / denominator) 21419 # .build()); 21420 # } 21421 # return resultBuilder.build(); 21422 # } 21423 # // ... 21424 # 21425 # Example (iOS / Obj-C): 21426 # 21427 # // ... 21428 # static UIColor* fromProto(Color* protocolor) { 21429 # float red = [protocolor red]; 21430 # float green = [protocolor green]; 21431 # float blue = [protocolor blue]; 21432 # FloatValue* alpha_wrapper = [protocolor alpha]; 21433 # float alpha = 1.0; 21434 # if (alpha_wrapper != nil) { 21435 # alpha = [alpha_wrapper value]; 21436 # } 21437 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 21438 # } 21439 # 21440 # static Color* toProto(UIColor* color) { 21441 # CGFloat red, green, blue, alpha; 21442 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 21443 # return nil; 21444 # } 21445 # Color* result = [Color alloc] init]; 21446 # [result setRed:red]; 21447 # [result setGreen:green]; 21448 # [result setBlue:blue]; 21449 # if (alpha <= 0.9999) { 21450 # [result setAlpha:floatWrapperWithValue(alpha)]; 21451 # } 21452 # [result autorelease]; 21453 # return result; 21454 # } 21455 # // ... 21456 # 21457 # Example (JavaScript): 21458 # 21459 # // ... 21460 # 21461 # var protoToCssColor = function(rgb_color) { 21462 # var redFrac = rgb_color.red || 0.0; 21463 # var greenFrac = rgb_color.green || 0.0; 21464 # var blueFrac = rgb_color.blue || 0.0; 21465 # var red = Math.floor(redFrac * 255); 21466 # var green = Math.floor(greenFrac * 255); 21467 # var blue = Math.floor(blueFrac * 255); 21468 # 21469 # if (!('alpha' in rgb_color)) { 21470 # return rgbToCssColor_(red, green, blue); 21471 # } 21472 # 21473 # var alphaFrac = rgb_color.alpha.value || 0.0; 21474 # var rgbParams = [red, green, blue].join(','); 21475 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 21476 # }; 21477 # 21478 # var rgbToCssColor_ = function(red, green, blue) { 21479 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 21480 # var hexString = rgbNumber.toString(16); 21481 # var missingZeros = 6 - hexString.length; 21482 # var resultBuilder = ['#']; 21483 # for (var i = 0; i < missingZeros; i++) { 21484 # resultBuilder.push('0'); 21485 # } 21486 # resultBuilder.push(hexString); 21487 # return resultBuilder.join(''); 21488 # }; 21489 # 21490 # // ... 21491 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 21492 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 21493 # the final pixel color is defined by the equation: 21494 # 21495 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 21496 # 21497 # This means that a value of 1.0 corresponds to a solid color, whereas 21498 # a value of 0.0 corresponds to a completely transparent color. This 21499 # uses a wrapper message rather than a simple float scalar so that it is 21500 # possible to distinguish between a default value and the value being unset. 21501 # If omitted, this color object is to be rendered as a solid color 21502 # (as if the alpha value had been explicitly given with a value of 1.0). 21503 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 21504 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 21505 }, 21506 "bold": True or False, # True if the text is bold. 21507 "strikethrough": True or False, # True if the text has a strikethrough. 21508 "fontFamily": "A String", # The font family. 21509 "fontSize": 42, # The size of the font. 21510 "italic": True or False, # True if the text is italicized. 21511 "underline": True or False, # True if the text is underlined. 21512 }, 21513 "textRotation": { # The rotation applied to text in a cell. # The rotation applied to text in a cell 21514 "angle": 42, # The angle between the standard orientation and the desired orientation. 21515 # Measured in degrees. Valid values are between -90 and 90. Positive 21516 # angles are angled upwards, negative are angled downwards. 21517 # 21518 # Note: For LTR text direction positive angles are in the counterclockwise 21519 # direction, whereas for RTL they are in the clockwise direction 21520 "vertical": True or False, # If true, text reads top to bottom, but the orientation of individual 21521 # characters is unchanged. 21522 # For example: 21523 # 21524 # | V | 21525 # | e | 21526 # | r | 21527 # | t | 21528 # | i | 21529 # | c | 21530 # | a | 21531 # | l | 21532 }, 21533 "hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell. 21534 "borders": { # The borders of the cell. # The borders of the cell. 21535 "top": { # A border along a cell. # The top border of the cell. 21536 "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border. 21537 # for simplicity of conversion to/from color representations in various 21538 # languages over compactness; for example, the fields of this representation 21539 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 21540 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 21541 # method in iOS; and, with just a little work, it can be easily formatted into 21542 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 21543 # 21544 # Example (Java): 21545 # 21546 # import com.google.type.Color; 21547 # 21548 # // ... 21549 # public static java.awt.Color fromProto(Color protocolor) { 21550 # float alpha = protocolor.hasAlpha() 21551 # ? protocolor.getAlpha().getValue() 21552 # : 1.0; 21553 # 21554 # return new java.awt.Color( 21555 # protocolor.getRed(), 21556 # protocolor.getGreen(), 21557 # protocolor.getBlue(), 21558 # alpha); 21559 # } 21560 # 21561 # public static Color toProto(java.awt.Color color) { 21562 # float red = (float) color.getRed(); 21563 # float green = (float) color.getGreen(); 21564 # float blue = (float) color.getBlue(); 21565 # float denominator = 255.0; 21566 # Color.Builder resultBuilder = 21567 # Color 21568 # .newBuilder() 21569 # .setRed(red / denominator) 21570 # .setGreen(green / denominator) 21571 # .setBlue(blue / denominator); 21572 # int alpha = color.getAlpha(); 21573 # if (alpha != 255) { 21574 # result.setAlpha( 21575 # FloatValue 21576 # .newBuilder() 21577 # .setValue(((float) alpha) / denominator) 21578 # .build()); 21579 # } 21580 # return resultBuilder.build(); 21581 # } 21582 # // ... 21583 # 21584 # Example (iOS / Obj-C): 21585 # 21586 # // ... 21587 # static UIColor* fromProto(Color* protocolor) { 21588 # float red = [protocolor red]; 21589 # float green = [protocolor green]; 21590 # float blue = [protocolor blue]; 21591 # FloatValue* alpha_wrapper = [protocolor alpha]; 21592 # float alpha = 1.0; 21593 # if (alpha_wrapper != nil) { 21594 # alpha = [alpha_wrapper value]; 21595 # } 21596 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 21597 # } 21598 # 21599 # static Color* toProto(UIColor* color) { 21600 # CGFloat red, green, blue, alpha; 21601 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 21602 # return nil; 21603 # } 21604 # Color* result = [Color alloc] init]; 21605 # [result setRed:red]; 21606 # [result setGreen:green]; 21607 # [result setBlue:blue]; 21608 # if (alpha <= 0.9999) { 21609 # [result setAlpha:floatWrapperWithValue(alpha)]; 21610 # } 21611 # [result autorelease]; 21612 # return result; 21613 # } 21614 # // ... 21615 # 21616 # Example (JavaScript): 21617 # 21618 # // ... 21619 # 21620 # var protoToCssColor = function(rgb_color) { 21621 # var redFrac = rgb_color.red || 0.0; 21622 # var greenFrac = rgb_color.green || 0.0; 21623 # var blueFrac = rgb_color.blue || 0.0; 21624 # var red = Math.floor(redFrac * 255); 21625 # var green = Math.floor(greenFrac * 255); 21626 # var blue = Math.floor(blueFrac * 255); 21627 # 21628 # if (!('alpha' in rgb_color)) { 21629 # return rgbToCssColor_(red, green, blue); 21630 # } 21631 # 21632 # var alphaFrac = rgb_color.alpha.value || 0.0; 21633 # var rgbParams = [red, green, blue].join(','); 21634 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 21635 # }; 21636 # 21637 # var rgbToCssColor_ = function(red, green, blue) { 21638 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 21639 # var hexString = rgbNumber.toString(16); 21640 # var missingZeros = 6 - hexString.length; 21641 # var resultBuilder = ['#']; 21642 # for (var i = 0; i < missingZeros; i++) { 21643 # resultBuilder.push('0'); 21644 # } 21645 # resultBuilder.push(hexString); 21646 # return resultBuilder.join(''); 21647 # }; 21648 # 21649 # // ... 21650 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 21651 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 21652 # the final pixel color is defined by the equation: 21653 # 21654 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 21655 # 21656 # This means that a value of 1.0 corresponds to a solid color, whereas 21657 # a value of 0.0 corresponds to a completely transparent color. This 21658 # uses a wrapper message rather than a simple float scalar so that it is 21659 # possible to distinguish between a default value and the value being unset. 21660 # If omitted, this color object is to be rendered as a solid color 21661 # (as if the alpha value had been explicitly given with a value of 1.0). 21662 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 21663 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 21664 }, 21665 "width": 42, # The width of the border, in pixels. 21666 # Deprecated; the width is determined by the "style" field. 21667 "style": "A String", # The style of the border. 21668 }, 21669 "right": { # A border along a cell. # The right border of the cell. 21670 "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border. 21671 # for simplicity of conversion to/from color representations in various 21672 # languages over compactness; for example, the fields of this representation 21673 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 21674 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 21675 # method in iOS; and, with just a little work, it can be easily formatted into 21676 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 21677 # 21678 # Example (Java): 21679 # 21680 # import com.google.type.Color; 21681 # 21682 # // ... 21683 # public static java.awt.Color fromProto(Color protocolor) { 21684 # float alpha = protocolor.hasAlpha() 21685 # ? protocolor.getAlpha().getValue() 21686 # : 1.0; 21687 # 21688 # return new java.awt.Color( 21689 # protocolor.getRed(), 21690 # protocolor.getGreen(), 21691 # protocolor.getBlue(), 21692 # alpha); 21693 # } 21694 # 21695 # public static Color toProto(java.awt.Color color) { 21696 # float red = (float) color.getRed(); 21697 # float green = (float) color.getGreen(); 21698 # float blue = (float) color.getBlue(); 21699 # float denominator = 255.0; 21700 # Color.Builder resultBuilder = 21701 # Color 21702 # .newBuilder() 21703 # .setRed(red / denominator) 21704 # .setGreen(green / denominator) 21705 # .setBlue(blue / denominator); 21706 # int alpha = color.getAlpha(); 21707 # if (alpha != 255) { 21708 # result.setAlpha( 21709 # FloatValue 21710 # .newBuilder() 21711 # .setValue(((float) alpha) / denominator) 21712 # .build()); 21713 # } 21714 # return resultBuilder.build(); 21715 # } 21716 # // ... 21717 # 21718 # Example (iOS / Obj-C): 21719 # 21720 # // ... 21721 # static UIColor* fromProto(Color* protocolor) { 21722 # float red = [protocolor red]; 21723 # float green = [protocolor green]; 21724 # float blue = [protocolor blue]; 21725 # FloatValue* alpha_wrapper = [protocolor alpha]; 21726 # float alpha = 1.0; 21727 # if (alpha_wrapper != nil) { 21728 # alpha = [alpha_wrapper value]; 21729 # } 21730 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 21731 # } 21732 # 21733 # static Color* toProto(UIColor* color) { 21734 # CGFloat red, green, blue, alpha; 21735 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 21736 # return nil; 21737 # } 21738 # Color* result = [Color alloc] init]; 21739 # [result setRed:red]; 21740 # [result setGreen:green]; 21741 # [result setBlue:blue]; 21742 # if (alpha <= 0.9999) { 21743 # [result setAlpha:floatWrapperWithValue(alpha)]; 21744 # } 21745 # [result autorelease]; 21746 # return result; 21747 # } 21748 # // ... 21749 # 21750 # Example (JavaScript): 21751 # 21752 # // ... 21753 # 21754 # var protoToCssColor = function(rgb_color) { 21755 # var redFrac = rgb_color.red || 0.0; 21756 # var greenFrac = rgb_color.green || 0.0; 21757 # var blueFrac = rgb_color.blue || 0.0; 21758 # var red = Math.floor(redFrac * 255); 21759 # var green = Math.floor(greenFrac * 255); 21760 # var blue = Math.floor(blueFrac * 255); 21761 # 21762 # if (!('alpha' in rgb_color)) { 21763 # return rgbToCssColor_(red, green, blue); 21764 # } 21765 # 21766 # var alphaFrac = rgb_color.alpha.value || 0.0; 21767 # var rgbParams = [red, green, blue].join(','); 21768 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 21769 # }; 21770 # 21771 # var rgbToCssColor_ = function(red, green, blue) { 21772 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 21773 # var hexString = rgbNumber.toString(16); 21774 # var missingZeros = 6 - hexString.length; 21775 # var resultBuilder = ['#']; 21776 # for (var i = 0; i < missingZeros; i++) { 21777 # resultBuilder.push('0'); 21778 # } 21779 # resultBuilder.push(hexString); 21780 # return resultBuilder.join(''); 21781 # }; 21782 # 21783 # // ... 21784 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 21785 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 21786 # the final pixel color is defined by the equation: 21787 # 21788 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 21789 # 21790 # This means that a value of 1.0 corresponds to a solid color, whereas 21791 # a value of 0.0 corresponds to a completely transparent color. This 21792 # uses a wrapper message rather than a simple float scalar so that it is 21793 # possible to distinguish between a default value and the value being unset. 21794 # If omitted, this color object is to be rendered as a solid color 21795 # (as if the alpha value had been explicitly given with a value of 1.0). 21796 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 21797 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 21798 }, 21799 "width": 42, # The width of the border, in pixels. 21800 # Deprecated; the width is determined by the "style" field. 21801 "style": "A String", # The style of the border. 21802 }, 21803 "bottom": { # A border along a cell. # The bottom border of the cell. 21804 "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border. 21805 # for simplicity of conversion to/from color representations in various 21806 # languages over compactness; for example, the fields of this representation 21807 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 21808 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 21809 # method in iOS; and, with just a little work, it can be easily formatted into 21810 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 21811 # 21812 # Example (Java): 21813 # 21814 # import com.google.type.Color; 21815 # 21816 # // ... 21817 # public static java.awt.Color fromProto(Color protocolor) { 21818 # float alpha = protocolor.hasAlpha() 21819 # ? protocolor.getAlpha().getValue() 21820 # : 1.0; 21821 # 21822 # return new java.awt.Color( 21823 # protocolor.getRed(), 21824 # protocolor.getGreen(), 21825 # protocolor.getBlue(), 21826 # alpha); 21827 # } 21828 # 21829 # public static Color toProto(java.awt.Color color) { 21830 # float red = (float) color.getRed(); 21831 # float green = (float) color.getGreen(); 21832 # float blue = (float) color.getBlue(); 21833 # float denominator = 255.0; 21834 # Color.Builder resultBuilder = 21835 # Color 21836 # .newBuilder() 21837 # .setRed(red / denominator) 21838 # .setGreen(green / denominator) 21839 # .setBlue(blue / denominator); 21840 # int alpha = color.getAlpha(); 21841 # if (alpha != 255) { 21842 # result.setAlpha( 21843 # FloatValue 21844 # .newBuilder() 21845 # .setValue(((float) alpha) / denominator) 21846 # .build()); 21847 # } 21848 # return resultBuilder.build(); 21849 # } 21850 # // ... 21851 # 21852 # Example (iOS / Obj-C): 21853 # 21854 # // ... 21855 # static UIColor* fromProto(Color* protocolor) { 21856 # float red = [protocolor red]; 21857 # float green = [protocolor green]; 21858 # float blue = [protocolor blue]; 21859 # FloatValue* alpha_wrapper = [protocolor alpha]; 21860 # float alpha = 1.0; 21861 # if (alpha_wrapper != nil) { 21862 # alpha = [alpha_wrapper value]; 21863 # } 21864 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 21865 # } 21866 # 21867 # static Color* toProto(UIColor* color) { 21868 # CGFloat red, green, blue, alpha; 21869 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 21870 # return nil; 21871 # } 21872 # Color* result = [Color alloc] init]; 21873 # [result setRed:red]; 21874 # [result setGreen:green]; 21875 # [result setBlue:blue]; 21876 # if (alpha <= 0.9999) { 21877 # [result setAlpha:floatWrapperWithValue(alpha)]; 21878 # } 21879 # [result autorelease]; 21880 # return result; 21881 # } 21882 # // ... 21883 # 21884 # Example (JavaScript): 21885 # 21886 # // ... 21887 # 21888 # var protoToCssColor = function(rgb_color) { 21889 # var redFrac = rgb_color.red || 0.0; 21890 # var greenFrac = rgb_color.green || 0.0; 21891 # var blueFrac = rgb_color.blue || 0.0; 21892 # var red = Math.floor(redFrac * 255); 21893 # var green = Math.floor(greenFrac * 255); 21894 # var blue = Math.floor(blueFrac * 255); 21895 # 21896 # if (!('alpha' in rgb_color)) { 21897 # return rgbToCssColor_(red, green, blue); 21898 # } 21899 # 21900 # var alphaFrac = rgb_color.alpha.value || 0.0; 21901 # var rgbParams = [red, green, blue].join(','); 21902 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 21903 # }; 21904 # 21905 # var rgbToCssColor_ = function(red, green, blue) { 21906 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 21907 # var hexString = rgbNumber.toString(16); 21908 # var missingZeros = 6 - hexString.length; 21909 # var resultBuilder = ['#']; 21910 # for (var i = 0; i < missingZeros; i++) { 21911 # resultBuilder.push('0'); 21912 # } 21913 # resultBuilder.push(hexString); 21914 # return resultBuilder.join(''); 21915 # }; 21916 # 21917 # // ... 21918 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 21919 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 21920 # the final pixel color is defined by the equation: 21921 # 21922 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 21923 # 21924 # This means that a value of 1.0 corresponds to a solid color, whereas 21925 # a value of 0.0 corresponds to a completely transparent color. This 21926 # uses a wrapper message rather than a simple float scalar so that it is 21927 # possible to distinguish between a default value and the value being unset. 21928 # If omitted, this color object is to be rendered as a solid color 21929 # (as if the alpha value had been explicitly given with a value of 1.0). 21930 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 21931 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 21932 }, 21933 "width": 42, # The width of the border, in pixels. 21934 # Deprecated; the width is determined by the "style" field. 21935 "style": "A String", # The style of the border. 21936 }, 21937 "left": { # A border along a cell. # The left border of the cell. 21938 "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border. 21939 # for simplicity of conversion to/from color representations in various 21940 # languages over compactness; for example, the fields of this representation 21941 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 21942 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 21943 # method in iOS; and, with just a little work, it can be easily formatted into 21944 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 21945 # 21946 # Example (Java): 21947 # 21948 # import com.google.type.Color; 21949 # 21950 # // ... 21951 # public static java.awt.Color fromProto(Color protocolor) { 21952 # float alpha = protocolor.hasAlpha() 21953 # ? protocolor.getAlpha().getValue() 21954 # : 1.0; 21955 # 21956 # return new java.awt.Color( 21957 # protocolor.getRed(), 21958 # protocolor.getGreen(), 21959 # protocolor.getBlue(), 21960 # alpha); 21961 # } 21962 # 21963 # public static Color toProto(java.awt.Color color) { 21964 # float red = (float) color.getRed(); 21965 # float green = (float) color.getGreen(); 21966 # float blue = (float) color.getBlue(); 21967 # float denominator = 255.0; 21968 # Color.Builder resultBuilder = 21969 # Color 21970 # .newBuilder() 21971 # .setRed(red / denominator) 21972 # .setGreen(green / denominator) 21973 # .setBlue(blue / denominator); 21974 # int alpha = color.getAlpha(); 21975 # if (alpha != 255) { 21976 # result.setAlpha( 21977 # FloatValue 21978 # .newBuilder() 21979 # .setValue(((float) alpha) / denominator) 21980 # .build()); 21981 # } 21982 # return resultBuilder.build(); 21983 # } 21984 # // ... 21985 # 21986 # Example (iOS / Obj-C): 21987 # 21988 # // ... 21989 # static UIColor* fromProto(Color* protocolor) { 21990 # float red = [protocolor red]; 21991 # float green = [protocolor green]; 21992 # float blue = [protocolor blue]; 21993 # FloatValue* alpha_wrapper = [protocolor alpha]; 21994 # float alpha = 1.0; 21995 # if (alpha_wrapper != nil) { 21996 # alpha = [alpha_wrapper value]; 21997 # } 21998 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 21999 # } 22000 # 22001 # static Color* toProto(UIColor* color) { 22002 # CGFloat red, green, blue, alpha; 22003 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 22004 # return nil; 22005 # } 22006 # Color* result = [Color alloc] init]; 22007 # [result setRed:red]; 22008 # [result setGreen:green]; 22009 # [result setBlue:blue]; 22010 # if (alpha <= 0.9999) { 22011 # [result setAlpha:floatWrapperWithValue(alpha)]; 22012 # } 22013 # [result autorelease]; 22014 # return result; 22015 # } 22016 # // ... 22017 # 22018 # Example (JavaScript): 22019 # 22020 # // ... 22021 # 22022 # var protoToCssColor = function(rgb_color) { 22023 # var redFrac = rgb_color.red || 0.0; 22024 # var greenFrac = rgb_color.green || 0.0; 22025 # var blueFrac = rgb_color.blue || 0.0; 22026 # var red = Math.floor(redFrac * 255); 22027 # var green = Math.floor(greenFrac * 255); 22028 # var blue = Math.floor(blueFrac * 255); 22029 # 22030 # if (!('alpha' in rgb_color)) { 22031 # return rgbToCssColor_(red, green, blue); 22032 # } 22033 # 22034 # var alphaFrac = rgb_color.alpha.value || 0.0; 22035 # var rgbParams = [red, green, blue].join(','); 22036 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 22037 # }; 22038 # 22039 # var rgbToCssColor_ = function(red, green, blue) { 22040 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 22041 # var hexString = rgbNumber.toString(16); 22042 # var missingZeros = 6 - hexString.length; 22043 # var resultBuilder = ['#']; 22044 # for (var i = 0; i < missingZeros; i++) { 22045 # resultBuilder.push('0'); 22046 # } 22047 # resultBuilder.push(hexString); 22048 # return resultBuilder.join(''); 22049 # }; 22050 # 22051 # // ... 22052 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 22053 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 22054 # the final pixel color is defined by the equation: 22055 # 22056 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 22057 # 22058 # This means that a value of 1.0 corresponds to a solid color, whereas 22059 # a value of 0.0 corresponds to a completely transparent color. This 22060 # uses a wrapper message rather than a simple float scalar so that it is 22061 # possible to distinguish between a default value and the value being unset. 22062 # If omitted, this color object is to be rendered as a solid color 22063 # (as if the alpha value had been explicitly given with a value of 1.0). 22064 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 22065 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 22066 }, 22067 "width": 42, # The width of the border, in pixels. 22068 # Deprecated; the width is determined by the "style" field. 22069 "style": "A String", # The style of the border. 22070 }, 22071 }, 22072 "wrapStrategy": "A String", # The wrap strategy for the value in the cell. 22073 }, 22074 "dataValidation": { # A data validation rule. # A data validation rule on the cell, if any. 22075 # 22076 # When writing, the new data validation rule will overwrite any prior rule. 22077 "showCustomUi": True or False, # True if the UI should be customized based on the kind of condition. 22078 # If true, "List" conditions will show a dropdown. 22079 "strict": True or False, # True if invalid data should be rejected. 22080 "inputMessage": "A String", # A message to show the user when adding data to the cell. 22081 "condition": { # A condition that can evaluate to true or false. # The condition that data in the cell must match. 22082 # BooleanConditions are used by conditional formatting, 22083 # data validation, and the criteria in filters. 22084 "values": [ # The values of the condition. The number of supported values depends 22085 # on the condition type. Some support zero values, 22086 # others one or two values, 22087 # and ConditionType.ONE_OF_LIST supports an arbitrary number of values. 22088 { # The value of the condition. 22089 "relativeDate": "A String", # A relative date (based on the current date). 22090 # Valid only if the type is 22091 # DATE_BEFORE, 22092 # DATE_AFTER, 22093 # DATE_ON_OR_BEFORE or 22094 # DATE_ON_OR_AFTER. 22095 # 22096 # Relative dates are not supported in data validation. 22097 # They are supported only in conditional formatting and 22098 # conditional filters. 22099 "userEnteredValue": "A String", # A value the condition is based on. 22100 # The value will be parsed as if the user typed into a cell. 22101 # Formulas are supported (and must begin with an `=`). 22102 }, 22103 ], 22104 "type": "A String", # The type of condition. 22105 }, 22106 }, 22107 "textFormatRuns": [ # Runs of rich text applied to subsections of the cell. Runs are only valid 22108 # on user entered strings, not formulas, bools, or numbers. 22109 # Runs start at specific indexes in the text and continue until the next 22110 # run. Properties of a run will continue unless explicitly changed 22111 # in a subsequent run (and properties of the first run will continue 22112 # the properties of the cell unless explicitly changed). 22113 # 22114 # When writing, the new runs will overwrite any prior runs. When writing a 22115 # new user_entered_value, previous runs will be erased. 22116 { # A run of a text format. The format of this run continues until the start 22117 # index of the next run. 22118 # When updating, all fields must be set. 22119 "startIndex": 42, # The character index where this run starts. 22120 "format": { # The format of a run of text in a cell. # The format of this run. Absent values inherit the cell's format. 22121 # Absent values indicate that the field isn't specified. 22122 "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text. 22123 # for simplicity of conversion to/from color representations in various 22124 # languages over compactness; for example, the fields of this representation 22125 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 22126 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 22127 # method in iOS; and, with just a little work, it can be easily formatted into 22128 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 22129 # 22130 # Example (Java): 22131 # 22132 # import com.google.type.Color; 22133 # 22134 # // ... 22135 # public static java.awt.Color fromProto(Color protocolor) { 22136 # float alpha = protocolor.hasAlpha() 22137 # ? protocolor.getAlpha().getValue() 22138 # : 1.0; 22139 # 22140 # return new java.awt.Color( 22141 # protocolor.getRed(), 22142 # protocolor.getGreen(), 22143 # protocolor.getBlue(), 22144 # alpha); 22145 # } 22146 # 22147 # public static Color toProto(java.awt.Color color) { 22148 # float red = (float) color.getRed(); 22149 # float green = (float) color.getGreen(); 22150 # float blue = (float) color.getBlue(); 22151 # float denominator = 255.0; 22152 # Color.Builder resultBuilder = 22153 # Color 22154 # .newBuilder() 22155 # .setRed(red / denominator) 22156 # .setGreen(green / denominator) 22157 # .setBlue(blue / denominator); 22158 # int alpha = color.getAlpha(); 22159 # if (alpha != 255) { 22160 # result.setAlpha( 22161 # FloatValue 22162 # .newBuilder() 22163 # .setValue(((float) alpha) / denominator) 22164 # .build()); 22165 # } 22166 # return resultBuilder.build(); 22167 # } 22168 # // ... 22169 # 22170 # Example (iOS / Obj-C): 22171 # 22172 # // ... 22173 # static UIColor* fromProto(Color* protocolor) { 22174 # float red = [protocolor red]; 22175 # float green = [protocolor green]; 22176 # float blue = [protocolor blue]; 22177 # FloatValue* alpha_wrapper = [protocolor alpha]; 22178 # float alpha = 1.0; 22179 # if (alpha_wrapper != nil) { 22180 # alpha = [alpha_wrapper value]; 22181 # } 22182 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 22183 # } 22184 # 22185 # static Color* toProto(UIColor* color) { 22186 # CGFloat red, green, blue, alpha; 22187 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 22188 # return nil; 22189 # } 22190 # Color* result = [Color alloc] init]; 22191 # [result setRed:red]; 22192 # [result setGreen:green]; 22193 # [result setBlue:blue]; 22194 # if (alpha <= 0.9999) { 22195 # [result setAlpha:floatWrapperWithValue(alpha)]; 22196 # } 22197 # [result autorelease]; 22198 # return result; 22199 # } 22200 # // ... 22201 # 22202 # Example (JavaScript): 22203 # 22204 # // ... 22205 # 22206 # var protoToCssColor = function(rgb_color) { 22207 # var redFrac = rgb_color.red || 0.0; 22208 # var greenFrac = rgb_color.green || 0.0; 22209 # var blueFrac = rgb_color.blue || 0.0; 22210 # var red = Math.floor(redFrac * 255); 22211 # var green = Math.floor(greenFrac * 255); 22212 # var blue = Math.floor(blueFrac * 255); 22213 # 22214 # if (!('alpha' in rgb_color)) { 22215 # return rgbToCssColor_(red, green, blue); 22216 # } 22217 # 22218 # var alphaFrac = rgb_color.alpha.value || 0.0; 22219 # var rgbParams = [red, green, blue].join(','); 22220 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 22221 # }; 22222 # 22223 # var rgbToCssColor_ = function(red, green, blue) { 22224 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 22225 # var hexString = rgbNumber.toString(16); 22226 # var missingZeros = 6 - hexString.length; 22227 # var resultBuilder = ['#']; 22228 # for (var i = 0; i < missingZeros; i++) { 22229 # resultBuilder.push('0'); 22230 # } 22231 # resultBuilder.push(hexString); 22232 # return resultBuilder.join(''); 22233 # }; 22234 # 22235 # // ... 22236 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 22237 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 22238 # the final pixel color is defined by the equation: 22239 # 22240 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 22241 # 22242 # This means that a value of 1.0 corresponds to a solid color, whereas 22243 # a value of 0.0 corresponds to a completely transparent color. This 22244 # uses a wrapper message rather than a simple float scalar so that it is 22245 # possible to distinguish between a default value and the value being unset. 22246 # If omitted, this color object is to be rendered as a solid color 22247 # (as if the alpha value had been explicitly given with a value of 1.0). 22248 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 22249 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 22250 }, 22251 "bold": True or False, # True if the text is bold. 22252 "strikethrough": True or False, # True if the text has a strikethrough. 22253 "fontFamily": "A String", # The font family. 22254 "fontSize": 42, # The size of the font. 22255 "italic": True or False, # True if the text is italicized. 22256 "underline": True or False, # True if the text is underlined. 22257 }, 22258 }, 22259 ], 22260 }, 22261 ], 22262 }, 22263 ], 22264 "startRow": 42, # The first row this GridData refers to, zero-based. 22265 "columnMetadata": [ # Metadata about the requested columns in the grid, starting with the column 22266 # in start_column. 22267 { # Properties about a dimension. 22268 "pixelSize": 42, # The height (if a row) or width (if a column) of the dimension in pixels. 22269 "hiddenByUser": True or False, # True if this dimension is explicitly hidden. 22270 "hiddenByFilter": True or False, # True if this dimension is being filtered. 22271 # This field is read-only. 22272 }, 22273 ], 22274 }, 22275 ], 22276 "properties": { # Properties of a sheet. # The properties of the sheet. 22277 "sheetType": "A String", # The type of sheet. Defaults to GRID. 22278 # This field cannot be changed once set. 22279 "index": 42, # The index of the sheet within the spreadsheet. 22280 # When adding or updating sheet properties, if this field 22281 # is excluded then the sheet will be added or moved to the end 22282 # of the sheet list. When updating sheet indices or inserting 22283 # sheets, movement is considered in "before the move" indexes. 22284 # For example, if there were 3 sheets (S1, S2, S3) in order to 22285 # move S1 ahead of S2 the index would have to be set to 2. A sheet 22286 # index update request will be ignored if the requested index is 22287 # identical to the sheets current index or if the requested new 22288 # index is equal to the current sheet index + 1. 22289 "title": "A String", # The name of the sheet. 22290 "gridProperties": { # Properties of a grid. # Additional properties of the sheet if this sheet is a grid. 22291 # (If the sheet is an object sheet, containing a chart or image, then 22292 # this field will be absent.) 22293 # When writing it is an error to set any grid properties on non-grid sheets. 22294 "columnCount": 42, # The number of columns in the grid. 22295 "frozenRowCount": 42, # The number of rows that are frozen in the grid. 22296 "frozenColumnCount": 42, # The number of columns that are frozen in the grid. 22297 "hideGridlines": True or False, # True if the grid isn't showing gridlines in the UI. 22298 "rowCount": 42, # The number of rows in the grid. 22299 }, 22300 "rightToLeft": True or False, # True if the sheet is an RTL sheet instead of an LTR sheet. 22301 "tabColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the tab in the UI. 22302 # for simplicity of conversion to/from color representations in various 22303 # languages over compactness; for example, the fields of this representation 22304 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 22305 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 22306 # method in iOS; and, with just a little work, it can be easily formatted into 22307 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 22308 # 22309 # Example (Java): 22310 # 22311 # import com.google.type.Color; 22312 # 22313 # // ... 22314 # public static java.awt.Color fromProto(Color protocolor) { 22315 # float alpha = protocolor.hasAlpha() 22316 # ? protocolor.getAlpha().getValue() 22317 # : 1.0; 22318 # 22319 # return new java.awt.Color( 22320 # protocolor.getRed(), 22321 # protocolor.getGreen(), 22322 # protocolor.getBlue(), 22323 # alpha); 22324 # } 22325 # 22326 # public static Color toProto(java.awt.Color color) { 22327 # float red = (float) color.getRed(); 22328 # float green = (float) color.getGreen(); 22329 # float blue = (float) color.getBlue(); 22330 # float denominator = 255.0; 22331 # Color.Builder resultBuilder = 22332 # Color 22333 # .newBuilder() 22334 # .setRed(red / denominator) 22335 # .setGreen(green / denominator) 22336 # .setBlue(blue / denominator); 22337 # int alpha = color.getAlpha(); 22338 # if (alpha != 255) { 22339 # result.setAlpha( 22340 # FloatValue 22341 # .newBuilder() 22342 # .setValue(((float) alpha) / denominator) 22343 # .build()); 22344 # } 22345 # return resultBuilder.build(); 22346 # } 22347 # // ... 22348 # 22349 # Example (iOS / Obj-C): 22350 # 22351 # // ... 22352 # static UIColor* fromProto(Color* protocolor) { 22353 # float red = [protocolor red]; 22354 # float green = [protocolor green]; 22355 # float blue = [protocolor blue]; 22356 # FloatValue* alpha_wrapper = [protocolor alpha]; 22357 # float alpha = 1.0; 22358 # if (alpha_wrapper != nil) { 22359 # alpha = [alpha_wrapper value]; 22360 # } 22361 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 22362 # } 22363 # 22364 # static Color* toProto(UIColor* color) { 22365 # CGFloat red, green, blue, alpha; 22366 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 22367 # return nil; 22368 # } 22369 # Color* result = [Color alloc] init]; 22370 # [result setRed:red]; 22371 # [result setGreen:green]; 22372 # [result setBlue:blue]; 22373 # if (alpha <= 0.9999) { 22374 # [result setAlpha:floatWrapperWithValue(alpha)]; 22375 # } 22376 # [result autorelease]; 22377 # return result; 22378 # } 22379 # // ... 22380 # 22381 # Example (JavaScript): 22382 # 22383 # // ... 22384 # 22385 # var protoToCssColor = function(rgb_color) { 22386 # var redFrac = rgb_color.red || 0.0; 22387 # var greenFrac = rgb_color.green || 0.0; 22388 # var blueFrac = rgb_color.blue || 0.0; 22389 # var red = Math.floor(redFrac * 255); 22390 # var green = Math.floor(greenFrac * 255); 22391 # var blue = Math.floor(blueFrac * 255); 22392 # 22393 # if (!('alpha' in rgb_color)) { 22394 # return rgbToCssColor_(red, green, blue); 22395 # } 22396 # 22397 # var alphaFrac = rgb_color.alpha.value || 0.0; 22398 # var rgbParams = [red, green, blue].join(','); 22399 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 22400 # }; 22401 # 22402 # var rgbToCssColor_ = function(red, green, blue) { 22403 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 22404 # var hexString = rgbNumber.toString(16); 22405 # var missingZeros = 6 - hexString.length; 22406 # var resultBuilder = ['#']; 22407 # for (var i = 0; i < missingZeros; i++) { 22408 # resultBuilder.push('0'); 22409 # } 22410 # resultBuilder.push(hexString); 22411 # return resultBuilder.join(''); 22412 # }; 22413 # 22414 # // ... 22415 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 22416 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 22417 # the final pixel color is defined by the equation: 22418 # 22419 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 22420 # 22421 # This means that a value of 1.0 corresponds to a solid color, whereas 22422 # a value of 0.0 corresponds to a completely transparent color. This 22423 # uses a wrapper message rather than a simple float scalar so that it is 22424 # possible to distinguish between a default value and the value being unset. 22425 # If omitted, this color object is to be rendered as a solid color 22426 # (as if the alpha value had been explicitly given with a value of 1.0). 22427 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 22428 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 22429 }, 22430 "hidden": True or False, # True if the sheet is hidden in the UI, false if it's visible. 22431 "sheetId": 42, # The ID of the sheet. Must be non-negative. 22432 # This field cannot be changed once set. 22433 }, 22434 }, 22435 ], 22436 "spreadsheetUrl": "A String", # The url of the spreadsheet. 22437 # This field is read-only. 22438 }, 22439 "replies": [ # The reply of the updates. This maps 1:1 with the updates, although 22440 # replies to some requests may be empty. 22441 { # A single response from an update. 22442 "duplicateFilterView": { # The result of a filter view being duplicated. # A reply from duplicating a filter view. 22443 "filter": { # A filter view. # The newly created filter. 22444 "title": "A String", # The name of the filter view. 22445 "namedRangeId": "A String", # The named range this filter view is backed by, if any. 22446 # 22447 # When writing, only one of range or named_range_id 22448 # may be set. 22449 "filterViewId": 42, # The ID of the filter view. 22450 "range": { # A range on a sheet. # The range this filter view covers. 22451 # 22452 # When writing, only one of range or named_range_id 22453 # may be set. 22454 # All indexes are zero-based. 22455 # Indexes are half open, e.g the start index is inclusive 22456 # and the end index is exclusive -- [start_index, end_index). 22457 # Missing indexes indicate the range is unbounded on that side. 22458 # 22459 # For example, if `"Sheet1"` is sheet ID 0, then: 22460 # 22461 # `Sheet1!A1:A1 == sheet_id: 0, 22462 # start_row_index: 0, end_row_index: 1, 22463 # start_column_index: 0, end_column_index: 1` 22464 # 22465 # `Sheet1!A3:B4 == sheet_id: 0, 22466 # start_row_index: 2, end_row_index: 4, 22467 # start_column_index: 0, end_column_index: 2` 22468 # 22469 # `Sheet1!A:B == sheet_id: 0, 22470 # start_column_index: 0, end_column_index: 2` 22471 # 22472 # `Sheet1!A5:B == sheet_id: 0, 22473 # start_row_index: 4, 22474 # start_column_index: 0, end_column_index: 2` 22475 # 22476 # `Sheet1 == sheet_id:0` 22477 # 22478 # The start index must always be less than or equal to the end index. 22479 # If the start index equals the end index, then the range is empty. 22480 # Empty ranges are typically not meaningful and are usually rendered in the 22481 # UI as `#REF!`. 22482 "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded. 22483 "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded. 22484 "sheetId": 42, # The sheet this range is on. 22485 "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded. 22486 "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded. 22487 }, 22488 "sortSpecs": [ # The sort order per column. Later specifications are used when values 22489 # are equal in the earlier specifications. 22490 { # A sort order associated with a specific column or row. 22491 "sortOrder": "A String", # The order data should be sorted. 22492 "dimensionIndex": 42, # The dimension the sort should be applied to. 22493 }, 22494 ], 22495 "criteria": { # The criteria for showing/hiding values per column. 22496 # The map's key is the column index, and the value is the criteria for 22497 # that column. 22498 "a_key": { # Criteria for showing/hiding rows in a filter or filter view. 22499 "hiddenValues": [ # Values that should be hidden. 22500 "A String", 22501 ], 22502 "condition": { # A condition that can evaluate to true or false. # A condition that must be true for values to be shown. 22503 # (This does not override hiddenValues -- if a value is listed there, 22504 # it will still be hidden.) 22505 # BooleanConditions are used by conditional formatting, 22506 # data validation, and the criteria in filters. 22507 "values": [ # The values of the condition. The number of supported values depends 22508 # on the condition type. Some support zero values, 22509 # others one or two values, 22510 # and ConditionType.ONE_OF_LIST supports an arbitrary number of values. 22511 { # The value of the condition. 22512 "relativeDate": "A String", # A relative date (based on the current date). 22513 # Valid only if the type is 22514 # DATE_BEFORE, 22515 # DATE_AFTER, 22516 # DATE_ON_OR_BEFORE or 22517 # DATE_ON_OR_AFTER. 22518 # 22519 # Relative dates are not supported in data validation. 22520 # They are supported only in conditional formatting and 22521 # conditional filters. 22522 "userEnteredValue": "A String", # A value the condition is based on. 22523 # The value will be parsed as if the user typed into a cell. 22524 # Formulas are supported (and must begin with an `=`). 22525 }, 22526 ], 22527 "type": "A String", # The type of condition. 22528 }, 22529 }, 22530 }, 22531 }, 22532 }, 22533 "duplicateSheet": { # The result of duplicating a sheet. # A reply from duplicating a sheet. 22534 "properties": { # Properties of a sheet. # The properties of the duplicate sheet. 22535 "sheetType": "A String", # The type of sheet. Defaults to GRID. 22536 # This field cannot be changed once set. 22537 "index": 42, # The index of the sheet within the spreadsheet. 22538 # When adding or updating sheet properties, if this field 22539 # is excluded then the sheet will be added or moved to the end 22540 # of the sheet list. When updating sheet indices or inserting 22541 # sheets, movement is considered in "before the move" indexes. 22542 # For example, if there were 3 sheets (S1, S2, S3) in order to 22543 # move S1 ahead of S2 the index would have to be set to 2. A sheet 22544 # index update request will be ignored if the requested index is 22545 # identical to the sheets current index or if the requested new 22546 # index is equal to the current sheet index + 1. 22547 "title": "A String", # The name of the sheet. 22548 "gridProperties": { # Properties of a grid. # Additional properties of the sheet if this sheet is a grid. 22549 # (If the sheet is an object sheet, containing a chart or image, then 22550 # this field will be absent.) 22551 # When writing it is an error to set any grid properties on non-grid sheets. 22552 "columnCount": 42, # The number of columns in the grid. 22553 "frozenRowCount": 42, # The number of rows that are frozen in the grid. 22554 "frozenColumnCount": 42, # The number of columns that are frozen in the grid. 22555 "hideGridlines": True or False, # True if the grid isn't showing gridlines in the UI. 22556 "rowCount": 42, # The number of rows in the grid. 22557 }, 22558 "rightToLeft": True or False, # True if the sheet is an RTL sheet instead of an LTR sheet. 22559 "tabColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the tab in the UI. 22560 # for simplicity of conversion to/from color representations in various 22561 # languages over compactness; for example, the fields of this representation 22562 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 22563 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 22564 # method in iOS; and, with just a little work, it can be easily formatted into 22565 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 22566 # 22567 # Example (Java): 22568 # 22569 # import com.google.type.Color; 22570 # 22571 # // ... 22572 # public static java.awt.Color fromProto(Color protocolor) { 22573 # float alpha = protocolor.hasAlpha() 22574 # ? protocolor.getAlpha().getValue() 22575 # : 1.0; 22576 # 22577 # return new java.awt.Color( 22578 # protocolor.getRed(), 22579 # protocolor.getGreen(), 22580 # protocolor.getBlue(), 22581 # alpha); 22582 # } 22583 # 22584 # public static Color toProto(java.awt.Color color) { 22585 # float red = (float) color.getRed(); 22586 # float green = (float) color.getGreen(); 22587 # float blue = (float) color.getBlue(); 22588 # float denominator = 255.0; 22589 # Color.Builder resultBuilder = 22590 # Color 22591 # .newBuilder() 22592 # .setRed(red / denominator) 22593 # .setGreen(green / denominator) 22594 # .setBlue(blue / denominator); 22595 # int alpha = color.getAlpha(); 22596 # if (alpha != 255) { 22597 # result.setAlpha( 22598 # FloatValue 22599 # .newBuilder() 22600 # .setValue(((float) alpha) / denominator) 22601 # .build()); 22602 # } 22603 # return resultBuilder.build(); 22604 # } 22605 # // ... 22606 # 22607 # Example (iOS / Obj-C): 22608 # 22609 # // ... 22610 # static UIColor* fromProto(Color* protocolor) { 22611 # float red = [protocolor red]; 22612 # float green = [protocolor green]; 22613 # float blue = [protocolor blue]; 22614 # FloatValue* alpha_wrapper = [protocolor alpha]; 22615 # float alpha = 1.0; 22616 # if (alpha_wrapper != nil) { 22617 # alpha = [alpha_wrapper value]; 22618 # } 22619 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 22620 # } 22621 # 22622 # static Color* toProto(UIColor* color) { 22623 # CGFloat red, green, blue, alpha; 22624 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 22625 # return nil; 22626 # } 22627 # Color* result = [Color alloc] init]; 22628 # [result setRed:red]; 22629 # [result setGreen:green]; 22630 # [result setBlue:blue]; 22631 # if (alpha <= 0.9999) { 22632 # [result setAlpha:floatWrapperWithValue(alpha)]; 22633 # } 22634 # [result autorelease]; 22635 # return result; 22636 # } 22637 # // ... 22638 # 22639 # Example (JavaScript): 22640 # 22641 # // ... 22642 # 22643 # var protoToCssColor = function(rgb_color) { 22644 # var redFrac = rgb_color.red || 0.0; 22645 # var greenFrac = rgb_color.green || 0.0; 22646 # var blueFrac = rgb_color.blue || 0.0; 22647 # var red = Math.floor(redFrac * 255); 22648 # var green = Math.floor(greenFrac * 255); 22649 # var blue = Math.floor(blueFrac * 255); 22650 # 22651 # if (!('alpha' in rgb_color)) { 22652 # return rgbToCssColor_(red, green, blue); 22653 # } 22654 # 22655 # var alphaFrac = rgb_color.alpha.value || 0.0; 22656 # var rgbParams = [red, green, blue].join(','); 22657 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 22658 # }; 22659 # 22660 # var rgbToCssColor_ = function(red, green, blue) { 22661 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 22662 # var hexString = rgbNumber.toString(16); 22663 # var missingZeros = 6 - hexString.length; 22664 # var resultBuilder = ['#']; 22665 # for (var i = 0; i < missingZeros; i++) { 22666 # resultBuilder.push('0'); 22667 # } 22668 # resultBuilder.push(hexString); 22669 # return resultBuilder.join(''); 22670 # }; 22671 # 22672 # // ... 22673 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 22674 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 22675 # the final pixel color is defined by the equation: 22676 # 22677 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 22678 # 22679 # This means that a value of 1.0 corresponds to a solid color, whereas 22680 # a value of 0.0 corresponds to a completely transparent color. This 22681 # uses a wrapper message rather than a simple float scalar so that it is 22682 # possible to distinguish between a default value and the value being unset. 22683 # If omitted, this color object is to be rendered as a solid color 22684 # (as if the alpha value had been explicitly given with a value of 1.0). 22685 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 22686 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 22687 }, 22688 "hidden": True or False, # True if the sheet is hidden in the UI, false if it's visible. 22689 "sheetId": 42, # The ID of the sheet. Must be non-negative. 22690 # This field cannot be changed once set. 22691 }, 22692 }, 22693 "updateEmbeddedObjectPosition": { # The result of updating an embedded object's position. # A reply from updating an embedded object's position. 22694 "position": { # The position of an embedded object such as a chart. # The new position of the embedded object. 22695 "newSheet": True or False, # If true, the embedded object will be put on a new sheet whose ID 22696 # is chosen for you. Used only when writing. 22697 "sheetId": 42, # The sheet this is on. Set only if the embedded object 22698 # is on its own sheet. Must be non-negative. 22699 "overlayPosition": { # The location an object is overlaid on top of a grid. # The position at which the object is overlaid on top of a grid. 22700 "anchorCell": { # A coordinate in a sheet. # The cell the object is anchored to. 22701 # All indexes are zero-based. 22702 "rowIndex": 42, # The row index of the coordinate. 22703 "columnIndex": 42, # The column index of the coordinate. 22704 "sheetId": 42, # The sheet this coordinate is on. 22705 }, 22706 "offsetYPixels": 42, # The vertical offset, in pixels, that the object is offset 22707 # from the anchor cell. 22708 "widthPixels": 42, # The width of the object, in pixels. Defaults to 600. 22709 "offsetXPixels": 42, # The horizontal offset, in pixels, that the object is offset 22710 # from the anchor cell. 22711 "heightPixels": 42, # The height of the object, in pixels. Defaults to 371. 22712 }, 22713 }, 22714 }, 22715 "addChart": { # The result of adding a chart to a spreadsheet. # A reply from adding a chart. 22716 "chart": { # A chart embedded in a sheet. # The newly added chart. 22717 "chartId": 42, # The ID of the chart. 22718 "position": { # The position of an embedded object such as a chart. # The position of the chart. 22719 "newSheet": True or False, # If true, the embedded object will be put on a new sheet whose ID 22720 # is chosen for you. Used only when writing. 22721 "sheetId": 42, # The sheet this is on. Set only if the embedded object 22722 # is on its own sheet. Must be non-negative. 22723 "overlayPosition": { # The location an object is overlaid on top of a grid. # The position at which the object is overlaid on top of a grid. 22724 "anchorCell": { # A coordinate in a sheet. # The cell the object is anchored to. 22725 # All indexes are zero-based. 22726 "rowIndex": 42, # The row index of the coordinate. 22727 "columnIndex": 42, # The column index of the coordinate. 22728 "sheetId": 42, # The sheet this coordinate is on. 22729 }, 22730 "offsetYPixels": 42, # The vertical offset, in pixels, that the object is offset 22731 # from the anchor cell. 22732 "widthPixels": 42, # The width of the object, in pixels. Defaults to 600. 22733 "offsetXPixels": 42, # The horizontal offset, in pixels, that the object is offset 22734 # from the anchor cell. 22735 "heightPixels": 42, # The height of the object, in pixels. Defaults to 371. 22736 }, 22737 }, 22738 "spec": { # The specifications of a chart. # The specification of the chart. 22739 "hiddenDimensionStrategy": "A String", # Determines how the charts will use hidden rows or columns. 22740 "pieChart": { # A <a href="/chart/interactive/docs/gallery/piechart">pie chart</a>. # A pie chart specification. 22741 "series": { # The data included in a domain or series. # The data that covers the one and only series of the pie chart. 22742 "sourceRange": { # Source ranges for a chart. # The source ranges of the data. 22743 "sources": [ # The ranges of data for a series or domain. 22744 # Exactly one dimension must have a length of 1, 22745 # and all sources in the list must have the same dimension 22746 # with length 1. 22747 # The domain (if it exists) & all series must have the same number 22748 # of source ranges. If using more than one source range, then the source 22749 # range at a given offset must be contiguous across the domain and series. 22750 # 22751 # For example, these are valid configurations: 22752 # 22753 # domain sources: A1:A5 22754 # series1 sources: B1:B5 22755 # series2 sources: D6:D10 22756 # 22757 # domain sources: A1:A5, C10:C12 22758 # series1 sources: B1:B5, D10:D12 22759 # series2 sources: C1:C5, E10:E12 22760 { # A range on a sheet. 22761 # All indexes are zero-based. 22762 # Indexes are half open, e.g the start index is inclusive 22763 # and the end index is exclusive -- [start_index, end_index). 22764 # Missing indexes indicate the range is unbounded on that side. 22765 # 22766 # For example, if `"Sheet1"` is sheet ID 0, then: 22767 # 22768 # `Sheet1!A1:A1 == sheet_id: 0, 22769 # start_row_index: 0, end_row_index: 1, 22770 # start_column_index: 0, end_column_index: 1` 22771 # 22772 # `Sheet1!A3:B4 == sheet_id: 0, 22773 # start_row_index: 2, end_row_index: 4, 22774 # start_column_index: 0, end_column_index: 2` 22775 # 22776 # `Sheet1!A:B == sheet_id: 0, 22777 # start_column_index: 0, end_column_index: 2` 22778 # 22779 # `Sheet1!A5:B == sheet_id: 0, 22780 # start_row_index: 4, 22781 # start_column_index: 0, end_column_index: 2` 22782 # 22783 # `Sheet1 == sheet_id:0` 22784 # 22785 # The start index must always be less than or equal to the end index. 22786 # If the start index equals the end index, then the range is empty. 22787 # Empty ranges are typically not meaningful and are usually rendered in the 22788 # UI as `#REF!`. 22789 "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded. 22790 "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded. 22791 "sheetId": 42, # The sheet this range is on. 22792 "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded. 22793 "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded. 22794 }, 22795 ], 22796 }, 22797 }, 22798 "domain": { # The data included in a domain or series. # The data that covers the domain of the pie chart. 22799 "sourceRange": { # Source ranges for a chart. # The source ranges of the data. 22800 "sources": [ # The ranges of data for a series or domain. 22801 # Exactly one dimension must have a length of 1, 22802 # and all sources in the list must have the same dimension 22803 # with length 1. 22804 # The domain (if it exists) & all series must have the same number 22805 # of source ranges. If using more than one source range, then the source 22806 # range at a given offset must be contiguous across the domain and series. 22807 # 22808 # For example, these are valid configurations: 22809 # 22810 # domain sources: A1:A5 22811 # series1 sources: B1:B5 22812 # series2 sources: D6:D10 22813 # 22814 # domain sources: A1:A5, C10:C12 22815 # series1 sources: B1:B5, D10:D12 22816 # series2 sources: C1:C5, E10:E12 22817 { # A range on a sheet. 22818 # All indexes are zero-based. 22819 # Indexes are half open, e.g the start index is inclusive 22820 # and the end index is exclusive -- [start_index, end_index). 22821 # Missing indexes indicate the range is unbounded on that side. 22822 # 22823 # For example, if `"Sheet1"` is sheet ID 0, then: 22824 # 22825 # `Sheet1!A1:A1 == sheet_id: 0, 22826 # start_row_index: 0, end_row_index: 1, 22827 # start_column_index: 0, end_column_index: 1` 22828 # 22829 # `Sheet1!A3:B4 == sheet_id: 0, 22830 # start_row_index: 2, end_row_index: 4, 22831 # start_column_index: 0, end_column_index: 2` 22832 # 22833 # `Sheet1!A:B == sheet_id: 0, 22834 # start_column_index: 0, end_column_index: 2` 22835 # 22836 # `Sheet1!A5:B == sheet_id: 0, 22837 # start_row_index: 4, 22838 # start_column_index: 0, end_column_index: 2` 22839 # 22840 # `Sheet1 == sheet_id:0` 22841 # 22842 # The start index must always be less than or equal to the end index. 22843 # If the start index equals the end index, then the range is empty. 22844 # Empty ranges are typically not meaningful and are usually rendered in the 22845 # UI as `#REF!`. 22846 "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded. 22847 "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded. 22848 "sheetId": 42, # The sheet this range is on. 22849 "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded. 22850 "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded. 22851 }, 22852 ], 22853 }, 22854 }, 22855 "threeDimensional": True or False, # True if the pie is three dimensional. 22856 "legendPosition": "A String", # Where the legend of the pie chart should be drawn. 22857 "pieHole": 3.14, # The size of the hole in the pie chart. 22858 }, 22859 "basicChart": { # The specification for a basic chart. See BasicChartType for the list # A basic chart specification, can be one of many kinds of charts. 22860 # See BasicChartType for the list of all 22861 # charts this supports. 22862 # of charts this supports. 22863 "headerCount": 42, # The number of rows or columns in the data that are "headers". 22864 # If not set, Google Sheets will guess how many rows are headers based 22865 # on the data. 22866 # 22867 # (Note that BasicChartAxis.title may override the axis title 22868 # inferred from the header values.) 22869 "series": [ # The data this chart is visualizing. 22870 { # A single series of data in a chart. 22871 # For example, if charting stock prices over time, multiple series may exist, 22872 # one for the "Open Price", "High Price", "Low Price" and "Close Price". 22873 "series": { # The data included in a domain or series. # The data being visualized in this chart series. 22874 "sourceRange": { # Source ranges for a chart. # The source ranges of the data. 22875 "sources": [ # The ranges of data for a series or domain. 22876 # Exactly one dimension must have a length of 1, 22877 # and all sources in the list must have the same dimension 22878 # with length 1. 22879 # The domain (if it exists) & all series must have the same number 22880 # of source ranges. If using more than one source range, then the source 22881 # range at a given offset must be contiguous across the domain and series. 22882 # 22883 # For example, these are valid configurations: 22884 # 22885 # domain sources: A1:A5 22886 # series1 sources: B1:B5 22887 # series2 sources: D6:D10 22888 # 22889 # domain sources: A1:A5, C10:C12 22890 # series1 sources: B1:B5, D10:D12 22891 # series2 sources: C1:C5, E10:E12 22892 { # A range on a sheet. 22893 # All indexes are zero-based. 22894 # Indexes are half open, e.g the start index is inclusive 22895 # and the end index is exclusive -- [start_index, end_index). 22896 # Missing indexes indicate the range is unbounded on that side. 22897 # 22898 # For example, if `"Sheet1"` is sheet ID 0, then: 22899 # 22900 # `Sheet1!A1:A1 == sheet_id: 0, 22901 # start_row_index: 0, end_row_index: 1, 22902 # start_column_index: 0, end_column_index: 1` 22903 # 22904 # `Sheet1!A3:B4 == sheet_id: 0, 22905 # start_row_index: 2, end_row_index: 4, 22906 # start_column_index: 0, end_column_index: 2` 22907 # 22908 # `Sheet1!A:B == sheet_id: 0, 22909 # start_column_index: 0, end_column_index: 2` 22910 # 22911 # `Sheet1!A5:B == sheet_id: 0, 22912 # start_row_index: 4, 22913 # start_column_index: 0, end_column_index: 2` 22914 # 22915 # `Sheet1 == sheet_id:0` 22916 # 22917 # The start index must always be less than or equal to the end index. 22918 # If the start index equals the end index, then the range is empty. 22919 # Empty ranges are typically not meaningful and are usually rendered in the 22920 # UI as `#REF!`. 22921 "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded. 22922 "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded. 22923 "sheetId": 42, # The sheet this range is on. 22924 "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded. 22925 "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded. 22926 }, 22927 ], 22928 }, 22929 }, 22930 "targetAxis": "A String", # The minor axis that will specify the range of values for this series. 22931 # For example, if charting stocks over time, the "Volume" series 22932 # may want to be pinned to the right with the prices pinned to the left, 22933 # because the scale of trading volume is different than the scale of 22934 # prices. 22935 # It is an error to specify an axis that isn't a valid minor axis 22936 # for the chart's type. 22937 "type": "A String", # The type of this series. Valid only if the 22938 # chartType is 22939 # COMBO. 22940 # Different types will change the way the series is visualized. 22941 # Only LINE, AREA, 22942 # and COLUMN are supported. 22943 }, 22944 ], 22945 "legendPosition": "A String", # The position of the chart legend. 22946 "domains": [ # The domain of data this is charting. 22947 # Only a single domain is supported. 22948 { # The domain of a chart. 22949 # For example, if charting stock prices over time, this would be the date. 22950 "domain": { # The data included in a domain or series. # The data of the domain. For example, if charting stock prices over time, 22951 # this is the data representing the dates. 22952 "sourceRange": { # Source ranges for a chart. # The source ranges of the data. 22953 "sources": [ # The ranges of data for a series or domain. 22954 # Exactly one dimension must have a length of 1, 22955 # and all sources in the list must have the same dimension 22956 # with length 1. 22957 # The domain (if it exists) & all series must have the same number 22958 # of source ranges. If using more than one source range, then the source 22959 # range at a given offset must be contiguous across the domain and series. 22960 # 22961 # For example, these are valid configurations: 22962 # 22963 # domain sources: A1:A5 22964 # series1 sources: B1:B5 22965 # series2 sources: D6:D10 22966 # 22967 # domain sources: A1:A5, C10:C12 22968 # series1 sources: B1:B5, D10:D12 22969 # series2 sources: C1:C5, E10:E12 22970 { # A range on a sheet. 22971 # All indexes are zero-based. 22972 # Indexes are half open, e.g the start index is inclusive 22973 # and the end index is exclusive -- [start_index, end_index). 22974 # Missing indexes indicate the range is unbounded on that side. 22975 # 22976 # For example, if `"Sheet1"` is sheet ID 0, then: 22977 # 22978 # `Sheet1!A1:A1 == sheet_id: 0, 22979 # start_row_index: 0, end_row_index: 1, 22980 # start_column_index: 0, end_column_index: 1` 22981 # 22982 # `Sheet1!A3:B4 == sheet_id: 0, 22983 # start_row_index: 2, end_row_index: 4, 22984 # start_column_index: 0, end_column_index: 2` 22985 # 22986 # `Sheet1!A:B == sheet_id: 0, 22987 # start_column_index: 0, end_column_index: 2` 22988 # 22989 # `Sheet1!A5:B == sheet_id: 0, 22990 # start_row_index: 4, 22991 # start_column_index: 0, end_column_index: 2` 22992 # 22993 # `Sheet1 == sheet_id:0` 22994 # 22995 # The start index must always be less than or equal to the end index. 22996 # If the start index equals the end index, then the range is empty. 22997 # Empty ranges are typically not meaningful and are usually rendered in the 22998 # UI as `#REF!`. 22999 "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded. 23000 "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded. 23001 "sheetId": 42, # The sheet this range is on. 23002 "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded. 23003 "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded. 23004 }, 23005 ], 23006 }, 23007 }, 23008 }, 23009 ], 23010 "chartType": "A String", # The type of the chart. 23011 "axis": [ # The axis on the chart. 23012 { # An axis of the chart. 23013 # A chart may not have more than one axis per 23014 # axis position. 23015 "position": "A String", # The position of this axis. 23016 "format": { # The format of a run of text in a cell. # The format of the title. 23017 # Only valid if the axis is not associated with the domain. 23018 # Absent values indicate that the field isn't specified. 23019 "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text. 23020 # for simplicity of conversion to/from color representations in various 23021 # languages over compactness; for example, the fields of this representation 23022 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 23023 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 23024 # method in iOS; and, with just a little work, it can be easily formatted into 23025 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 23026 # 23027 # Example (Java): 23028 # 23029 # import com.google.type.Color; 23030 # 23031 # // ... 23032 # public static java.awt.Color fromProto(Color protocolor) { 23033 # float alpha = protocolor.hasAlpha() 23034 # ? protocolor.getAlpha().getValue() 23035 # : 1.0; 23036 # 23037 # return new java.awt.Color( 23038 # protocolor.getRed(), 23039 # protocolor.getGreen(), 23040 # protocolor.getBlue(), 23041 # alpha); 23042 # } 23043 # 23044 # public static Color toProto(java.awt.Color color) { 23045 # float red = (float) color.getRed(); 23046 # float green = (float) color.getGreen(); 23047 # float blue = (float) color.getBlue(); 23048 # float denominator = 255.0; 23049 # Color.Builder resultBuilder = 23050 # Color 23051 # .newBuilder() 23052 # .setRed(red / denominator) 23053 # .setGreen(green / denominator) 23054 # .setBlue(blue / denominator); 23055 # int alpha = color.getAlpha(); 23056 # if (alpha != 255) { 23057 # result.setAlpha( 23058 # FloatValue 23059 # .newBuilder() 23060 # .setValue(((float) alpha) / denominator) 23061 # .build()); 23062 # } 23063 # return resultBuilder.build(); 23064 # } 23065 # // ... 23066 # 23067 # Example (iOS / Obj-C): 23068 # 23069 # // ... 23070 # static UIColor* fromProto(Color* protocolor) { 23071 # float red = [protocolor red]; 23072 # float green = [protocolor green]; 23073 # float blue = [protocolor blue]; 23074 # FloatValue* alpha_wrapper = [protocolor alpha]; 23075 # float alpha = 1.0; 23076 # if (alpha_wrapper != nil) { 23077 # alpha = [alpha_wrapper value]; 23078 # } 23079 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 23080 # } 23081 # 23082 # static Color* toProto(UIColor* color) { 23083 # CGFloat red, green, blue, alpha; 23084 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 23085 # return nil; 23086 # } 23087 # Color* result = [Color alloc] init]; 23088 # [result setRed:red]; 23089 # [result setGreen:green]; 23090 # [result setBlue:blue]; 23091 # if (alpha <= 0.9999) { 23092 # [result setAlpha:floatWrapperWithValue(alpha)]; 23093 # } 23094 # [result autorelease]; 23095 # return result; 23096 # } 23097 # // ... 23098 # 23099 # Example (JavaScript): 23100 # 23101 # // ... 23102 # 23103 # var protoToCssColor = function(rgb_color) { 23104 # var redFrac = rgb_color.red || 0.0; 23105 # var greenFrac = rgb_color.green || 0.0; 23106 # var blueFrac = rgb_color.blue || 0.0; 23107 # var red = Math.floor(redFrac * 255); 23108 # var green = Math.floor(greenFrac * 255); 23109 # var blue = Math.floor(blueFrac * 255); 23110 # 23111 # if (!('alpha' in rgb_color)) { 23112 # return rgbToCssColor_(red, green, blue); 23113 # } 23114 # 23115 # var alphaFrac = rgb_color.alpha.value || 0.0; 23116 # var rgbParams = [red, green, blue].join(','); 23117 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 23118 # }; 23119 # 23120 # var rgbToCssColor_ = function(red, green, blue) { 23121 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 23122 # var hexString = rgbNumber.toString(16); 23123 # var missingZeros = 6 - hexString.length; 23124 # var resultBuilder = ['#']; 23125 # for (var i = 0; i < missingZeros; i++) { 23126 # resultBuilder.push('0'); 23127 # } 23128 # resultBuilder.push(hexString); 23129 # return resultBuilder.join(''); 23130 # }; 23131 # 23132 # // ... 23133 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 23134 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 23135 # the final pixel color is defined by the equation: 23136 # 23137 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 23138 # 23139 # This means that a value of 1.0 corresponds to a solid color, whereas 23140 # a value of 0.0 corresponds to a completely transparent color. This 23141 # uses a wrapper message rather than a simple float scalar so that it is 23142 # possible to distinguish between a default value and the value being unset. 23143 # If omitted, this color object is to be rendered as a solid color 23144 # (as if the alpha value had been explicitly given with a value of 1.0). 23145 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 23146 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 23147 }, 23148 "bold": True or False, # True if the text is bold. 23149 "strikethrough": True or False, # True if the text has a strikethrough. 23150 "fontFamily": "A String", # The font family. 23151 "fontSize": 42, # The size of the font. 23152 "italic": True or False, # True if the text is italicized. 23153 "underline": True or False, # True if the text is underlined. 23154 }, 23155 "title": "A String", # The title of this axis. If set, this overrides any title inferred 23156 # from headers of the data. 23157 }, 23158 ], 23159 }, 23160 "title": "A String", # The title of the chart. 23161 }, 23162 }, 23163 }, 23164 "updateConditionalFormatRule": { # The result of updating a conditional format rule. # A reply from updating a conditional format rule. 23165 "oldIndex": 42, # The old index of the rule. Not set if a rule was replaced 23166 # (because it is the same as new_index). 23167 "newIndex": 42, # The index of the new rule. 23168 "oldRule": { # A rule describing a conditional format. # The old (deleted) rule. Not set if a rule was moved 23169 # (because it is the same as new_rule). 23170 "ranges": [ # The ranges that will be formatted if the condition is true. 23171 # All the ranges must be on the same grid. 23172 { # A range on a sheet. 23173 # All indexes are zero-based. 23174 # Indexes are half open, e.g the start index is inclusive 23175 # and the end index is exclusive -- [start_index, end_index). 23176 # Missing indexes indicate the range is unbounded on that side. 23177 # 23178 # For example, if `"Sheet1"` is sheet ID 0, then: 23179 # 23180 # `Sheet1!A1:A1 == sheet_id: 0, 23181 # start_row_index: 0, end_row_index: 1, 23182 # start_column_index: 0, end_column_index: 1` 23183 # 23184 # `Sheet1!A3:B4 == sheet_id: 0, 23185 # start_row_index: 2, end_row_index: 4, 23186 # start_column_index: 0, end_column_index: 2` 23187 # 23188 # `Sheet1!A:B == sheet_id: 0, 23189 # start_column_index: 0, end_column_index: 2` 23190 # 23191 # `Sheet1!A5:B == sheet_id: 0, 23192 # start_row_index: 4, 23193 # start_column_index: 0, end_column_index: 2` 23194 # 23195 # `Sheet1 == sheet_id:0` 23196 # 23197 # The start index must always be less than or equal to the end index. 23198 # If the start index equals the end index, then the range is empty. 23199 # Empty ranges are typically not meaningful and are usually rendered in the 23200 # UI as `#REF!`. 23201 "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded. 23202 "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded. 23203 "sheetId": 42, # The sheet this range is on. 23204 "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded. 23205 "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded. 23206 }, 23207 ], 23208 "booleanRule": { # A rule that may or may not match, depending on the condition. # The formatting is either "on" or "off" according to the rule. 23209 "condition": { # A condition that can evaluate to true or false. # The condition of the rule. If the condition evaluates to true, 23210 # the format will be applied. 23211 # BooleanConditions are used by conditional formatting, 23212 # data validation, and the criteria in filters. 23213 "values": [ # The values of the condition. The number of supported values depends 23214 # on the condition type. Some support zero values, 23215 # others one or two values, 23216 # and ConditionType.ONE_OF_LIST supports an arbitrary number of values. 23217 { # The value of the condition. 23218 "relativeDate": "A String", # A relative date (based on the current date). 23219 # Valid only if the type is 23220 # DATE_BEFORE, 23221 # DATE_AFTER, 23222 # DATE_ON_OR_BEFORE or 23223 # DATE_ON_OR_AFTER. 23224 # 23225 # Relative dates are not supported in data validation. 23226 # They are supported only in conditional formatting and 23227 # conditional filters. 23228 "userEnteredValue": "A String", # A value the condition is based on. 23229 # The value will be parsed as if the user typed into a cell. 23230 # Formulas are supported (and must begin with an `=`). 23231 }, 23232 ], 23233 "type": "A String", # The type of condition. 23234 }, 23235 "format": { # The format of a cell. # The format to apply. 23236 # Conditional formatting can only apply a subset of formatting: 23237 # bold, italic, 23238 # strikethrough, 23239 # foreground color & 23240 # background color. 23241 "numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user. 23242 "pattern": "A String", # Pattern string used for formatting. If not set, a default pattern based on 23243 # the user's locale will be used if necessary for the given type. 23244 # See the [Date and Number Formats guide](/sheets/api/guides/formats) for more 23245 # information about the supported patterns. 23246 "type": "A String", # The type of the number format. 23247 # When writing, this field must be set. 23248 }, 23249 "textDirection": "A String", # The direction of the text in the cell. 23250 "padding": { # The amount of padding around the cell, in pixels. # The padding of the cell. 23251 # When updating padding, every field must be specified. 23252 "top": 42, # The top padding of the cell. 23253 "right": 42, # The right padding of the cell. 23254 "bottom": 42, # The bottom padding of the cell. 23255 "left": 42, # The left padding of the cell. 23256 }, 23257 "verticalAlignment": "A String", # The vertical alignment of the value in the cell. 23258 "backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell. 23259 # for simplicity of conversion to/from color representations in various 23260 # languages over compactness; for example, the fields of this representation 23261 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 23262 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 23263 # method in iOS; and, with just a little work, it can be easily formatted into 23264 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 23265 # 23266 # Example (Java): 23267 # 23268 # import com.google.type.Color; 23269 # 23270 # // ... 23271 # public static java.awt.Color fromProto(Color protocolor) { 23272 # float alpha = protocolor.hasAlpha() 23273 # ? protocolor.getAlpha().getValue() 23274 # : 1.0; 23275 # 23276 # return new java.awt.Color( 23277 # protocolor.getRed(), 23278 # protocolor.getGreen(), 23279 # protocolor.getBlue(), 23280 # alpha); 23281 # } 23282 # 23283 # public static Color toProto(java.awt.Color color) { 23284 # float red = (float) color.getRed(); 23285 # float green = (float) color.getGreen(); 23286 # float blue = (float) color.getBlue(); 23287 # float denominator = 255.0; 23288 # Color.Builder resultBuilder = 23289 # Color 23290 # .newBuilder() 23291 # .setRed(red / denominator) 23292 # .setGreen(green / denominator) 23293 # .setBlue(blue / denominator); 23294 # int alpha = color.getAlpha(); 23295 # if (alpha != 255) { 23296 # result.setAlpha( 23297 # FloatValue 23298 # .newBuilder() 23299 # .setValue(((float) alpha) / denominator) 23300 # .build()); 23301 # } 23302 # return resultBuilder.build(); 23303 # } 23304 # // ... 23305 # 23306 # Example (iOS / Obj-C): 23307 # 23308 # // ... 23309 # static UIColor* fromProto(Color* protocolor) { 23310 # float red = [protocolor red]; 23311 # float green = [protocolor green]; 23312 # float blue = [protocolor blue]; 23313 # FloatValue* alpha_wrapper = [protocolor alpha]; 23314 # float alpha = 1.0; 23315 # if (alpha_wrapper != nil) { 23316 # alpha = [alpha_wrapper value]; 23317 # } 23318 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 23319 # } 23320 # 23321 # static Color* toProto(UIColor* color) { 23322 # CGFloat red, green, blue, alpha; 23323 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 23324 # return nil; 23325 # } 23326 # Color* result = [Color alloc] init]; 23327 # [result setRed:red]; 23328 # [result setGreen:green]; 23329 # [result setBlue:blue]; 23330 # if (alpha <= 0.9999) { 23331 # [result setAlpha:floatWrapperWithValue(alpha)]; 23332 # } 23333 # [result autorelease]; 23334 # return result; 23335 # } 23336 # // ... 23337 # 23338 # Example (JavaScript): 23339 # 23340 # // ... 23341 # 23342 # var protoToCssColor = function(rgb_color) { 23343 # var redFrac = rgb_color.red || 0.0; 23344 # var greenFrac = rgb_color.green || 0.0; 23345 # var blueFrac = rgb_color.blue || 0.0; 23346 # var red = Math.floor(redFrac * 255); 23347 # var green = Math.floor(greenFrac * 255); 23348 # var blue = Math.floor(blueFrac * 255); 23349 # 23350 # if (!('alpha' in rgb_color)) { 23351 # return rgbToCssColor_(red, green, blue); 23352 # } 23353 # 23354 # var alphaFrac = rgb_color.alpha.value || 0.0; 23355 # var rgbParams = [red, green, blue].join(','); 23356 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 23357 # }; 23358 # 23359 # var rgbToCssColor_ = function(red, green, blue) { 23360 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 23361 # var hexString = rgbNumber.toString(16); 23362 # var missingZeros = 6 - hexString.length; 23363 # var resultBuilder = ['#']; 23364 # for (var i = 0; i < missingZeros; i++) { 23365 # resultBuilder.push('0'); 23366 # } 23367 # resultBuilder.push(hexString); 23368 # return resultBuilder.join(''); 23369 # }; 23370 # 23371 # // ... 23372 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 23373 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 23374 # the final pixel color is defined by the equation: 23375 # 23376 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 23377 # 23378 # This means that a value of 1.0 corresponds to a solid color, whereas 23379 # a value of 0.0 corresponds to a completely transparent color. This 23380 # uses a wrapper message rather than a simple float scalar so that it is 23381 # possible to distinguish between a default value and the value being unset. 23382 # If omitted, this color object is to be rendered as a solid color 23383 # (as if the alpha value had been explicitly given with a value of 1.0). 23384 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 23385 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 23386 }, 23387 "horizontalAlignment": "A String", # The horizontal alignment of the value in the cell. 23388 "textFormat": { # The format of a run of text in a cell. # The format of the text in the cell (unless overridden by a format run). 23389 # Absent values indicate that the field isn't specified. 23390 "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text. 23391 # for simplicity of conversion to/from color representations in various 23392 # languages over compactness; for example, the fields of this representation 23393 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 23394 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 23395 # method in iOS; and, with just a little work, it can be easily formatted into 23396 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 23397 # 23398 # Example (Java): 23399 # 23400 # import com.google.type.Color; 23401 # 23402 # // ... 23403 # public static java.awt.Color fromProto(Color protocolor) { 23404 # float alpha = protocolor.hasAlpha() 23405 # ? protocolor.getAlpha().getValue() 23406 # : 1.0; 23407 # 23408 # return new java.awt.Color( 23409 # protocolor.getRed(), 23410 # protocolor.getGreen(), 23411 # protocolor.getBlue(), 23412 # alpha); 23413 # } 23414 # 23415 # public static Color toProto(java.awt.Color color) { 23416 # float red = (float) color.getRed(); 23417 # float green = (float) color.getGreen(); 23418 # float blue = (float) color.getBlue(); 23419 # float denominator = 255.0; 23420 # Color.Builder resultBuilder = 23421 # Color 23422 # .newBuilder() 23423 # .setRed(red / denominator) 23424 # .setGreen(green / denominator) 23425 # .setBlue(blue / denominator); 23426 # int alpha = color.getAlpha(); 23427 # if (alpha != 255) { 23428 # result.setAlpha( 23429 # FloatValue 23430 # .newBuilder() 23431 # .setValue(((float) alpha) / denominator) 23432 # .build()); 23433 # } 23434 # return resultBuilder.build(); 23435 # } 23436 # // ... 23437 # 23438 # Example (iOS / Obj-C): 23439 # 23440 # // ... 23441 # static UIColor* fromProto(Color* protocolor) { 23442 # float red = [protocolor red]; 23443 # float green = [protocolor green]; 23444 # float blue = [protocolor blue]; 23445 # FloatValue* alpha_wrapper = [protocolor alpha]; 23446 # float alpha = 1.0; 23447 # if (alpha_wrapper != nil) { 23448 # alpha = [alpha_wrapper value]; 23449 # } 23450 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 23451 # } 23452 # 23453 # static Color* toProto(UIColor* color) { 23454 # CGFloat red, green, blue, alpha; 23455 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 23456 # return nil; 23457 # } 23458 # Color* result = [Color alloc] init]; 23459 # [result setRed:red]; 23460 # [result setGreen:green]; 23461 # [result setBlue:blue]; 23462 # if (alpha <= 0.9999) { 23463 # [result setAlpha:floatWrapperWithValue(alpha)]; 23464 # } 23465 # [result autorelease]; 23466 # return result; 23467 # } 23468 # // ... 23469 # 23470 # Example (JavaScript): 23471 # 23472 # // ... 23473 # 23474 # var protoToCssColor = function(rgb_color) { 23475 # var redFrac = rgb_color.red || 0.0; 23476 # var greenFrac = rgb_color.green || 0.0; 23477 # var blueFrac = rgb_color.blue || 0.0; 23478 # var red = Math.floor(redFrac * 255); 23479 # var green = Math.floor(greenFrac * 255); 23480 # var blue = Math.floor(blueFrac * 255); 23481 # 23482 # if (!('alpha' in rgb_color)) { 23483 # return rgbToCssColor_(red, green, blue); 23484 # } 23485 # 23486 # var alphaFrac = rgb_color.alpha.value || 0.0; 23487 # var rgbParams = [red, green, blue].join(','); 23488 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 23489 # }; 23490 # 23491 # var rgbToCssColor_ = function(red, green, blue) { 23492 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 23493 # var hexString = rgbNumber.toString(16); 23494 # var missingZeros = 6 - hexString.length; 23495 # var resultBuilder = ['#']; 23496 # for (var i = 0; i < missingZeros; i++) { 23497 # resultBuilder.push('0'); 23498 # } 23499 # resultBuilder.push(hexString); 23500 # return resultBuilder.join(''); 23501 # }; 23502 # 23503 # // ... 23504 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 23505 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 23506 # the final pixel color is defined by the equation: 23507 # 23508 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 23509 # 23510 # This means that a value of 1.0 corresponds to a solid color, whereas 23511 # a value of 0.0 corresponds to a completely transparent color. This 23512 # uses a wrapper message rather than a simple float scalar so that it is 23513 # possible to distinguish between a default value and the value being unset. 23514 # If omitted, this color object is to be rendered as a solid color 23515 # (as if the alpha value had been explicitly given with a value of 1.0). 23516 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 23517 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 23518 }, 23519 "bold": True or False, # True if the text is bold. 23520 "strikethrough": True or False, # True if the text has a strikethrough. 23521 "fontFamily": "A String", # The font family. 23522 "fontSize": 42, # The size of the font. 23523 "italic": True or False, # True if the text is italicized. 23524 "underline": True or False, # True if the text is underlined. 23525 }, 23526 "textRotation": { # The rotation applied to text in a cell. # The rotation applied to text in a cell 23527 "angle": 42, # The angle between the standard orientation and the desired orientation. 23528 # Measured in degrees. Valid values are between -90 and 90. Positive 23529 # angles are angled upwards, negative are angled downwards. 23530 # 23531 # Note: For LTR text direction positive angles are in the counterclockwise 23532 # direction, whereas for RTL they are in the clockwise direction 23533 "vertical": True or False, # If true, text reads top to bottom, but the orientation of individual 23534 # characters is unchanged. 23535 # For example: 23536 # 23537 # | V | 23538 # | e | 23539 # | r | 23540 # | t | 23541 # | i | 23542 # | c | 23543 # | a | 23544 # | l | 23545 }, 23546 "hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell. 23547 "borders": { # The borders of the cell. # The borders of the cell. 23548 "top": { # A border along a cell. # The top border of the cell. 23549 "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border. 23550 # for simplicity of conversion to/from color representations in various 23551 # languages over compactness; for example, the fields of this representation 23552 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 23553 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 23554 # method in iOS; and, with just a little work, it can be easily formatted into 23555 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 23556 # 23557 # Example (Java): 23558 # 23559 # import com.google.type.Color; 23560 # 23561 # // ... 23562 # public static java.awt.Color fromProto(Color protocolor) { 23563 # float alpha = protocolor.hasAlpha() 23564 # ? protocolor.getAlpha().getValue() 23565 # : 1.0; 23566 # 23567 # return new java.awt.Color( 23568 # protocolor.getRed(), 23569 # protocolor.getGreen(), 23570 # protocolor.getBlue(), 23571 # alpha); 23572 # } 23573 # 23574 # public static Color toProto(java.awt.Color color) { 23575 # float red = (float) color.getRed(); 23576 # float green = (float) color.getGreen(); 23577 # float blue = (float) color.getBlue(); 23578 # float denominator = 255.0; 23579 # Color.Builder resultBuilder = 23580 # Color 23581 # .newBuilder() 23582 # .setRed(red / denominator) 23583 # .setGreen(green / denominator) 23584 # .setBlue(blue / denominator); 23585 # int alpha = color.getAlpha(); 23586 # if (alpha != 255) { 23587 # result.setAlpha( 23588 # FloatValue 23589 # .newBuilder() 23590 # .setValue(((float) alpha) / denominator) 23591 # .build()); 23592 # } 23593 # return resultBuilder.build(); 23594 # } 23595 # // ... 23596 # 23597 # Example (iOS / Obj-C): 23598 # 23599 # // ... 23600 # static UIColor* fromProto(Color* protocolor) { 23601 # float red = [protocolor red]; 23602 # float green = [protocolor green]; 23603 # float blue = [protocolor blue]; 23604 # FloatValue* alpha_wrapper = [protocolor alpha]; 23605 # float alpha = 1.0; 23606 # if (alpha_wrapper != nil) { 23607 # alpha = [alpha_wrapper value]; 23608 # } 23609 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 23610 # } 23611 # 23612 # static Color* toProto(UIColor* color) { 23613 # CGFloat red, green, blue, alpha; 23614 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 23615 # return nil; 23616 # } 23617 # Color* result = [Color alloc] init]; 23618 # [result setRed:red]; 23619 # [result setGreen:green]; 23620 # [result setBlue:blue]; 23621 # if (alpha <= 0.9999) { 23622 # [result setAlpha:floatWrapperWithValue(alpha)]; 23623 # } 23624 # [result autorelease]; 23625 # return result; 23626 # } 23627 # // ... 23628 # 23629 # Example (JavaScript): 23630 # 23631 # // ... 23632 # 23633 # var protoToCssColor = function(rgb_color) { 23634 # var redFrac = rgb_color.red || 0.0; 23635 # var greenFrac = rgb_color.green || 0.0; 23636 # var blueFrac = rgb_color.blue || 0.0; 23637 # var red = Math.floor(redFrac * 255); 23638 # var green = Math.floor(greenFrac * 255); 23639 # var blue = Math.floor(blueFrac * 255); 23640 # 23641 # if (!('alpha' in rgb_color)) { 23642 # return rgbToCssColor_(red, green, blue); 23643 # } 23644 # 23645 # var alphaFrac = rgb_color.alpha.value || 0.0; 23646 # var rgbParams = [red, green, blue].join(','); 23647 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 23648 # }; 23649 # 23650 # var rgbToCssColor_ = function(red, green, blue) { 23651 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 23652 # var hexString = rgbNumber.toString(16); 23653 # var missingZeros = 6 - hexString.length; 23654 # var resultBuilder = ['#']; 23655 # for (var i = 0; i < missingZeros; i++) { 23656 # resultBuilder.push('0'); 23657 # } 23658 # resultBuilder.push(hexString); 23659 # return resultBuilder.join(''); 23660 # }; 23661 # 23662 # // ... 23663 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 23664 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 23665 # the final pixel color is defined by the equation: 23666 # 23667 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 23668 # 23669 # This means that a value of 1.0 corresponds to a solid color, whereas 23670 # a value of 0.0 corresponds to a completely transparent color. This 23671 # uses a wrapper message rather than a simple float scalar so that it is 23672 # possible to distinguish between a default value and the value being unset. 23673 # If omitted, this color object is to be rendered as a solid color 23674 # (as if the alpha value had been explicitly given with a value of 1.0). 23675 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 23676 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 23677 }, 23678 "width": 42, # The width of the border, in pixels. 23679 # Deprecated; the width is determined by the "style" field. 23680 "style": "A String", # The style of the border. 23681 }, 23682 "right": { # A border along a cell. # The right border of the cell. 23683 "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border. 23684 # for simplicity of conversion to/from color representations in various 23685 # languages over compactness; for example, the fields of this representation 23686 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 23687 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 23688 # method in iOS; and, with just a little work, it can be easily formatted into 23689 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 23690 # 23691 # Example (Java): 23692 # 23693 # import com.google.type.Color; 23694 # 23695 # // ... 23696 # public static java.awt.Color fromProto(Color protocolor) { 23697 # float alpha = protocolor.hasAlpha() 23698 # ? protocolor.getAlpha().getValue() 23699 # : 1.0; 23700 # 23701 # return new java.awt.Color( 23702 # protocolor.getRed(), 23703 # protocolor.getGreen(), 23704 # protocolor.getBlue(), 23705 # alpha); 23706 # } 23707 # 23708 # public static Color toProto(java.awt.Color color) { 23709 # float red = (float) color.getRed(); 23710 # float green = (float) color.getGreen(); 23711 # float blue = (float) color.getBlue(); 23712 # float denominator = 255.0; 23713 # Color.Builder resultBuilder = 23714 # Color 23715 # .newBuilder() 23716 # .setRed(red / denominator) 23717 # .setGreen(green / denominator) 23718 # .setBlue(blue / denominator); 23719 # int alpha = color.getAlpha(); 23720 # if (alpha != 255) { 23721 # result.setAlpha( 23722 # FloatValue 23723 # .newBuilder() 23724 # .setValue(((float) alpha) / denominator) 23725 # .build()); 23726 # } 23727 # return resultBuilder.build(); 23728 # } 23729 # // ... 23730 # 23731 # Example (iOS / Obj-C): 23732 # 23733 # // ... 23734 # static UIColor* fromProto(Color* protocolor) { 23735 # float red = [protocolor red]; 23736 # float green = [protocolor green]; 23737 # float blue = [protocolor blue]; 23738 # FloatValue* alpha_wrapper = [protocolor alpha]; 23739 # float alpha = 1.0; 23740 # if (alpha_wrapper != nil) { 23741 # alpha = [alpha_wrapper value]; 23742 # } 23743 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 23744 # } 23745 # 23746 # static Color* toProto(UIColor* color) { 23747 # CGFloat red, green, blue, alpha; 23748 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 23749 # return nil; 23750 # } 23751 # Color* result = [Color alloc] init]; 23752 # [result setRed:red]; 23753 # [result setGreen:green]; 23754 # [result setBlue:blue]; 23755 # if (alpha <= 0.9999) { 23756 # [result setAlpha:floatWrapperWithValue(alpha)]; 23757 # } 23758 # [result autorelease]; 23759 # return result; 23760 # } 23761 # // ... 23762 # 23763 # Example (JavaScript): 23764 # 23765 # // ... 23766 # 23767 # var protoToCssColor = function(rgb_color) { 23768 # var redFrac = rgb_color.red || 0.0; 23769 # var greenFrac = rgb_color.green || 0.0; 23770 # var blueFrac = rgb_color.blue || 0.0; 23771 # var red = Math.floor(redFrac * 255); 23772 # var green = Math.floor(greenFrac * 255); 23773 # var blue = Math.floor(blueFrac * 255); 23774 # 23775 # if (!('alpha' in rgb_color)) { 23776 # return rgbToCssColor_(red, green, blue); 23777 # } 23778 # 23779 # var alphaFrac = rgb_color.alpha.value || 0.0; 23780 # var rgbParams = [red, green, blue].join(','); 23781 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 23782 # }; 23783 # 23784 # var rgbToCssColor_ = function(red, green, blue) { 23785 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 23786 # var hexString = rgbNumber.toString(16); 23787 # var missingZeros = 6 - hexString.length; 23788 # var resultBuilder = ['#']; 23789 # for (var i = 0; i < missingZeros; i++) { 23790 # resultBuilder.push('0'); 23791 # } 23792 # resultBuilder.push(hexString); 23793 # return resultBuilder.join(''); 23794 # }; 23795 # 23796 # // ... 23797 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 23798 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 23799 # the final pixel color is defined by the equation: 23800 # 23801 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 23802 # 23803 # This means that a value of 1.0 corresponds to a solid color, whereas 23804 # a value of 0.0 corresponds to a completely transparent color. This 23805 # uses a wrapper message rather than a simple float scalar so that it is 23806 # possible to distinguish between a default value and the value being unset. 23807 # If omitted, this color object is to be rendered as a solid color 23808 # (as if the alpha value had been explicitly given with a value of 1.0). 23809 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 23810 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 23811 }, 23812 "width": 42, # The width of the border, in pixels. 23813 # Deprecated; the width is determined by the "style" field. 23814 "style": "A String", # The style of the border. 23815 }, 23816 "bottom": { # A border along a cell. # The bottom border of the cell. 23817 "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border. 23818 # for simplicity of conversion to/from color representations in various 23819 # languages over compactness; for example, the fields of this representation 23820 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 23821 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 23822 # method in iOS; and, with just a little work, it can be easily formatted into 23823 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 23824 # 23825 # Example (Java): 23826 # 23827 # import com.google.type.Color; 23828 # 23829 # // ... 23830 # public static java.awt.Color fromProto(Color protocolor) { 23831 # float alpha = protocolor.hasAlpha() 23832 # ? protocolor.getAlpha().getValue() 23833 # : 1.0; 23834 # 23835 # return new java.awt.Color( 23836 # protocolor.getRed(), 23837 # protocolor.getGreen(), 23838 # protocolor.getBlue(), 23839 # alpha); 23840 # } 23841 # 23842 # public static Color toProto(java.awt.Color color) { 23843 # float red = (float) color.getRed(); 23844 # float green = (float) color.getGreen(); 23845 # float blue = (float) color.getBlue(); 23846 # float denominator = 255.0; 23847 # Color.Builder resultBuilder = 23848 # Color 23849 # .newBuilder() 23850 # .setRed(red / denominator) 23851 # .setGreen(green / denominator) 23852 # .setBlue(blue / denominator); 23853 # int alpha = color.getAlpha(); 23854 # if (alpha != 255) { 23855 # result.setAlpha( 23856 # FloatValue 23857 # .newBuilder() 23858 # .setValue(((float) alpha) / denominator) 23859 # .build()); 23860 # } 23861 # return resultBuilder.build(); 23862 # } 23863 # // ... 23864 # 23865 # Example (iOS / Obj-C): 23866 # 23867 # // ... 23868 # static UIColor* fromProto(Color* protocolor) { 23869 # float red = [protocolor red]; 23870 # float green = [protocolor green]; 23871 # float blue = [protocolor blue]; 23872 # FloatValue* alpha_wrapper = [protocolor alpha]; 23873 # float alpha = 1.0; 23874 # if (alpha_wrapper != nil) { 23875 # alpha = [alpha_wrapper value]; 23876 # } 23877 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 23878 # } 23879 # 23880 # static Color* toProto(UIColor* color) { 23881 # CGFloat red, green, blue, alpha; 23882 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 23883 # return nil; 23884 # } 23885 # Color* result = [Color alloc] init]; 23886 # [result setRed:red]; 23887 # [result setGreen:green]; 23888 # [result setBlue:blue]; 23889 # if (alpha <= 0.9999) { 23890 # [result setAlpha:floatWrapperWithValue(alpha)]; 23891 # } 23892 # [result autorelease]; 23893 # return result; 23894 # } 23895 # // ... 23896 # 23897 # Example (JavaScript): 23898 # 23899 # // ... 23900 # 23901 # var protoToCssColor = function(rgb_color) { 23902 # var redFrac = rgb_color.red || 0.0; 23903 # var greenFrac = rgb_color.green || 0.0; 23904 # var blueFrac = rgb_color.blue || 0.0; 23905 # var red = Math.floor(redFrac * 255); 23906 # var green = Math.floor(greenFrac * 255); 23907 # var blue = Math.floor(blueFrac * 255); 23908 # 23909 # if (!('alpha' in rgb_color)) { 23910 # return rgbToCssColor_(red, green, blue); 23911 # } 23912 # 23913 # var alphaFrac = rgb_color.alpha.value || 0.0; 23914 # var rgbParams = [red, green, blue].join(','); 23915 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 23916 # }; 23917 # 23918 # var rgbToCssColor_ = function(red, green, blue) { 23919 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 23920 # var hexString = rgbNumber.toString(16); 23921 # var missingZeros = 6 - hexString.length; 23922 # var resultBuilder = ['#']; 23923 # for (var i = 0; i < missingZeros; i++) { 23924 # resultBuilder.push('0'); 23925 # } 23926 # resultBuilder.push(hexString); 23927 # return resultBuilder.join(''); 23928 # }; 23929 # 23930 # // ... 23931 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 23932 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 23933 # the final pixel color is defined by the equation: 23934 # 23935 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 23936 # 23937 # This means that a value of 1.0 corresponds to a solid color, whereas 23938 # a value of 0.0 corresponds to a completely transparent color. This 23939 # uses a wrapper message rather than a simple float scalar so that it is 23940 # possible to distinguish between a default value and the value being unset. 23941 # If omitted, this color object is to be rendered as a solid color 23942 # (as if the alpha value had been explicitly given with a value of 1.0). 23943 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 23944 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 23945 }, 23946 "width": 42, # The width of the border, in pixels. 23947 # Deprecated; the width is determined by the "style" field. 23948 "style": "A String", # The style of the border. 23949 }, 23950 "left": { # A border along a cell. # The left border of the cell. 23951 "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border. 23952 # for simplicity of conversion to/from color representations in various 23953 # languages over compactness; for example, the fields of this representation 23954 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 23955 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 23956 # method in iOS; and, with just a little work, it can be easily formatted into 23957 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 23958 # 23959 # Example (Java): 23960 # 23961 # import com.google.type.Color; 23962 # 23963 # // ... 23964 # public static java.awt.Color fromProto(Color protocolor) { 23965 # float alpha = protocolor.hasAlpha() 23966 # ? protocolor.getAlpha().getValue() 23967 # : 1.0; 23968 # 23969 # return new java.awt.Color( 23970 # protocolor.getRed(), 23971 # protocolor.getGreen(), 23972 # protocolor.getBlue(), 23973 # alpha); 23974 # } 23975 # 23976 # public static Color toProto(java.awt.Color color) { 23977 # float red = (float) color.getRed(); 23978 # float green = (float) color.getGreen(); 23979 # float blue = (float) color.getBlue(); 23980 # float denominator = 255.0; 23981 # Color.Builder resultBuilder = 23982 # Color 23983 # .newBuilder() 23984 # .setRed(red / denominator) 23985 # .setGreen(green / denominator) 23986 # .setBlue(blue / denominator); 23987 # int alpha = color.getAlpha(); 23988 # if (alpha != 255) { 23989 # result.setAlpha( 23990 # FloatValue 23991 # .newBuilder() 23992 # .setValue(((float) alpha) / denominator) 23993 # .build()); 23994 # } 23995 # return resultBuilder.build(); 23996 # } 23997 # // ... 23998 # 23999 # Example (iOS / Obj-C): 24000 # 24001 # // ... 24002 # static UIColor* fromProto(Color* protocolor) { 24003 # float red = [protocolor red]; 24004 # float green = [protocolor green]; 24005 # float blue = [protocolor blue]; 24006 # FloatValue* alpha_wrapper = [protocolor alpha]; 24007 # float alpha = 1.0; 24008 # if (alpha_wrapper != nil) { 24009 # alpha = [alpha_wrapper value]; 24010 # } 24011 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 24012 # } 24013 # 24014 # static Color* toProto(UIColor* color) { 24015 # CGFloat red, green, blue, alpha; 24016 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 24017 # return nil; 24018 # } 24019 # Color* result = [Color alloc] init]; 24020 # [result setRed:red]; 24021 # [result setGreen:green]; 24022 # [result setBlue:blue]; 24023 # if (alpha <= 0.9999) { 24024 # [result setAlpha:floatWrapperWithValue(alpha)]; 24025 # } 24026 # [result autorelease]; 24027 # return result; 24028 # } 24029 # // ... 24030 # 24031 # Example (JavaScript): 24032 # 24033 # // ... 24034 # 24035 # var protoToCssColor = function(rgb_color) { 24036 # var redFrac = rgb_color.red || 0.0; 24037 # var greenFrac = rgb_color.green || 0.0; 24038 # var blueFrac = rgb_color.blue || 0.0; 24039 # var red = Math.floor(redFrac * 255); 24040 # var green = Math.floor(greenFrac * 255); 24041 # var blue = Math.floor(blueFrac * 255); 24042 # 24043 # if (!('alpha' in rgb_color)) { 24044 # return rgbToCssColor_(red, green, blue); 24045 # } 24046 # 24047 # var alphaFrac = rgb_color.alpha.value || 0.0; 24048 # var rgbParams = [red, green, blue].join(','); 24049 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 24050 # }; 24051 # 24052 # var rgbToCssColor_ = function(red, green, blue) { 24053 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 24054 # var hexString = rgbNumber.toString(16); 24055 # var missingZeros = 6 - hexString.length; 24056 # var resultBuilder = ['#']; 24057 # for (var i = 0; i < missingZeros; i++) { 24058 # resultBuilder.push('0'); 24059 # } 24060 # resultBuilder.push(hexString); 24061 # return resultBuilder.join(''); 24062 # }; 24063 # 24064 # // ... 24065 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 24066 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 24067 # the final pixel color is defined by the equation: 24068 # 24069 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 24070 # 24071 # This means that a value of 1.0 corresponds to a solid color, whereas 24072 # a value of 0.0 corresponds to a completely transparent color. This 24073 # uses a wrapper message rather than a simple float scalar so that it is 24074 # possible to distinguish between a default value and the value being unset. 24075 # If omitted, this color object is to be rendered as a solid color 24076 # (as if the alpha value had been explicitly given with a value of 1.0). 24077 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 24078 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 24079 }, 24080 "width": 42, # The width of the border, in pixels. 24081 # Deprecated; the width is determined by the "style" field. 24082 "style": "A String", # The style of the border. 24083 }, 24084 }, 24085 "wrapStrategy": "A String", # The wrap strategy for the value in the cell. 24086 }, 24087 }, 24088 "gradientRule": { # A rule that applies a gradient color scale format, based on # The formatting will vary based on the gradients in the rule. 24089 # the interpolation points listed. The format of a cell will vary 24090 # based on its contents as compared to the values of the interpolation 24091 # points. 24092 "maxpoint": { # A single interpolation point on a gradient conditional format. # The final interpolation point. 24093 # These pin the gradient color scale according to the color, 24094 # type and value chosen. 24095 "color": { # Represents a color in the RGBA color space. This representation is designed # The color this interpolation point should use. 24096 # for simplicity of conversion to/from color representations in various 24097 # languages over compactness; for example, the fields of this representation 24098 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 24099 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 24100 # method in iOS; and, with just a little work, it can be easily formatted into 24101 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 24102 # 24103 # Example (Java): 24104 # 24105 # import com.google.type.Color; 24106 # 24107 # // ... 24108 # public static java.awt.Color fromProto(Color protocolor) { 24109 # float alpha = protocolor.hasAlpha() 24110 # ? protocolor.getAlpha().getValue() 24111 # : 1.0; 24112 # 24113 # return new java.awt.Color( 24114 # protocolor.getRed(), 24115 # protocolor.getGreen(), 24116 # protocolor.getBlue(), 24117 # alpha); 24118 # } 24119 # 24120 # public static Color toProto(java.awt.Color color) { 24121 # float red = (float) color.getRed(); 24122 # float green = (float) color.getGreen(); 24123 # float blue = (float) color.getBlue(); 24124 # float denominator = 255.0; 24125 # Color.Builder resultBuilder = 24126 # Color 24127 # .newBuilder() 24128 # .setRed(red / denominator) 24129 # .setGreen(green / denominator) 24130 # .setBlue(blue / denominator); 24131 # int alpha = color.getAlpha(); 24132 # if (alpha != 255) { 24133 # result.setAlpha( 24134 # FloatValue 24135 # .newBuilder() 24136 # .setValue(((float) alpha) / denominator) 24137 # .build()); 24138 # } 24139 # return resultBuilder.build(); 24140 # } 24141 # // ... 24142 # 24143 # Example (iOS / Obj-C): 24144 # 24145 # // ... 24146 # static UIColor* fromProto(Color* protocolor) { 24147 # float red = [protocolor red]; 24148 # float green = [protocolor green]; 24149 # float blue = [protocolor blue]; 24150 # FloatValue* alpha_wrapper = [protocolor alpha]; 24151 # float alpha = 1.0; 24152 # if (alpha_wrapper != nil) { 24153 # alpha = [alpha_wrapper value]; 24154 # } 24155 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 24156 # } 24157 # 24158 # static Color* toProto(UIColor* color) { 24159 # CGFloat red, green, blue, alpha; 24160 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 24161 # return nil; 24162 # } 24163 # Color* result = [Color alloc] init]; 24164 # [result setRed:red]; 24165 # [result setGreen:green]; 24166 # [result setBlue:blue]; 24167 # if (alpha <= 0.9999) { 24168 # [result setAlpha:floatWrapperWithValue(alpha)]; 24169 # } 24170 # [result autorelease]; 24171 # return result; 24172 # } 24173 # // ... 24174 # 24175 # Example (JavaScript): 24176 # 24177 # // ... 24178 # 24179 # var protoToCssColor = function(rgb_color) { 24180 # var redFrac = rgb_color.red || 0.0; 24181 # var greenFrac = rgb_color.green || 0.0; 24182 # var blueFrac = rgb_color.blue || 0.0; 24183 # var red = Math.floor(redFrac * 255); 24184 # var green = Math.floor(greenFrac * 255); 24185 # var blue = Math.floor(blueFrac * 255); 24186 # 24187 # if (!('alpha' in rgb_color)) { 24188 # return rgbToCssColor_(red, green, blue); 24189 # } 24190 # 24191 # var alphaFrac = rgb_color.alpha.value || 0.0; 24192 # var rgbParams = [red, green, blue].join(','); 24193 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 24194 # }; 24195 # 24196 # var rgbToCssColor_ = function(red, green, blue) { 24197 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 24198 # var hexString = rgbNumber.toString(16); 24199 # var missingZeros = 6 - hexString.length; 24200 # var resultBuilder = ['#']; 24201 # for (var i = 0; i < missingZeros; i++) { 24202 # resultBuilder.push('0'); 24203 # } 24204 # resultBuilder.push(hexString); 24205 # return resultBuilder.join(''); 24206 # }; 24207 # 24208 # // ... 24209 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 24210 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 24211 # the final pixel color is defined by the equation: 24212 # 24213 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 24214 # 24215 # This means that a value of 1.0 corresponds to a solid color, whereas 24216 # a value of 0.0 corresponds to a completely transparent color. This 24217 # uses a wrapper message rather than a simple float scalar so that it is 24218 # possible to distinguish between a default value and the value being unset. 24219 # If omitted, this color object is to be rendered as a solid color 24220 # (as if the alpha value had been explicitly given with a value of 1.0). 24221 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 24222 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 24223 }, 24224 "type": "A String", # How the value should be interpreted. 24225 "value": "A String", # The value this interpolation point uses. May be a formula. 24226 # Unused if type is MIN or 24227 # MAX. 24228 }, 24229 "midpoint": { # A single interpolation point on a gradient conditional format. # An optional midway interpolation point. 24230 # These pin the gradient color scale according to the color, 24231 # type and value chosen. 24232 "color": { # Represents a color in the RGBA color space. This representation is designed # The color this interpolation point should use. 24233 # for simplicity of conversion to/from color representations in various 24234 # languages over compactness; for example, the fields of this representation 24235 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 24236 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 24237 # method in iOS; and, with just a little work, it can be easily formatted into 24238 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 24239 # 24240 # Example (Java): 24241 # 24242 # import com.google.type.Color; 24243 # 24244 # // ... 24245 # public static java.awt.Color fromProto(Color protocolor) { 24246 # float alpha = protocolor.hasAlpha() 24247 # ? protocolor.getAlpha().getValue() 24248 # : 1.0; 24249 # 24250 # return new java.awt.Color( 24251 # protocolor.getRed(), 24252 # protocolor.getGreen(), 24253 # protocolor.getBlue(), 24254 # alpha); 24255 # } 24256 # 24257 # public static Color toProto(java.awt.Color color) { 24258 # float red = (float) color.getRed(); 24259 # float green = (float) color.getGreen(); 24260 # float blue = (float) color.getBlue(); 24261 # float denominator = 255.0; 24262 # Color.Builder resultBuilder = 24263 # Color 24264 # .newBuilder() 24265 # .setRed(red / denominator) 24266 # .setGreen(green / denominator) 24267 # .setBlue(blue / denominator); 24268 # int alpha = color.getAlpha(); 24269 # if (alpha != 255) { 24270 # result.setAlpha( 24271 # FloatValue 24272 # .newBuilder() 24273 # .setValue(((float) alpha) / denominator) 24274 # .build()); 24275 # } 24276 # return resultBuilder.build(); 24277 # } 24278 # // ... 24279 # 24280 # Example (iOS / Obj-C): 24281 # 24282 # // ... 24283 # static UIColor* fromProto(Color* protocolor) { 24284 # float red = [protocolor red]; 24285 # float green = [protocolor green]; 24286 # float blue = [protocolor blue]; 24287 # FloatValue* alpha_wrapper = [protocolor alpha]; 24288 # float alpha = 1.0; 24289 # if (alpha_wrapper != nil) { 24290 # alpha = [alpha_wrapper value]; 24291 # } 24292 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 24293 # } 24294 # 24295 # static Color* toProto(UIColor* color) { 24296 # CGFloat red, green, blue, alpha; 24297 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 24298 # return nil; 24299 # } 24300 # Color* result = [Color alloc] init]; 24301 # [result setRed:red]; 24302 # [result setGreen:green]; 24303 # [result setBlue:blue]; 24304 # if (alpha <= 0.9999) { 24305 # [result setAlpha:floatWrapperWithValue(alpha)]; 24306 # } 24307 # [result autorelease]; 24308 # return result; 24309 # } 24310 # // ... 24311 # 24312 # Example (JavaScript): 24313 # 24314 # // ... 24315 # 24316 # var protoToCssColor = function(rgb_color) { 24317 # var redFrac = rgb_color.red || 0.0; 24318 # var greenFrac = rgb_color.green || 0.0; 24319 # var blueFrac = rgb_color.blue || 0.0; 24320 # var red = Math.floor(redFrac * 255); 24321 # var green = Math.floor(greenFrac * 255); 24322 # var blue = Math.floor(blueFrac * 255); 24323 # 24324 # if (!('alpha' in rgb_color)) { 24325 # return rgbToCssColor_(red, green, blue); 24326 # } 24327 # 24328 # var alphaFrac = rgb_color.alpha.value || 0.0; 24329 # var rgbParams = [red, green, blue].join(','); 24330 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 24331 # }; 24332 # 24333 # var rgbToCssColor_ = function(red, green, blue) { 24334 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 24335 # var hexString = rgbNumber.toString(16); 24336 # var missingZeros = 6 - hexString.length; 24337 # var resultBuilder = ['#']; 24338 # for (var i = 0; i < missingZeros; i++) { 24339 # resultBuilder.push('0'); 24340 # } 24341 # resultBuilder.push(hexString); 24342 # return resultBuilder.join(''); 24343 # }; 24344 # 24345 # // ... 24346 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 24347 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 24348 # the final pixel color is defined by the equation: 24349 # 24350 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 24351 # 24352 # This means that a value of 1.0 corresponds to a solid color, whereas 24353 # a value of 0.0 corresponds to a completely transparent color. This 24354 # uses a wrapper message rather than a simple float scalar so that it is 24355 # possible to distinguish between a default value and the value being unset. 24356 # If omitted, this color object is to be rendered as a solid color 24357 # (as if the alpha value had been explicitly given with a value of 1.0). 24358 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 24359 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 24360 }, 24361 "type": "A String", # How the value should be interpreted. 24362 "value": "A String", # The value this interpolation point uses. May be a formula. 24363 # Unused if type is MIN or 24364 # MAX. 24365 }, 24366 "minpoint": { # A single interpolation point on a gradient conditional format. # The starting interpolation point. 24367 # These pin the gradient color scale according to the color, 24368 # type and value chosen. 24369 "color": { # Represents a color in the RGBA color space. This representation is designed # The color this interpolation point should use. 24370 # for simplicity of conversion to/from color representations in various 24371 # languages over compactness; for example, the fields of this representation 24372 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 24373 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 24374 # method in iOS; and, with just a little work, it can be easily formatted into 24375 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 24376 # 24377 # Example (Java): 24378 # 24379 # import com.google.type.Color; 24380 # 24381 # // ... 24382 # public static java.awt.Color fromProto(Color protocolor) { 24383 # float alpha = protocolor.hasAlpha() 24384 # ? protocolor.getAlpha().getValue() 24385 # : 1.0; 24386 # 24387 # return new java.awt.Color( 24388 # protocolor.getRed(), 24389 # protocolor.getGreen(), 24390 # protocolor.getBlue(), 24391 # alpha); 24392 # } 24393 # 24394 # public static Color toProto(java.awt.Color color) { 24395 # float red = (float) color.getRed(); 24396 # float green = (float) color.getGreen(); 24397 # float blue = (float) color.getBlue(); 24398 # float denominator = 255.0; 24399 # Color.Builder resultBuilder = 24400 # Color 24401 # .newBuilder() 24402 # .setRed(red / denominator) 24403 # .setGreen(green / denominator) 24404 # .setBlue(blue / denominator); 24405 # int alpha = color.getAlpha(); 24406 # if (alpha != 255) { 24407 # result.setAlpha( 24408 # FloatValue 24409 # .newBuilder() 24410 # .setValue(((float) alpha) / denominator) 24411 # .build()); 24412 # } 24413 # return resultBuilder.build(); 24414 # } 24415 # // ... 24416 # 24417 # Example (iOS / Obj-C): 24418 # 24419 # // ... 24420 # static UIColor* fromProto(Color* protocolor) { 24421 # float red = [protocolor red]; 24422 # float green = [protocolor green]; 24423 # float blue = [protocolor blue]; 24424 # FloatValue* alpha_wrapper = [protocolor alpha]; 24425 # float alpha = 1.0; 24426 # if (alpha_wrapper != nil) { 24427 # alpha = [alpha_wrapper value]; 24428 # } 24429 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 24430 # } 24431 # 24432 # static Color* toProto(UIColor* color) { 24433 # CGFloat red, green, blue, alpha; 24434 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 24435 # return nil; 24436 # } 24437 # Color* result = [Color alloc] init]; 24438 # [result setRed:red]; 24439 # [result setGreen:green]; 24440 # [result setBlue:blue]; 24441 # if (alpha <= 0.9999) { 24442 # [result setAlpha:floatWrapperWithValue(alpha)]; 24443 # } 24444 # [result autorelease]; 24445 # return result; 24446 # } 24447 # // ... 24448 # 24449 # Example (JavaScript): 24450 # 24451 # // ... 24452 # 24453 # var protoToCssColor = function(rgb_color) { 24454 # var redFrac = rgb_color.red || 0.0; 24455 # var greenFrac = rgb_color.green || 0.0; 24456 # var blueFrac = rgb_color.blue || 0.0; 24457 # var red = Math.floor(redFrac * 255); 24458 # var green = Math.floor(greenFrac * 255); 24459 # var blue = Math.floor(blueFrac * 255); 24460 # 24461 # if (!('alpha' in rgb_color)) { 24462 # return rgbToCssColor_(red, green, blue); 24463 # } 24464 # 24465 # var alphaFrac = rgb_color.alpha.value || 0.0; 24466 # var rgbParams = [red, green, blue].join(','); 24467 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 24468 # }; 24469 # 24470 # var rgbToCssColor_ = function(red, green, blue) { 24471 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 24472 # var hexString = rgbNumber.toString(16); 24473 # var missingZeros = 6 - hexString.length; 24474 # var resultBuilder = ['#']; 24475 # for (var i = 0; i < missingZeros; i++) { 24476 # resultBuilder.push('0'); 24477 # } 24478 # resultBuilder.push(hexString); 24479 # return resultBuilder.join(''); 24480 # }; 24481 # 24482 # // ... 24483 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 24484 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 24485 # the final pixel color is defined by the equation: 24486 # 24487 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 24488 # 24489 # This means that a value of 1.0 corresponds to a solid color, whereas 24490 # a value of 0.0 corresponds to a completely transparent color. This 24491 # uses a wrapper message rather than a simple float scalar so that it is 24492 # possible to distinguish between a default value and the value being unset. 24493 # If omitted, this color object is to be rendered as a solid color 24494 # (as if the alpha value had been explicitly given with a value of 1.0). 24495 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 24496 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 24497 }, 24498 "type": "A String", # How the value should be interpreted. 24499 "value": "A String", # The value this interpolation point uses. May be a formula. 24500 # Unused if type is MIN or 24501 # MAX. 24502 }, 24503 }, 24504 }, 24505 "newRule": { # A rule describing a conditional format. # The new rule that replaced the old rule (if replacing), 24506 # or the rule that was moved (if moved) 24507 "ranges": [ # The ranges that will be formatted if the condition is true. 24508 # All the ranges must be on the same grid. 24509 { # A range on a sheet. 24510 # All indexes are zero-based. 24511 # Indexes are half open, e.g the start index is inclusive 24512 # and the end index is exclusive -- [start_index, end_index). 24513 # Missing indexes indicate the range is unbounded on that side. 24514 # 24515 # For example, if `"Sheet1"` is sheet ID 0, then: 24516 # 24517 # `Sheet1!A1:A1 == sheet_id: 0, 24518 # start_row_index: 0, end_row_index: 1, 24519 # start_column_index: 0, end_column_index: 1` 24520 # 24521 # `Sheet1!A3:B4 == sheet_id: 0, 24522 # start_row_index: 2, end_row_index: 4, 24523 # start_column_index: 0, end_column_index: 2` 24524 # 24525 # `Sheet1!A:B == sheet_id: 0, 24526 # start_column_index: 0, end_column_index: 2` 24527 # 24528 # `Sheet1!A5:B == sheet_id: 0, 24529 # start_row_index: 4, 24530 # start_column_index: 0, end_column_index: 2` 24531 # 24532 # `Sheet1 == sheet_id:0` 24533 # 24534 # The start index must always be less than or equal to the end index. 24535 # If the start index equals the end index, then the range is empty. 24536 # Empty ranges are typically not meaningful and are usually rendered in the 24537 # UI as `#REF!`. 24538 "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded. 24539 "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded. 24540 "sheetId": 42, # The sheet this range is on. 24541 "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded. 24542 "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded. 24543 }, 24544 ], 24545 "booleanRule": { # A rule that may or may not match, depending on the condition. # The formatting is either "on" or "off" according to the rule. 24546 "condition": { # A condition that can evaluate to true or false. # The condition of the rule. If the condition evaluates to true, 24547 # the format will be applied. 24548 # BooleanConditions are used by conditional formatting, 24549 # data validation, and the criteria in filters. 24550 "values": [ # The values of the condition. The number of supported values depends 24551 # on the condition type. Some support zero values, 24552 # others one or two values, 24553 # and ConditionType.ONE_OF_LIST supports an arbitrary number of values. 24554 { # The value of the condition. 24555 "relativeDate": "A String", # A relative date (based on the current date). 24556 # Valid only if the type is 24557 # DATE_BEFORE, 24558 # DATE_AFTER, 24559 # DATE_ON_OR_BEFORE or 24560 # DATE_ON_OR_AFTER. 24561 # 24562 # Relative dates are not supported in data validation. 24563 # They are supported only in conditional formatting and 24564 # conditional filters. 24565 "userEnteredValue": "A String", # A value the condition is based on. 24566 # The value will be parsed as if the user typed into a cell. 24567 # Formulas are supported (and must begin with an `=`). 24568 }, 24569 ], 24570 "type": "A String", # The type of condition. 24571 }, 24572 "format": { # The format of a cell. # The format to apply. 24573 # Conditional formatting can only apply a subset of formatting: 24574 # bold, italic, 24575 # strikethrough, 24576 # foreground color & 24577 # background color. 24578 "numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user. 24579 "pattern": "A String", # Pattern string used for formatting. If not set, a default pattern based on 24580 # the user's locale will be used if necessary for the given type. 24581 # See the [Date and Number Formats guide](/sheets/api/guides/formats) for more 24582 # information about the supported patterns. 24583 "type": "A String", # The type of the number format. 24584 # When writing, this field must be set. 24585 }, 24586 "textDirection": "A String", # The direction of the text in the cell. 24587 "padding": { # The amount of padding around the cell, in pixels. # The padding of the cell. 24588 # When updating padding, every field must be specified. 24589 "top": 42, # The top padding of the cell. 24590 "right": 42, # The right padding of the cell. 24591 "bottom": 42, # The bottom padding of the cell. 24592 "left": 42, # The left padding of the cell. 24593 }, 24594 "verticalAlignment": "A String", # The vertical alignment of the value in the cell. 24595 "backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell. 24596 # for simplicity of conversion to/from color representations in various 24597 # languages over compactness; for example, the fields of this representation 24598 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 24599 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 24600 # method in iOS; and, with just a little work, it can be easily formatted into 24601 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 24602 # 24603 # Example (Java): 24604 # 24605 # import com.google.type.Color; 24606 # 24607 # // ... 24608 # public static java.awt.Color fromProto(Color protocolor) { 24609 # float alpha = protocolor.hasAlpha() 24610 # ? protocolor.getAlpha().getValue() 24611 # : 1.0; 24612 # 24613 # return new java.awt.Color( 24614 # protocolor.getRed(), 24615 # protocolor.getGreen(), 24616 # protocolor.getBlue(), 24617 # alpha); 24618 # } 24619 # 24620 # public static Color toProto(java.awt.Color color) { 24621 # float red = (float) color.getRed(); 24622 # float green = (float) color.getGreen(); 24623 # float blue = (float) color.getBlue(); 24624 # float denominator = 255.0; 24625 # Color.Builder resultBuilder = 24626 # Color 24627 # .newBuilder() 24628 # .setRed(red / denominator) 24629 # .setGreen(green / denominator) 24630 # .setBlue(blue / denominator); 24631 # int alpha = color.getAlpha(); 24632 # if (alpha != 255) { 24633 # result.setAlpha( 24634 # FloatValue 24635 # .newBuilder() 24636 # .setValue(((float) alpha) / denominator) 24637 # .build()); 24638 # } 24639 # return resultBuilder.build(); 24640 # } 24641 # // ... 24642 # 24643 # Example (iOS / Obj-C): 24644 # 24645 # // ... 24646 # static UIColor* fromProto(Color* protocolor) { 24647 # float red = [protocolor red]; 24648 # float green = [protocolor green]; 24649 # float blue = [protocolor blue]; 24650 # FloatValue* alpha_wrapper = [protocolor alpha]; 24651 # float alpha = 1.0; 24652 # if (alpha_wrapper != nil) { 24653 # alpha = [alpha_wrapper value]; 24654 # } 24655 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 24656 # } 24657 # 24658 # static Color* toProto(UIColor* color) { 24659 # CGFloat red, green, blue, alpha; 24660 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 24661 # return nil; 24662 # } 24663 # Color* result = [Color alloc] init]; 24664 # [result setRed:red]; 24665 # [result setGreen:green]; 24666 # [result setBlue:blue]; 24667 # if (alpha <= 0.9999) { 24668 # [result setAlpha:floatWrapperWithValue(alpha)]; 24669 # } 24670 # [result autorelease]; 24671 # return result; 24672 # } 24673 # // ... 24674 # 24675 # Example (JavaScript): 24676 # 24677 # // ... 24678 # 24679 # var protoToCssColor = function(rgb_color) { 24680 # var redFrac = rgb_color.red || 0.0; 24681 # var greenFrac = rgb_color.green || 0.0; 24682 # var blueFrac = rgb_color.blue || 0.0; 24683 # var red = Math.floor(redFrac * 255); 24684 # var green = Math.floor(greenFrac * 255); 24685 # var blue = Math.floor(blueFrac * 255); 24686 # 24687 # if (!('alpha' in rgb_color)) { 24688 # return rgbToCssColor_(red, green, blue); 24689 # } 24690 # 24691 # var alphaFrac = rgb_color.alpha.value || 0.0; 24692 # var rgbParams = [red, green, blue].join(','); 24693 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 24694 # }; 24695 # 24696 # var rgbToCssColor_ = function(red, green, blue) { 24697 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 24698 # var hexString = rgbNumber.toString(16); 24699 # var missingZeros = 6 - hexString.length; 24700 # var resultBuilder = ['#']; 24701 # for (var i = 0; i < missingZeros; i++) { 24702 # resultBuilder.push('0'); 24703 # } 24704 # resultBuilder.push(hexString); 24705 # return resultBuilder.join(''); 24706 # }; 24707 # 24708 # // ... 24709 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 24710 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 24711 # the final pixel color is defined by the equation: 24712 # 24713 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 24714 # 24715 # This means that a value of 1.0 corresponds to a solid color, whereas 24716 # a value of 0.0 corresponds to a completely transparent color. This 24717 # uses a wrapper message rather than a simple float scalar so that it is 24718 # possible to distinguish between a default value and the value being unset. 24719 # If omitted, this color object is to be rendered as a solid color 24720 # (as if the alpha value had been explicitly given with a value of 1.0). 24721 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 24722 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 24723 }, 24724 "horizontalAlignment": "A String", # The horizontal alignment of the value in the cell. 24725 "textFormat": { # The format of a run of text in a cell. # The format of the text in the cell (unless overridden by a format run). 24726 # Absent values indicate that the field isn't specified. 24727 "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text. 24728 # for simplicity of conversion to/from color representations in various 24729 # languages over compactness; for example, the fields of this representation 24730 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 24731 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 24732 # method in iOS; and, with just a little work, it can be easily formatted into 24733 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 24734 # 24735 # Example (Java): 24736 # 24737 # import com.google.type.Color; 24738 # 24739 # // ... 24740 # public static java.awt.Color fromProto(Color protocolor) { 24741 # float alpha = protocolor.hasAlpha() 24742 # ? protocolor.getAlpha().getValue() 24743 # : 1.0; 24744 # 24745 # return new java.awt.Color( 24746 # protocolor.getRed(), 24747 # protocolor.getGreen(), 24748 # protocolor.getBlue(), 24749 # alpha); 24750 # } 24751 # 24752 # public static Color toProto(java.awt.Color color) { 24753 # float red = (float) color.getRed(); 24754 # float green = (float) color.getGreen(); 24755 # float blue = (float) color.getBlue(); 24756 # float denominator = 255.0; 24757 # Color.Builder resultBuilder = 24758 # Color 24759 # .newBuilder() 24760 # .setRed(red / denominator) 24761 # .setGreen(green / denominator) 24762 # .setBlue(blue / denominator); 24763 # int alpha = color.getAlpha(); 24764 # if (alpha != 255) { 24765 # result.setAlpha( 24766 # FloatValue 24767 # .newBuilder() 24768 # .setValue(((float) alpha) / denominator) 24769 # .build()); 24770 # } 24771 # return resultBuilder.build(); 24772 # } 24773 # // ... 24774 # 24775 # Example (iOS / Obj-C): 24776 # 24777 # // ... 24778 # static UIColor* fromProto(Color* protocolor) { 24779 # float red = [protocolor red]; 24780 # float green = [protocolor green]; 24781 # float blue = [protocolor blue]; 24782 # FloatValue* alpha_wrapper = [protocolor alpha]; 24783 # float alpha = 1.0; 24784 # if (alpha_wrapper != nil) { 24785 # alpha = [alpha_wrapper value]; 24786 # } 24787 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 24788 # } 24789 # 24790 # static Color* toProto(UIColor* color) { 24791 # CGFloat red, green, blue, alpha; 24792 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 24793 # return nil; 24794 # } 24795 # Color* result = [Color alloc] init]; 24796 # [result setRed:red]; 24797 # [result setGreen:green]; 24798 # [result setBlue:blue]; 24799 # if (alpha <= 0.9999) { 24800 # [result setAlpha:floatWrapperWithValue(alpha)]; 24801 # } 24802 # [result autorelease]; 24803 # return result; 24804 # } 24805 # // ... 24806 # 24807 # Example (JavaScript): 24808 # 24809 # // ... 24810 # 24811 # var protoToCssColor = function(rgb_color) { 24812 # var redFrac = rgb_color.red || 0.0; 24813 # var greenFrac = rgb_color.green || 0.0; 24814 # var blueFrac = rgb_color.blue || 0.0; 24815 # var red = Math.floor(redFrac * 255); 24816 # var green = Math.floor(greenFrac * 255); 24817 # var blue = Math.floor(blueFrac * 255); 24818 # 24819 # if (!('alpha' in rgb_color)) { 24820 # return rgbToCssColor_(red, green, blue); 24821 # } 24822 # 24823 # var alphaFrac = rgb_color.alpha.value || 0.0; 24824 # var rgbParams = [red, green, blue].join(','); 24825 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 24826 # }; 24827 # 24828 # var rgbToCssColor_ = function(red, green, blue) { 24829 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 24830 # var hexString = rgbNumber.toString(16); 24831 # var missingZeros = 6 - hexString.length; 24832 # var resultBuilder = ['#']; 24833 # for (var i = 0; i < missingZeros; i++) { 24834 # resultBuilder.push('0'); 24835 # } 24836 # resultBuilder.push(hexString); 24837 # return resultBuilder.join(''); 24838 # }; 24839 # 24840 # // ... 24841 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 24842 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 24843 # the final pixel color is defined by the equation: 24844 # 24845 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 24846 # 24847 # This means that a value of 1.0 corresponds to a solid color, whereas 24848 # a value of 0.0 corresponds to a completely transparent color. This 24849 # uses a wrapper message rather than a simple float scalar so that it is 24850 # possible to distinguish between a default value and the value being unset. 24851 # If omitted, this color object is to be rendered as a solid color 24852 # (as if the alpha value had been explicitly given with a value of 1.0). 24853 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 24854 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 24855 }, 24856 "bold": True or False, # True if the text is bold. 24857 "strikethrough": True or False, # True if the text has a strikethrough. 24858 "fontFamily": "A String", # The font family. 24859 "fontSize": 42, # The size of the font. 24860 "italic": True or False, # True if the text is italicized. 24861 "underline": True or False, # True if the text is underlined. 24862 }, 24863 "textRotation": { # The rotation applied to text in a cell. # The rotation applied to text in a cell 24864 "angle": 42, # The angle between the standard orientation and the desired orientation. 24865 # Measured in degrees. Valid values are between -90 and 90. Positive 24866 # angles are angled upwards, negative are angled downwards. 24867 # 24868 # Note: For LTR text direction positive angles are in the counterclockwise 24869 # direction, whereas for RTL they are in the clockwise direction 24870 "vertical": True or False, # If true, text reads top to bottom, but the orientation of individual 24871 # characters is unchanged. 24872 # For example: 24873 # 24874 # | V | 24875 # | e | 24876 # | r | 24877 # | t | 24878 # | i | 24879 # | c | 24880 # | a | 24881 # | l | 24882 }, 24883 "hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell. 24884 "borders": { # The borders of the cell. # The borders of the cell. 24885 "top": { # A border along a cell. # The top border of the cell. 24886 "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border. 24887 # for simplicity of conversion to/from color representations in various 24888 # languages over compactness; for example, the fields of this representation 24889 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 24890 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 24891 # method in iOS; and, with just a little work, it can be easily formatted into 24892 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 24893 # 24894 # Example (Java): 24895 # 24896 # import com.google.type.Color; 24897 # 24898 # // ... 24899 # public static java.awt.Color fromProto(Color protocolor) { 24900 # float alpha = protocolor.hasAlpha() 24901 # ? protocolor.getAlpha().getValue() 24902 # : 1.0; 24903 # 24904 # return new java.awt.Color( 24905 # protocolor.getRed(), 24906 # protocolor.getGreen(), 24907 # protocolor.getBlue(), 24908 # alpha); 24909 # } 24910 # 24911 # public static Color toProto(java.awt.Color color) { 24912 # float red = (float) color.getRed(); 24913 # float green = (float) color.getGreen(); 24914 # float blue = (float) color.getBlue(); 24915 # float denominator = 255.0; 24916 # Color.Builder resultBuilder = 24917 # Color 24918 # .newBuilder() 24919 # .setRed(red / denominator) 24920 # .setGreen(green / denominator) 24921 # .setBlue(blue / denominator); 24922 # int alpha = color.getAlpha(); 24923 # if (alpha != 255) { 24924 # result.setAlpha( 24925 # FloatValue 24926 # .newBuilder() 24927 # .setValue(((float) alpha) / denominator) 24928 # .build()); 24929 # } 24930 # return resultBuilder.build(); 24931 # } 24932 # // ... 24933 # 24934 # Example (iOS / Obj-C): 24935 # 24936 # // ... 24937 # static UIColor* fromProto(Color* protocolor) { 24938 # float red = [protocolor red]; 24939 # float green = [protocolor green]; 24940 # float blue = [protocolor blue]; 24941 # FloatValue* alpha_wrapper = [protocolor alpha]; 24942 # float alpha = 1.0; 24943 # if (alpha_wrapper != nil) { 24944 # alpha = [alpha_wrapper value]; 24945 # } 24946 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 24947 # } 24948 # 24949 # static Color* toProto(UIColor* color) { 24950 # CGFloat red, green, blue, alpha; 24951 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 24952 # return nil; 24953 # } 24954 # Color* result = [Color alloc] init]; 24955 # [result setRed:red]; 24956 # [result setGreen:green]; 24957 # [result setBlue:blue]; 24958 # if (alpha <= 0.9999) { 24959 # [result setAlpha:floatWrapperWithValue(alpha)]; 24960 # } 24961 # [result autorelease]; 24962 # return result; 24963 # } 24964 # // ... 24965 # 24966 # Example (JavaScript): 24967 # 24968 # // ... 24969 # 24970 # var protoToCssColor = function(rgb_color) { 24971 # var redFrac = rgb_color.red || 0.0; 24972 # var greenFrac = rgb_color.green || 0.0; 24973 # var blueFrac = rgb_color.blue || 0.0; 24974 # var red = Math.floor(redFrac * 255); 24975 # var green = Math.floor(greenFrac * 255); 24976 # var blue = Math.floor(blueFrac * 255); 24977 # 24978 # if (!('alpha' in rgb_color)) { 24979 # return rgbToCssColor_(red, green, blue); 24980 # } 24981 # 24982 # var alphaFrac = rgb_color.alpha.value || 0.0; 24983 # var rgbParams = [red, green, blue].join(','); 24984 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 24985 # }; 24986 # 24987 # var rgbToCssColor_ = function(red, green, blue) { 24988 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 24989 # var hexString = rgbNumber.toString(16); 24990 # var missingZeros = 6 - hexString.length; 24991 # var resultBuilder = ['#']; 24992 # for (var i = 0; i < missingZeros; i++) { 24993 # resultBuilder.push('0'); 24994 # } 24995 # resultBuilder.push(hexString); 24996 # return resultBuilder.join(''); 24997 # }; 24998 # 24999 # // ... 25000 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 25001 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 25002 # the final pixel color is defined by the equation: 25003 # 25004 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 25005 # 25006 # This means that a value of 1.0 corresponds to a solid color, whereas 25007 # a value of 0.0 corresponds to a completely transparent color. This 25008 # uses a wrapper message rather than a simple float scalar so that it is 25009 # possible to distinguish between a default value and the value being unset. 25010 # If omitted, this color object is to be rendered as a solid color 25011 # (as if the alpha value had been explicitly given with a value of 1.0). 25012 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 25013 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 25014 }, 25015 "width": 42, # The width of the border, in pixels. 25016 # Deprecated; the width is determined by the "style" field. 25017 "style": "A String", # The style of the border. 25018 }, 25019 "right": { # A border along a cell. # The right border of the cell. 25020 "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border. 25021 # for simplicity of conversion to/from color representations in various 25022 # languages over compactness; for example, the fields of this representation 25023 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 25024 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 25025 # method in iOS; and, with just a little work, it can be easily formatted into 25026 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 25027 # 25028 # Example (Java): 25029 # 25030 # import com.google.type.Color; 25031 # 25032 # // ... 25033 # public static java.awt.Color fromProto(Color protocolor) { 25034 # float alpha = protocolor.hasAlpha() 25035 # ? protocolor.getAlpha().getValue() 25036 # : 1.0; 25037 # 25038 # return new java.awt.Color( 25039 # protocolor.getRed(), 25040 # protocolor.getGreen(), 25041 # protocolor.getBlue(), 25042 # alpha); 25043 # } 25044 # 25045 # public static Color toProto(java.awt.Color color) { 25046 # float red = (float) color.getRed(); 25047 # float green = (float) color.getGreen(); 25048 # float blue = (float) color.getBlue(); 25049 # float denominator = 255.0; 25050 # Color.Builder resultBuilder = 25051 # Color 25052 # .newBuilder() 25053 # .setRed(red / denominator) 25054 # .setGreen(green / denominator) 25055 # .setBlue(blue / denominator); 25056 # int alpha = color.getAlpha(); 25057 # if (alpha != 255) { 25058 # result.setAlpha( 25059 # FloatValue 25060 # .newBuilder() 25061 # .setValue(((float) alpha) / denominator) 25062 # .build()); 25063 # } 25064 # return resultBuilder.build(); 25065 # } 25066 # // ... 25067 # 25068 # Example (iOS / Obj-C): 25069 # 25070 # // ... 25071 # static UIColor* fromProto(Color* protocolor) { 25072 # float red = [protocolor red]; 25073 # float green = [protocolor green]; 25074 # float blue = [protocolor blue]; 25075 # FloatValue* alpha_wrapper = [protocolor alpha]; 25076 # float alpha = 1.0; 25077 # if (alpha_wrapper != nil) { 25078 # alpha = [alpha_wrapper value]; 25079 # } 25080 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 25081 # } 25082 # 25083 # static Color* toProto(UIColor* color) { 25084 # CGFloat red, green, blue, alpha; 25085 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 25086 # return nil; 25087 # } 25088 # Color* result = [Color alloc] init]; 25089 # [result setRed:red]; 25090 # [result setGreen:green]; 25091 # [result setBlue:blue]; 25092 # if (alpha <= 0.9999) { 25093 # [result setAlpha:floatWrapperWithValue(alpha)]; 25094 # } 25095 # [result autorelease]; 25096 # return result; 25097 # } 25098 # // ... 25099 # 25100 # Example (JavaScript): 25101 # 25102 # // ... 25103 # 25104 # var protoToCssColor = function(rgb_color) { 25105 # var redFrac = rgb_color.red || 0.0; 25106 # var greenFrac = rgb_color.green || 0.0; 25107 # var blueFrac = rgb_color.blue || 0.0; 25108 # var red = Math.floor(redFrac * 255); 25109 # var green = Math.floor(greenFrac * 255); 25110 # var blue = Math.floor(blueFrac * 255); 25111 # 25112 # if (!('alpha' in rgb_color)) { 25113 # return rgbToCssColor_(red, green, blue); 25114 # } 25115 # 25116 # var alphaFrac = rgb_color.alpha.value || 0.0; 25117 # var rgbParams = [red, green, blue].join(','); 25118 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 25119 # }; 25120 # 25121 # var rgbToCssColor_ = function(red, green, blue) { 25122 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 25123 # var hexString = rgbNumber.toString(16); 25124 # var missingZeros = 6 - hexString.length; 25125 # var resultBuilder = ['#']; 25126 # for (var i = 0; i < missingZeros; i++) { 25127 # resultBuilder.push('0'); 25128 # } 25129 # resultBuilder.push(hexString); 25130 # return resultBuilder.join(''); 25131 # }; 25132 # 25133 # // ... 25134 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 25135 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 25136 # the final pixel color is defined by the equation: 25137 # 25138 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 25139 # 25140 # This means that a value of 1.0 corresponds to a solid color, whereas 25141 # a value of 0.0 corresponds to a completely transparent color. This 25142 # uses a wrapper message rather than a simple float scalar so that it is 25143 # possible to distinguish between a default value and the value being unset. 25144 # If omitted, this color object is to be rendered as a solid color 25145 # (as if the alpha value had been explicitly given with a value of 1.0). 25146 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 25147 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 25148 }, 25149 "width": 42, # The width of the border, in pixels. 25150 # Deprecated; the width is determined by the "style" field. 25151 "style": "A String", # The style of the border. 25152 }, 25153 "bottom": { # A border along a cell. # The bottom border of the cell. 25154 "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border. 25155 # for simplicity of conversion to/from color representations in various 25156 # languages over compactness; for example, the fields of this representation 25157 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 25158 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 25159 # method in iOS; and, with just a little work, it can be easily formatted into 25160 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 25161 # 25162 # Example (Java): 25163 # 25164 # import com.google.type.Color; 25165 # 25166 # // ... 25167 # public static java.awt.Color fromProto(Color protocolor) { 25168 # float alpha = protocolor.hasAlpha() 25169 # ? protocolor.getAlpha().getValue() 25170 # : 1.0; 25171 # 25172 # return new java.awt.Color( 25173 # protocolor.getRed(), 25174 # protocolor.getGreen(), 25175 # protocolor.getBlue(), 25176 # alpha); 25177 # } 25178 # 25179 # public static Color toProto(java.awt.Color color) { 25180 # float red = (float) color.getRed(); 25181 # float green = (float) color.getGreen(); 25182 # float blue = (float) color.getBlue(); 25183 # float denominator = 255.0; 25184 # Color.Builder resultBuilder = 25185 # Color 25186 # .newBuilder() 25187 # .setRed(red / denominator) 25188 # .setGreen(green / denominator) 25189 # .setBlue(blue / denominator); 25190 # int alpha = color.getAlpha(); 25191 # if (alpha != 255) { 25192 # result.setAlpha( 25193 # FloatValue 25194 # .newBuilder() 25195 # .setValue(((float) alpha) / denominator) 25196 # .build()); 25197 # } 25198 # return resultBuilder.build(); 25199 # } 25200 # // ... 25201 # 25202 # Example (iOS / Obj-C): 25203 # 25204 # // ... 25205 # static UIColor* fromProto(Color* protocolor) { 25206 # float red = [protocolor red]; 25207 # float green = [protocolor green]; 25208 # float blue = [protocolor blue]; 25209 # FloatValue* alpha_wrapper = [protocolor alpha]; 25210 # float alpha = 1.0; 25211 # if (alpha_wrapper != nil) { 25212 # alpha = [alpha_wrapper value]; 25213 # } 25214 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 25215 # } 25216 # 25217 # static Color* toProto(UIColor* color) { 25218 # CGFloat red, green, blue, alpha; 25219 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 25220 # return nil; 25221 # } 25222 # Color* result = [Color alloc] init]; 25223 # [result setRed:red]; 25224 # [result setGreen:green]; 25225 # [result setBlue:blue]; 25226 # if (alpha <= 0.9999) { 25227 # [result setAlpha:floatWrapperWithValue(alpha)]; 25228 # } 25229 # [result autorelease]; 25230 # return result; 25231 # } 25232 # // ... 25233 # 25234 # Example (JavaScript): 25235 # 25236 # // ... 25237 # 25238 # var protoToCssColor = function(rgb_color) { 25239 # var redFrac = rgb_color.red || 0.0; 25240 # var greenFrac = rgb_color.green || 0.0; 25241 # var blueFrac = rgb_color.blue || 0.0; 25242 # var red = Math.floor(redFrac * 255); 25243 # var green = Math.floor(greenFrac * 255); 25244 # var blue = Math.floor(blueFrac * 255); 25245 # 25246 # if (!('alpha' in rgb_color)) { 25247 # return rgbToCssColor_(red, green, blue); 25248 # } 25249 # 25250 # var alphaFrac = rgb_color.alpha.value || 0.0; 25251 # var rgbParams = [red, green, blue].join(','); 25252 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 25253 # }; 25254 # 25255 # var rgbToCssColor_ = function(red, green, blue) { 25256 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 25257 # var hexString = rgbNumber.toString(16); 25258 # var missingZeros = 6 - hexString.length; 25259 # var resultBuilder = ['#']; 25260 # for (var i = 0; i < missingZeros; i++) { 25261 # resultBuilder.push('0'); 25262 # } 25263 # resultBuilder.push(hexString); 25264 # return resultBuilder.join(''); 25265 # }; 25266 # 25267 # // ... 25268 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 25269 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 25270 # the final pixel color is defined by the equation: 25271 # 25272 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 25273 # 25274 # This means that a value of 1.0 corresponds to a solid color, whereas 25275 # a value of 0.0 corresponds to a completely transparent color. This 25276 # uses a wrapper message rather than a simple float scalar so that it is 25277 # possible to distinguish between a default value and the value being unset. 25278 # If omitted, this color object is to be rendered as a solid color 25279 # (as if the alpha value had been explicitly given with a value of 1.0). 25280 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 25281 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 25282 }, 25283 "width": 42, # The width of the border, in pixels. 25284 # Deprecated; the width is determined by the "style" field. 25285 "style": "A String", # The style of the border. 25286 }, 25287 "left": { # A border along a cell. # The left border of the cell. 25288 "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border. 25289 # for simplicity of conversion to/from color representations in various 25290 # languages over compactness; for example, the fields of this representation 25291 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 25292 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 25293 # method in iOS; and, with just a little work, it can be easily formatted into 25294 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 25295 # 25296 # Example (Java): 25297 # 25298 # import com.google.type.Color; 25299 # 25300 # // ... 25301 # public static java.awt.Color fromProto(Color protocolor) { 25302 # float alpha = protocolor.hasAlpha() 25303 # ? protocolor.getAlpha().getValue() 25304 # : 1.0; 25305 # 25306 # return new java.awt.Color( 25307 # protocolor.getRed(), 25308 # protocolor.getGreen(), 25309 # protocolor.getBlue(), 25310 # alpha); 25311 # } 25312 # 25313 # public static Color toProto(java.awt.Color color) { 25314 # float red = (float) color.getRed(); 25315 # float green = (float) color.getGreen(); 25316 # float blue = (float) color.getBlue(); 25317 # float denominator = 255.0; 25318 # Color.Builder resultBuilder = 25319 # Color 25320 # .newBuilder() 25321 # .setRed(red / denominator) 25322 # .setGreen(green / denominator) 25323 # .setBlue(blue / denominator); 25324 # int alpha = color.getAlpha(); 25325 # if (alpha != 255) { 25326 # result.setAlpha( 25327 # FloatValue 25328 # .newBuilder() 25329 # .setValue(((float) alpha) / denominator) 25330 # .build()); 25331 # } 25332 # return resultBuilder.build(); 25333 # } 25334 # // ... 25335 # 25336 # Example (iOS / Obj-C): 25337 # 25338 # // ... 25339 # static UIColor* fromProto(Color* protocolor) { 25340 # float red = [protocolor red]; 25341 # float green = [protocolor green]; 25342 # float blue = [protocolor blue]; 25343 # FloatValue* alpha_wrapper = [protocolor alpha]; 25344 # float alpha = 1.0; 25345 # if (alpha_wrapper != nil) { 25346 # alpha = [alpha_wrapper value]; 25347 # } 25348 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 25349 # } 25350 # 25351 # static Color* toProto(UIColor* color) { 25352 # CGFloat red, green, blue, alpha; 25353 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 25354 # return nil; 25355 # } 25356 # Color* result = [Color alloc] init]; 25357 # [result setRed:red]; 25358 # [result setGreen:green]; 25359 # [result setBlue:blue]; 25360 # if (alpha <= 0.9999) { 25361 # [result setAlpha:floatWrapperWithValue(alpha)]; 25362 # } 25363 # [result autorelease]; 25364 # return result; 25365 # } 25366 # // ... 25367 # 25368 # Example (JavaScript): 25369 # 25370 # // ... 25371 # 25372 # var protoToCssColor = function(rgb_color) { 25373 # var redFrac = rgb_color.red || 0.0; 25374 # var greenFrac = rgb_color.green || 0.0; 25375 # var blueFrac = rgb_color.blue || 0.0; 25376 # var red = Math.floor(redFrac * 255); 25377 # var green = Math.floor(greenFrac * 255); 25378 # var blue = Math.floor(blueFrac * 255); 25379 # 25380 # if (!('alpha' in rgb_color)) { 25381 # return rgbToCssColor_(red, green, blue); 25382 # } 25383 # 25384 # var alphaFrac = rgb_color.alpha.value || 0.0; 25385 # var rgbParams = [red, green, blue].join(','); 25386 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 25387 # }; 25388 # 25389 # var rgbToCssColor_ = function(red, green, blue) { 25390 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 25391 # var hexString = rgbNumber.toString(16); 25392 # var missingZeros = 6 - hexString.length; 25393 # var resultBuilder = ['#']; 25394 # for (var i = 0; i < missingZeros; i++) { 25395 # resultBuilder.push('0'); 25396 # } 25397 # resultBuilder.push(hexString); 25398 # return resultBuilder.join(''); 25399 # }; 25400 # 25401 # // ... 25402 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 25403 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 25404 # the final pixel color is defined by the equation: 25405 # 25406 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 25407 # 25408 # This means that a value of 1.0 corresponds to a solid color, whereas 25409 # a value of 0.0 corresponds to a completely transparent color. This 25410 # uses a wrapper message rather than a simple float scalar so that it is 25411 # possible to distinguish between a default value and the value being unset. 25412 # If omitted, this color object is to be rendered as a solid color 25413 # (as if the alpha value had been explicitly given with a value of 1.0). 25414 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 25415 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 25416 }, 25417 "width": 42, # The width of the border, in pixels. 25418 # Deprecated; the width is determined by the "style" field. 25419 "style": "A String", # The style of the border. 25420 }, 25421 }, 25422 "wrapStrategy": "A String", # The wrap strategy for the value in the cell. 25423 }, 25424 }, 25425 "gradientRule": { # A rule that applies a gradient color scale format, based on # The formatting will vary based on the gradients in the rule. 25426 # the interpolation points listed. The format of a cell will vary 25427 # based on its contents as compared to the values of the interpolation 25428 # points. 25429 "maxpoint": { # A single interpolation point on a gradient conditional format. # The final interpolation point. 25430 # These pin the gradient color scale according to the color, 25431 # type and value chosen. 25432 "color": { # Represents a color in the RGBA color space. This representation is designed # The color this interpolation point should use. 25433 # for simplicity of conversion to/from color representations in various 25434 # languages over compactness; for example, the fields of this representation 25435 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 25436 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 25437 # method in iOS; and, with just a little work, it can be easily formatted into 25438 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 25439 # 25440 # Example (Java): 25441 # 25442 # import com.google.type.Color; 25443 # 25444 # // ... 25445 # public static java.awt.Color fromProto(Color protocolor) { 25446 # float alpha = protocolor.hasAlpha() 25447 # ? protocolor.getAlpha().getValue() 25448 # : 1.0; 25449 # 25450 # return new java.awt.Color( 25451 # protocolor.getRed(), 25452 # protocolor.getGreen(), 25453 # protocolor.getBlue(), 25454 # alpha); 25455 # } 25456 # 25457 # public static Color toProto(java.awt.Color color) { 25458 # float red = (float) color.getRed(); 25459 # float green = (float) color.getGreen(); 25460 # float blue = (float) color.getBlue(); 25461 # float denominator = 255.0; 25462 # Color.Builder resultBuilder = 25463 # Color 25464 # .newBuilder() 25465 # .setRed(red / denominator) 25466 # .setGreen(green / denominator) 25467 # .setBlue(blue / denominator); 25468 # int alpha = color.getAlpha(); 25469 # if (alpha != 255) { 25470 # result.setAlpha( 25471 # FloatValue 25472 # .newBuilder() 25473 # .setValue(((float) alpha) / denominator) 25474 # .build()); 25475 # } 25476 # return resultBuilder.build(); 25477 # } 25478 # // ... 25479 # 25480 # Example (iOS / Obj-C): 25481 # 25482 # // ... 25483 # static UIColor* fromProto(Color* protocolor) { 25484 # float red = [protocolor red]; 25485 # float green = [protocolor green]; 25486 # float blue = [protocolor blue]; 25487 # FloatValue* alpha_wrapper = [protocolor alpha]; 25488 # float alpha = 1.0; 25489 # if (alpha_wrapper != nil) { 25490 # alpha = [alpha_wrapper value]; 25491 # } 25492 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 25493 # } 25494 # 25495 # static Color* toProto(UIColor* color) { 25496 # CGFloat red, green, blue, alpha; 25497 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 25498 # return nil; 25499 # } 25500 # Color* result = [Color alloc] init]; 25501 # [result setRed:red]; 25502 # [result setGreen:green]; 25503 # [result setBlue:blue]; 25504 # if (alpha <= 0.9999) { 25505 # [result setAlpha:floatWrapperWithValue(alpha)]; 25506 # } 25507 # [result autorelease]; 25508 # return result; 25509 # } 25510 # // ... 25511 # 25512 # Example (JavaScript): 25513 # 25514 # // ... 25515 # 25516 # var protoToCssColor = function(rgb_color) { 25517 # var redFrac = rgb_color.red || 0.0; 25518 # var greenFrac = rgb_color.green || 0.0; 25519 # var blueFrac = rgb_color.blue || 0.0; 25520 # var red = Math.floor(redFrac * 255); 25521 # var green = Math.floor(greenFrac * 255); 25522 # var blue = Math.floor(blueFrac * 255); 25523 # 25524 # if (!('alpha' in rgb_color)) { 25525 # return rgbToCssColor_(red, green, blue); 25526 # } 25527 # 25528 # var alphaFrac = rgb_color.alpha.value || 0.0; 25529 # var rgbParams = [red, green, blue].join(','); 25530 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 25531 # }; 25532 # 25533 # var rgbToCssColor_ = function(red, green, blue) { 25534 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 25535 # var hexString = rgbNumber.toString(16); 25536 # var missingZeros = 6 - hexString.length; 25537 # var resultBuilder = ['#']; 25538 # for (var i = 0; i < missingZeros; i++) { 25539 # resultBuilder.push('0'); 25540 # } 25541 # resultBuilder.push(hexString); 25542 # return resultBuilder.join(''); 25543 # }; 25544 # 25545 # // ... 25546 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 25547 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 25548 # the final pixel color is defined by the equation: 25549 # 25550 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 25551 # 25552 # This means that a value of 1.0 corresponds to a solid color, whereas 25553 # a value of 0.0 corresponds to a completely transparent color. This 25554 # uses a wrapper message rather than a simple float scalar so that it is 25555 # possible to distinguish between a default value and the value being unset. 25556 # If omitted, this color object is to be rendered as a solid color 25557 # (as if the alpha value had been explicitly given with a value of 1.0). 25558 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 25559 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 25560 }, 25561 "type": "A String", # How the value should be interpreted. 25562 "value": "A String", # The value this interpolation point uses. May be a formula. 25563 # Unused if type is MIN or 25564 # MAX. 25565 }, 25566 "midpoint": { # A single interpolation point on a gradient conditional format. # An optional midway interpolation point. 25567 # These pin the gradient color scale according to the color, 25568 # type and value chosen. 25569 "color": { # Represents a color in the RGBA color space. This representation is designed # The color this interpolation point should use. 25570 # for simplicity of conversion to/from color representations in various 25571 # languages over compactness; for example, the fields of this representation 25572 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 25573 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 25574 # method in iOS; and, with just a little work, it can be easily formatted into 25575 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 25576 # 25577 # Example (Java): 25578 # 25579 # import com.google.type.Color; 25580 # 25581 # // ... 25582 # public static java.awt.Color fromProto(Color protocolor) { 25583 # float alpha = protocolor.hasAlpha() 25584 # ? protocolor.getAlpha().getValue() 25585 # : 1.0; 25586 # 25587 # return new java.awt.Color( 25588 # protocolor.getRed(), 25589 # protocolor.getGreen(), 25590 # protocolor.getBlue(), 25591 # alpha); 25592 # } 25593 # 25594 # public static Color toProto(java.awt.Color color) { 25595 # float red = (float) color.getRed(); 25596 # float green = (float) color.getGreen(); 25597 # float blue = (float) color.getBlue(); 25598 # float denominator = 255.0; 25599 # Color.Builder resultBuilder = 25600 # Color 25601 # .newBuilder() 25602 # .setRed(red / denominator) 25603 # .setGreen(green / denominator) 25604 # .setBlue(blue / denominator); 25605 # int alpha = color.getAlpha(); 25606 # if (alpha != 255) { 25607 # result.setAlpha( 25608 # FloatValue 25609 # .newBuilder() 25610 # .setValue(((float) alpha) / denominator) 25611 # .build()); 25612 # } 25613 # return resultBuilder.build(); 25614 # } 25615 # // ... 25616 # 25617 # Example (iOS / Obj-C): 25618 # 25619 # // ... 25620 # static UIColor* fromProto(Color* protocolor) { 25621 # float red = [protocolor red]; 25622 # float green = [protocolor green]; 25623 # float blue = [protocolor blue]; 25624 # FloatValue* alpha_wrapper = [protocolor alpha]; 25625 # float alpha = 1.0; 25626 # if (alpha_wrapper != nil) { 25627 # alpha = [alpha_wrapper value]; 25628 # } 25629 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 25630 # } 25631 # 25632 # static Color* toProto(UIColor* color) { 25633 # CGFloat red, green, blue, alpha; 25634 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 25635 # return nil; 25636 # } 25637 # Color* result = [Color alloc] init]; 25638 # [result setRed:red]; 25639 # [result setGreen:green]; 25640 # [result setBlue:blue]; 25641 # if (alpha <= 0.9999) { 25642 # [result setAlpha:floatWrapperWithValue(alpha)]; 25643 # } 25644 # [result autorelease]; 25645 # return result; 25646 # } 25647 # // ... 25648 # 25649 # Example (JavaScript): 25650 # 25651 # // ... 25652 # 25653 # var protoToCssColor = function(rgb_color) { 25654 # var redFrac = rgb_color.red || 0.0; 25655 # var greenFrac = rgb_color.green || 0.0; 25656 # var blueFrac = rgb_color.blue || 0.0; 25657 # var red = Math.floor(redFrac * 255); 25658 # var green = Math.floor(greenFrac * 255); 25659 # var blue = Math.floor(blueFrac * 255); 25660 # 25661 # if (!('alpha' in rgb_color)) { 25662 # return rgbToCssColor_(red, green, blue); 25663 # } 25664 # 25665 # var alphaFrac = rgb_color.alpha.value || 0.0; 25666 # var rgbParams = [red, green, blue].join(','); 25667 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 25668 # }; 25669 # 25670 # var rgbToCssColor_ = function(red, green, blue) { 25671 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 25672 # var hexString = rgbNumber.toString(16); 25673 # var missingZeros = 6 - hexString.length; 25674 # var resultBuilder = ['#']; 25675 # for (var i = 0; i < missingZeros; i++) { 25676 # resultBuilder.push('0'); 25677 # } 25678 # resultBuilder.push(hexString); 25679 # return resultBuilder.join(''); 25680 # }; 25681 # 25682 # // ... 25683 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 25684 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 25685 # the final pixel color is defined by the equation: 25686 # 25687 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 25688 # 25689 # This means that a value of 1.0 corresponds to a solid color, whereas 25690 # a value of 0.0 corresponds to a completely transparent color. This 25691 # uses a wrapper message rather than a simple float scalar so that it is 25692 # possible to distinguish between a default value and the value being unset. 25693 # If omitted, this color object is to be rendered as a solid color 25694 # (as if the alpha value had been explicitly given with a value of 1.0). 25695 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 25696 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 25697 }, 25698 "type": "A String", # How the value should be interpreted. 25699 "value": "A String", # The value this interpolation point uses. May be a formula. 25700 # Unused if type is MIN or 25701 # MAX. 25702 }, 25703 "minpoint": { # A single interpolation point on a gradient conditional format. # The starting interpolation point. 25704 # These pin the gradient color scale according to the color, 25705 # type and value chosen. 25706 "color": { # Represents a color in the RGBA color space. This representation is designed # The color this interpolation point should use. 25707 # for simplicity of conversion to/from color representations in various 25708 # languages over compactness; for example, the fields of this representation 25709 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 25710 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 25711 # method in iOS; and, with just a little work, it can be easily formatted into 25712 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 25713 # 25714 # Example (Java): 25715 # 25716 # import com.google.type.Color; 25717 # 25718 # // ... 25719 # public static java.awt.Color fromProto(Color protocolor) { 25720 # float alpha = protocolor.hasAlpha() 25721 # ? protocolor.getAlpha().getValue() 25722 # : 1.0; 25723 # 25724 # return new java.awt.Color( 25725 # protocolor.getRed(), 25726 # protocolor.getGreen(), 25727 # protocolor.getBlue(), 25728 # alpha); 25729 # } 25730 # 25731 # public static Color toProto(java.awt.Color color) { 25732 # float red = (float) color.getRed(); 25733 # float green = (float) color.getGreen(); 25734 # float blue = (float) color.getBlue(); 25735 # float denominator = 255.0; 25736 # Color.Builder resultBuilder = 25737 # Color 25738 # .newBuilder() 25739 # .setRed(red / denominator) 25740 # .setGreen(green / denominator) 25741 # .setBlue(blue / denominator); 25742 # int alpha = color.getAlpha(); 25743 # if (alpha != 255) { 25744 # result.setAlpha( 25745 # FloatValue 25746 # .newBuilder() 25747 # .setValue(((float) alpha) / denominator) 25748 # .build()); 25749 # } 25750 # return resultBuilder.build(); 25751 # } 25752 # // ... 25753 # 25754 # Example (iOS / Obj-C): 25755 # 25756 # // ... 25757 # static UIColor* fromProto(Color* protocolor) { 25758 # float red = [protocolor red]; 25759 # float green = [protocolor green]; 25760 # float blue = [protocolor blue]; 25761 # FloatValue* alpha_wrapper = [protocolor alpha]; 25762 # float alpha = 1.0; 25763 # if (alpha_wrapper != nil) { 25764 # alpha = [alpha_wrapper value]; 25765 # } 25766 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 25767 # } 25768 # 25769 # static Color* toProto(UIColor* color) { 25770 # CGFloat red, green, blue, alpha; 25771 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 25772 # return nil; 25773 # } 25774 # Color* result = [Color alloc] init]; 25775 # [result setRed:red]; 25776 # [result setGreen:green]; 25777 # [result setBlue:blue]; 25778 # if (alpha <= 0.9999) { 25779 # [result setAlpha:floatWrapperWithValue(alpha)]; 25780 # } 25781 # [result autorelease]; 25782 # return result; 25783 # } 25784 # // ... 25785 # 25786 # Example (JavaScript): 25787 # 25788 # // ... 25789 # 25790 # var protoToCssColor = function(rgb_color) { 25791 # var redFrac = rgb_color.red || 0.0; 25792 # var greenFrac = rgb_color.green || 0.0; 25793 # var blueFrac = rgb_color.blue || 0.0; 25794 # var red = Math.floor(redFrac * 255); 25795 # var green = Math.floor(greenFrac * 255); 25796 # var blue = Math.floor(blueFrac * 255); 25797 # 25798 # if (!('alpha' in rgb_color)) { 25799 # return rgbToCssColor_(red, green, blue); 25800 # } 25801 # 25802 # var alphaFrac = rgb_color.alpha.value || 0.0; 25803 # var rgbParams = [red, green, blue].join(','); 25804 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 25805 # }; 25806 # 25807 # var rgbToCssColor_ = function(red, green, blue) { 25808 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 25809 # var hexString = rgbNumber.toString(16); 25810 # var missingZeros = 6 - hexString.length; 25811 # var resultBuilder = ['#']; 25812 # for (var i = 0; i < missingZeros; i++) { 25813 # resultBuilder.push('0'); 25814 # } 25815 # resultBuilder.push(hexString); 25816 # return resultBuilder.join(''); 25817 # }; 25818 # 25819 # // ... 25820 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 25821 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 25822 # the final pixel color is defined by the equation: 25823 # 25824 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 25825 # 25826 # This means that a value of 1.0 corresponds to a solid color, whereas 25827 # a value of 0.0 corresponds to a completely transparent color. This 25828 # uses a wrapper message rather than a simple float scalar so that it is 25829 # possible to distinguish between a default value and the value being unset. 25830 # If omitted, this color object is to be rendered as a solid color 25831 # (as if the alpha value had been explicitly given with a value of 1.0). 25832 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 25833 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 25834 }, 25835 "type": "A String", # How the value should be interpreted. 25836 "value": "A String", # The value this interpolation point uses. May be a formula. 25837 # Unused if type is MIN or 25838 # MAX. 25839 }, 25840 }, 25841 }, 25842 }, 25843 "addSheet": { # The result of adding a sheet. # A reply from adding a sheet. 25844 "properties": { # Properties of a sheet. # The properties of the newly added sheet. 25845 "sheetType": "A String", # The type of sheet. Defaults to GRID. 25846 # This field cannot be changed once set. 25847 "index": 42, # The index of the sheet within the spreadsheet. 25848 # When adding or updating sheet properties, if this field 25849 # is excluded then the sheet will be added or moved to the end 25850 # of the sheet list. When updating sheet indices or inserting 25851 # sheets, movement is considered in "before the move" indexes. 25852 # For example, if there were 3 sheets (S1, S2, S3) in order to 25853 # move S1 ahead of S2 the index would have to be set to 2. A sheet 25854 # index update request will be ignored if the requested index is 25855 # identical to the sheets current index or if the requested new 25856 # index is equal to the current sheet index + 1. 25857 "title": "A String", # The name of the sheet. 25858 "gridProperties": { # Properties of a grid. # Additional properties of the sheet if this sheet is a grid. 25859 # (If the sheet is an object sheet, containing a chart or image, then 25860 # this field will be absent.) 25861 # When writing it is an error to set any grid properties on non-grid sheets. 25862 "columnCount": 42, # The number of columns in the grid. 25863 "frozenRowCount": 42, # The number of rows that are frozen in the grid. 25864 "frozenColumnCount": 42, # The number of columns that are frozen in the grid. 25865 "hideGridlines": True or False, # True if the grid isn't showing gridlines in the UI. 25866 "rowCount": 42, # The number of rows in the grid. 25867 }, 25868 "rightToLeft": True or False, # True if the sheet is an RTL sheet instead of an LTR sheet. 25869 "tabColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the tab in the UI. 25870 # for simplicity of conversion to/from color representations in various 25871 # languages over compactness; for example, the fields of this representation 25872 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 25873 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 25874 # method in iOS; and, with just a little work, it can be easily formatted into 25875 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 25876 # 25877 # Example (Java): 25878 # 25879 # import com.google.type.Color; 25880 # 25881 # // ... 25882 # public static java.awt.Color fromProto(Color protocolor) { 25883 # float alpha = protocolor.hasAlpha() 25884 # ? protocolor.getAlpha().getValue() 25885 # : 1.0; 25886 # 25887 # return new java.awt.Color( 25888 # protocolor.getRed(), 25889 # protocolor.getGreen(), 25890 # protocolor.getBlue(), 25891 # alpha); 25892 # } 25893 # 25894 # public static Color toProto(java.awt.Color color) { 25895 # float red = (float) color.getRed(); 25896 # float green = (float) color.getGreen(); 25897 # float blue = (float) color.getBlue(); 25898 # float denominator = 255.0; 25899 # Color.Builder resultBuilder = 25900 # Color 25901 # .newBuilder() 25902 # .setRed(red / denominator) 25903 # .setGreen(green / denominator) 25904 # .setBlue(blue / denominator); 25905 # int alpha = color.getAlpha(); 25906 # if (alpha != 255) { 25907 # result.setAlpha( 25908 # FloatValue 25909 # .newBuilder() 25910 # .setValue(((float) alpha) / denominator) 25911 # .build()); 25912 # } 25913 # return resultBuilder.build(); 25914 # } 25915 # // ... 25916 # 25917 # Example (iOS / Obj-C): 25918 # 25919 # // ... 25920 # static UIColor* fromProto(Color* protocolor) { 25921 # float red = [protocolor red]; 25922 # float green = [protocolor green]; 25923 # float blue = [protocolor blue]; 25924 # FloatValue* alpha_wrapper = [protocolor alpha]; 25925 # float alpha = 1.0; 25926 # if (alpha_wrapper != nil) { 25927 # alpha = [alpha_wrapper value]; 25928 # } 25929 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 25930 # } 25931 # 25932 # static Color* toProto(UIColor* color) { 25933 # CGFloat red, green, blue, alpha; 25934 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 25935 # return nil; 25936 # } 25937 # Color* result = [Color alloc] init]; 25938 # [result setRed:red]; 25939 # [result setGreen:green]; 25940 # [result setBlue:blue]; 25941 # if (alpha <= 0.9999) { 25942 # [result setAlpha:floatWrapperWithValue(alpha)]; 25943 # } 25944 # [result autorelease]; 25945 # return result; 25946 # } 25947 # // ... 25948 # 25949 # Example (JavaScript): 25950 # 25951 # // ... 25952 # 25953 # var protoToCssColor = function(rgb_color) { 25954 # var redFrac = rgb_color.red || 0.0; 25955 # var greenFrac = rgb_color.green || 0.0; 25956 # var blueFrac = rgb_color.blue || 0.0; 25957 # var red = Math.floor(redFrac * 255); 25958 # var green = Math.floor(greenFrac * 255); 25959 # var blue = Math.floor(blueFrac * 255); 25960 # 25961 # if (!('alpha' in rgb_color)) { 25962 # return rgbToCssColor_(red, green, blue); 25963 # } 25964 # 25965 # var alphaFrac = rgb_color.alpha.value || 0.0; 25966 # var rgbParams = [red, green, blue].join(','); 25967 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 25968 # }; 25969 # 25970 # var rgbToCssColor_ = function(red, green, blue) { 25971 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 25972 # var hexString = rgbNumber.toString(16); 25973 # var missingZeros = 6 - hexString.length; 25974 # var resultBuilder = ['#']; 25975 # for (var i = 0; i < missingZeros; i++) { 25976 # resultBuilder.push('0'); 25977 # } 25978 # resultBuilder.push(hexString); 25979 # return resultBuilder.join(''); 25980 # }; 25981 # 25982 # // ... 25983 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 25984 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 25985 # the final pixel color is defined by the equation: 25986 # 25987 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 25988 # 25989 # This means that a value of 1.0 corresponds to a solid color, whereas 25990 # a value of 0.0 corresponds to a completely transparent color. This 25991 # uses a wrapper message rather than a simple float scalar so that it is 25992 # possible to distinguish between a default value and the value being unset. 25993 # If omitted, this color object is to be rendered as a solid color 25994 # (as if the alpha value had been explicitly given with a value of 1.0). 25995 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 25996 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 25997 }, 25998 "hidden": True or False, # True if the sheet is hidden in the UI, false if it's visible. 25999 "sheetId": 42, # The ID of the sheet. Must be non-negative. 26000 # This field cannot be changed once set. 26001 }, 26002 }, 26003 "findReplace": { # The result of the find/replace. # A reply from doing a find/replace. 26004 "occurrencesChanged": 42, # The number of occurrences (possibly multiple within a cell) changed. 26005 # For example, if replacing `"e"` with `"o"` in `"Google Sheets"`, this would 26006 # be `"3"` because `"Google Sheets"` -> `"Googlo Shoots"`. 26007 "sheetsChanged": 42, # The number of sheets changed. 26008 "rowsChanged": 42, # The number of rows changed. 26009 "valuesChanged": 42, # The number of non-formula cells changed. 26010 "formulasChanged": 42, # The number of formula cells changed. 26011 }, 26012 "addNamedRange": { # The result of adding a named range. # A reply from adding a named range. 26013 "namedRange": { # A named range. # The named range to add. 26014 "namedRangeId": "A String", # The ID of the named range. 26015 "range": { # A range on a sheet. # The range this represents. 26016 # All indexes are zero-based. 26017 # Indexes are half open, e.g the start index is inclusive 26018 # and the end index is exclusive -- [start_index, end_index). 26019 # Missing indexes indicate the range is unbounded on that side. 26020 # 26021 # For example, if `"Sheet1"` is sheet ID 0, then: 26022 # 26023 # `Sheet1!A1:A1 == sheet_id: 0, 26024 # start_row_index: 0, end_row_index: 1, 26025 # start_column_index: 0, end_column_index: 1` 26026 # 26027 # `Sheet1!A3:B4 == sheet_id: 0, 26028 # start_row_index: 2, end_row_index: 4, 26029 # start_column_index: 0, end_column_index: 2` 26030 # 26031 # `Sheet1!A:B == sheet_id: 0, 26032 # start_column_index: 0, end_column_index: 2` 26033 # 26034 # `Sheet1!A5:B == sheet_id: 0, 26035 # start_row_index: 4, 26036 # start_column_index: 0, end_column_index: 2` 26037 # 26038 # `Sheet1 == sheet_id:0` 26039 # 26040 # The start index must always be less than or equal to the end index. 26041 # If the start index equals the end index, then the range is empty. 26042 # Empty ranges are typically not meaningful and are usually rendered in the 26043 # UI as `#REF!`. 26044 "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded. 26045 "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded. 26046 "sheetId": 42, # The sheet this range is on. 26047 "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded. 26048 "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded. 26049 }, 26050 "name": "A String", # The name of the named range. 26051 }, 26052 }, 26053 "addProtectedRange": { # The result of adding a new protected range. # A reply from adding a protected range. 26054 "protectedRange": { # A protected range. # The newly added protected range. 26055 "unprotectedRanges": [ # The list of unprotected ranges within a protected sheet. 26056 # Unprotected ranges are only supported on protected sheets. 26057 { # A range on a sheet. 26058 # All indexes are zero-based. 26059 # Indexes are half open, e.g the start index is inclusive 26060 # and the end index is exclusive -- [start_index, end_index). 26061 # Missing indexes indicate the range is unbounded on that side. 26062 # 26063 # For example, if `"Sheet1"` is sheet ID 0, then: 26064 # 26065 # `Sheet1!A1:A1 == sheet_id: 0, 26066 # start_row_index: 0, end_row_index: 1, 26067 # start_column_index: 0, end_column_index: 1` 26068 # 26069 # `Sheet1!A3:B4 == sheet_id: 0, 26070 # start_row_index: 2, end_row_index: 4, 26071 # start_column_index: 0, end_column_index: 2` 26072 # 26073 # `Sheet1!A:B == sheet_id: 0, 26074 # start_column_index: 0, end_column_index: 2` 26075 # 26076 # `Sheet1!A5:B == sheet_id: 0, 26077 # start_row_index: 4, 26078 # start_column_index: 0, end_column_index: 2` 26079 # 26080 # `Sheet1 == sheet_id:0` 26081 # 26082 # The start index must always be less than or equal to the end index. 26083 # If the start index equals the end index, then the range is empty. 26084 # Empty ranges are typically not meaningful and are usually rendered in the 26085 # UI as `#REF!`. 26086 "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded. 26087 "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded. 26088 "sheetId": 42, # The sheet this range is on. 26089 "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded. 26090 "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded. 26091 }, 26092 ], 26093 "requestingUserCanEdit": True or False, # True if the user who requested this protected range can edit the 26094 # protected area. 26095 # This field is read-only. 26096 "description": "A String", # The description of this protected range. 26097 "namedRangeId": "A String", # The named range this protected range is backed by, if any. 26098 # 26099 # When writing, only one of range or named_range_id 26100 # may be set. 26101 "editors": { # The editors of a protected range. # The users and groups with edit access to the protected range. 26102 # This field is only visible to users with edit access to the protected 26103 # range and the document. 26104 # Editors are not supported with warning_only protection. 26105 "domainUsersCanEdit": True or False, # True if anyone in the document's domain has edit access to the protected 26106 # range. Domain protection is only supported on documents within a domain. 26107 "users": [ # The email addresses of users with edit access to the protected range. 26108 "A String", 26109 ], 26110 "groups": [ # The email addresses of groups with edit access to the protected range. 26111 "A String", 26112 ], 26113 }, 26114 "protectedRangeId": 42, # The ID of the protected range. 26115 # This field is read-only. 26116 "warningOnly": True or False, # True if this protected range will show a warning when editing. 26117 # Warning-based protection means that every user can edit data in the 26118 # protected range, except editing will prompt a warning asking the user 26119 # to confirm the edit. 26120 # 26121 # When writing: if this field is true, then editors is ignored. 26122 # Additionally, if this field is changed from true to false and the 26123 # `editors` field is not set (nor included in the field mask), then 26124 # the editors will be set to all the editors in the document. 26125 "range": { # A range on a sheet. # The range that is being protected. 26126 # The range may be fully unbounded, in which case this is considered 26127 # a protected sheet. 26128 # 26129 # When writing, only one of range or named_range_id 26130 # may be set. 26131 # All indexes are zero-based. 26132 # Indexes are half open, e.g the start index is inclusive 26133 # and the end index is exclusive -- [start_index, end_index). 26134 # Missing indexes indicate the range is unbounded on that side. 26135 # 26136 # For example, if `"Sheet1"` is sheet ID 0, then: 26137 # 26138 # `Sheet1!A1:A1 == sheet_id: 0, 26139 # start_row_index: 0, end_row_index: 1, 26140 # start_column_index: 0, end_column_index: 1` 26141 # 26142 # `Sheet1!A3:B4 == sheet_id: 0, 26143 # start_row_index: 2, end_row_index: 4, 26144 # start_column_index: 0, end_column_index: 2` 26145 # 26146 # `Sheet1!A:B == sheet_id: 0, 26147 # start_column_index: 0, end_column_index: 2` 26148 # 26149 # `Sheet1!A5:B == sheet_id: 0, 26150 # start_row_index: 4, 26151 # start_column_index: 0, end_column_index: 2` 26152 # 26153 # `Sheet1 == sheet_id:0` 26154 # 26155 # The start index must always be less than or equal to the end index. 26156 # If the start index equals the end index, then the range is empty. 26157 # Empty ranges are typically not meaningful and are usually rendered in the 26158 # UI as `#REF!`. 26159 "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded. 26160 "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded. 26161 "sheetId": 42, # The sheet this range is on. 26162 "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded. 26163 "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded. 26164 }, 26165 }, 26166 }, 26167 "deleteConditionalFormatRule": { # The result of deleting a conditional format rule. # A reply from deleting a conditional format rule. 26168 "rule": { # A rule describing a conditional format. # The rule that was deleted. 26169 "ranges": [ # The ranges that will be formatted if the condition is true. 26170 # All the ranges must be on the same grid. 26171 { # A range on a sheet. 26172 # All indexes are zero-based. 26173 # Indexes are half open, e.g the start index is inclusive 26174 # and the end index is exclusive -- [start_index, end_index). 26175 # Missing indexes indicate the range is unbounded on that side. 26176 # 26177 # For example, if `"Sheet1"` is sheet ID 0, then: 26178 # 26179 # `Sheet1!A1:A1 == sheet_id: 0, 26180 # start_row_index: 0, end_row_index: 1, 26181 # start_column_index: 0, end_column_index: 1` 26182 # 26183 # `Sheet1!A3:B4 == sheet_id: 0, 26184 # start_row_index: 2, end_row_index: 4, 26185 # start_column_index: 0, end_column_index: 2` 26186 # 26187 # `Sheet1!A:B == sheet_id: 0, 26188 # start_column_index: 0, end_column_index: 2` 26189 # 26190 # `Sheet1!A5:B == sheet_id: 0, 26191 # start_row_index: 4, 26192 # start_column_index: 0, end_column_index: 2` 26193 # 26194 # `Sheet1 == sheet_id:0` 26195 # 26196 # The start index must always be less than or equal to the end index. 26197 # If the start index equals the end index, then the range is empty. 26198 # Empty ranges are typically not meaningful and are usually rendered in the 26199 # UI as `#REF!`. 26200 "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded. 26201 "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded. 26202 "sheetId": 42, # The sheet this range is on. 26203 "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded. 26204 "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded. 26205 }, 26206 ], 26207 "booleanRule": { # A rule that may or may not match, depending on the condition. # The formatting is either "on" or "off" according to the rule. 26208 "condition": { # A condition that can evaluate to true or false. # The condition of the rule. If the condition evaluates to true, 26209 # the format will be applied. 26210 # BooleanConditions are used by conditional formatting, 26211 # data validation, and the criteria in filters. 26212 "values": [ # The values of the condition. The number of supported values depends 26213 # on the condition type. Some support zero values, 26214 # others one or two values, 26215 # and ConditionType.ONE_OF_LIST supports an arbitrary number of values. 26216 { # The value of the condition. 26217 "relativeDate": "A String", # A relative date (based on the current date). 26218 # Valid only if the type is 26219 # DATE_BEFORE, 26220 # DATE_AFTER, 26221 # DATE_ON_OR_BEFORE or 26222 # DATE_ON_OR_AFTER. 26223 # 26224 # Relative dates are not supported in data validation. 26225 # They are supported only in conditional formatting and 26226 # conditional filters. 26227 "userEnteredValue": "A String", # A value the condition is based on. 26228 # The value will be parsed as if the user typed into a cell. 26229 # Formulas are supported (and must begin with an `=`). 26230 }, 26231 ], 26232 "type": "A String", # The type of condition. 26233 }, 26234 "format": { # The format of a cell. # The format to apply. 26235 # Conditional formatting can only apply a subset of formatting: 26236 # bold, italic, 26237 # strikethrough, 26238 # foreground color & 26239 # background color. 26240 "numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user. 26241 "pattern": "A String", # Pattern string used for formatting. If not set, a default pattern based on 26242 # the user's locale will be used if necessary for the given type. 26243 # See the [Date and Number Formats guide](/sheets/api/guides/formats) for more 26244 # information about the supported patterns. 26245 "type": "A String", # The type of the number format. 26246 # When writing, this field must be set. 26247 }, 26248 "textDirection": "A String", # The direction of the text in the cell. 26249 "padding": { # The amount of padding around the cell, in pixels. # The padding of the cell. 26250 # When updating padding, every field must be specified. 26251 "top": 42, # The top padding of the cell. 26252 "right": 42, # The right padding of the cell. 26253 "bottom": 42, # The bottom padding of the cell. 26254 "left": 42, # The left padding of the cell. 26255 }, 26256 "verticalAlignment": "A String", # The vertical alignment of the value in the cell. 26257 "backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell. 26258 # for simplicity of conversion to/from color representations in various 26259 # languages over compactness; for example, the fields of this representation 26260 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 26261 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 26262 # method in iOS; and, with just a little work, it can be easily formatted into 26263 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 26264 # 26265 # Example (Java): 26266 # 26267 # import com.google.type.Color; 26268 # 26269 # // ... 26270 # public static java.awt.Color fromProto(Color protocolor) { 26271 # float alpha = protocolor.hasAlpha() 26272 # ? protocolor.getAlpha().getValue() 26273 # : 1.0; 26274 # 26275 # return new java.awt.Color( 26276 # protocolor.getRed(), 26277 # protocolor.getGreen(), 26278 # protocolor.getBlue(), 26279 # alpha); 26280 # } 26281 # 26282 # public static Color toProto(java.awt.Color color) { 26283 # float red = (float) color.getRed(); 26284 # float green = (float) color.getGreen(); 26285 # float blue = (float) color.getBlue(); 26286 # float denominator = 255.0; 26287 # Color.Builder resultBuilder = 26288 # Color 26289 # .newBuilder() 26290 # .setRed(red / denominator) 26291 # .setGreen(green / denominator) 26292 # .setBlue(blue / denominator); 26293 # int alpha = color.getAlpha(); 26294 # if (alpha != 255) { 26295 # result.setAlpha( 26296 # FloatValue 26297 # .newBuilder() 26298 # .setValue(((float) alpha) / denominator) 26299 # .build()); 26300 # } 26301 # return resultBuilder.build(); 26302 # } 26303 # // ... 26304 # 26305 # Example (iOS / Obj-C): 26306 # 26307 # // ... 26308 # static UIColor* fromProto(Color* protocolor) { 26309 # float red = [protocolor red]; 26310 # float green = [protocolor green]; 26311 # float blue = [protocolor blue]; 26312 # FloatValue* alpha_wrapper = [protocolor alpha]; 26313 # float alpha = 1.0; 26314 # if (alpha_wrapper != nil) { 26315 # alpha = [alpha_wrapper value]; 26316 # } 26317 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 26318 # } 26319 # 26320 # static Color* toProto(UIColor* color) { 26321 # CGFloat red, green, blue, alpha; 26322 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 26323 # return nil; 26324 # } 26325 # Color* result = [Color alloc] init]; 26326 # [result setRed:red]; 26327 # [result setGreen:green]; 26328 # [result setBlue:blue]; 26329 # if (alpha <= 0.9999) { 26330 # [result setAlpha:floatWrapperWithValue(alpha)]; 26331 # } 26332 # [result autorelease]; 26333 # return result; 26334 # } 26335 # // ... 26336 # 26337 # Example (JavaScript): 26338 # 26339 # // ... 26340 # 26341 # var protoToCssColor = function(rgb_color) { 26342 # var redFrac = rgb_color.red || 0.0; 26343 # var greenFrac = rgb_color.green || 0.0; 26344 # var blueFrac = rgb_color.blue || 0.0; 26345 # var red = Math.floor(redFrac * 255); 26346 # var green = Math.floor(greenFrac * 255); 26347 # var blue = Math.floor(blueFrac * 255); 26348 # 26349 # if (!('alpha' in rgb_color)) { 26350 # return rgbToCssColor_(red, green, blue); 26351 # } 26352 # 26353 # var alphaFrac = rgb_color.alpha.value || 0.0; 26354 # var rgbParams = [red, green, blue].join(','); 26355 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 26356 # }; 26357 # 26358 # var rgbToCssColor_ = function(red, green, blue) { 26359 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 26360 # var hexString = rgbNumber.toString(16); 26361 # var missingZeros = 6 - hexString.length; 26362 # var resultBuilder = ['#']; 26363 # for (var i = 0; i < missingZeros; i++) { 26364 # resultBuilder.push('0'); 26365 # } 26366 # resultBuilder.push(hexString); 26367 # return resultBuilder.join(''); 26368 # }; 26369 # 26370 # // ... 26371 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 26372 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 26373 # the final pixel color is defined by the equation: 26374 # 26375 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 26376 # 26377 # This means that a value of 1.0 corresponds to a solid color, whereas 26378 # a value of 0.0 corresponds to a completely transparent color. This 26379 # uses a wrapper message rather than a simple float scalar so that it is 26380 # possible to distinguish between a default value and the value being unset. 26381 # If omitted, this color object is to be rendered as a solid color 26382 # (as if the alpha value had been explicitly given with a value of 1.0). 26383 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 26384 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 26385 }, 26386 "horizontalAlignment": "A String", # The horizontal alignment of the value in the cell. 26387 "textFormat": { # The format of a run of text in a cell. # The format of the text in the cell (unless overridden by a format run). 26388 # Absent values indicate that the field isn't specified. 26389 "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text. 26390 # for simplicity of conversion to/from color representations in various 26391 # languages over compactness; for example, the fields of this representation 26392 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 26393 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 26394 # method in iOS; and, with just a little work, it can be easily formatted into 26395 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 26396 # 26397 # Example (Java): 26398 # 26399 # import com.google.type.Color; 26400 # 26401 # // ... 26402 # public static java.awt.Color fromProto(Color protocolor) { 26403 # float alpha = protocolor.hasAlpha() 26404 # ? protocolor.getAlpha().getValue() 26405 # : 1.0; 26406 # 26407 # return new java.awt.Color( 26408 # protocolor.getRed(), 26409 # protocolor.getGreen(), 26410 # protocolor.getBlue(), 26411 # alpha); 26412 # } 26413 # 26414 # public static Color toProto(java.awt.Color color) { 26415 # float red = (float) color.getRed(); 26416 # float green = (float) color.getGreen(); 26417 # float blue = (float) color.getBlue(); 26418 # float denominator = 255.0; 26419 # Color.Builder resultBuilder = 26420 # Color 26421 # .newBuilder() 26422 # .setRed(red / denominator) 26423 # .setGreen(green / denominator) 26424 # .setBlue(blue / denominator); 26425 # int alpha = color.getAlpha(); 26426 # if (alpha != 255) { 26427 # result.setAlpha( 26428 # FloatValue 26429 # .newBuilder() 26430 # .setValue(((float) alpha) / denominator) 26431 # .build()); 26432 # } 26433 # return resultBuilder.build(); 26434 # } 26435 # // ... 26436 # 26437 # Example (iOS / Obj-C): 26438 # 26439 # // ... 26440 # static UIColor* fromProto(Color* protocolor) { 26441 # float red = [protocolor red]; 26442 # float green = [protocolor green]; 26443 # float blue = [protocolor blue]; 26444 # FloatValue* alpha_wrapper = [protocolor alpha]; 26445 # float alpha = 1.0; 26446 # if (alpha_wrapper != nil) { 26447 # alpha = [alpha_wrapper value]; 26448 # } 26449 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 26450 # } 26451 # 26452 # static Color* toProto(UIColor* color) { 26453 # CGFloat red, green, blue, alpha; 26454 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 26455 # return nil; 26456 # } 26457 # Color* result = [Color alloc] init]; 26458 # [result setRed:red]; 26459 # [result setGreen:green]; 26460 # [result setBlue:blue]; 26461 # if (alpha <= 0.9999) { 26462 # [result setAlpha:floatWrapperWithValue(alpha)]; 26463 # } 26464 # [result autorelease]; 26465 # return result; 26466 # } 26467 # // ... 26468 # 26469 # Example (JavaScript): 26470 # 26471 # // ... 26472 # 26473 # var protoToCssColor = function(rgb_color) { 26474 # var redFrac = rgb_color.red || 0.0; 26475 # var greenFrac = rgb_color.green || 0.0; 26476 # var blueFrac = rgb_color.blue || 0.0; 26477 # var red = Math.floor(redFrac * 255); 26478 # var green = Math.floor(greenFrac * 255); 26479 # var blue = Math.floor(blueFrac * 255); 26480 # 26481 # if (!('alpha' in rgb_color)) { 26482 # return rgbToCssColor_(red, green, blue); 26483 # } 26484 # 26485 # var alphaFrac = rgb_color.alpha.value || 0.0; 26486 # var rgbParams = [red, green, blue].join(','); 26487 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 26488 # }; 26489 # 26490 # var rgbToCssColor_ = function(red, green, blue) { 26491 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 26492 # var hexString = rgbNumber.toString(16); 26493 # var missingZeros = 6 - hexString.length; 26494 # var resultBuilder = ['#']; 26495 # for (var i = 0; i < missingZeros; i++) { 26496 # resultBuilder.push('0'); 26497 # } 26498 # resultBuilder.push(hexString); 26499 # return resultBuilder.join(''); 26500 # }; 26501 # 26502 # // ... 26503 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 26504 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 26505 # the final pixel color is defined by the equation: 26506 # 26507 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 26508 # 26509 # This means that a value of 1.0 corresponds to a solid color, whereas 26510 # a value of 0.0 corresponds to a completely transparent color. This 26511 # uses a wrapper message rather than a simple float scalar so that it is 26512 # possible to distinguish between a default value and the value being unset. 26513 # If omitted, this color object is to be rendered as a solid color 26514 # (as if the alpha value had been explicitly given with a value of 1.0). 26515 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 26516 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 26517 }, 26518 "bold": True or False, # True if the text is bold. 26519 "strikethrough": True or False, # True if the text has a strikethrough. 26520 "fontFamily": "A String", # The font family. 26521 "fontSize": 42, # The size of the font. 26522 "italic": True or False, # True if the text is italicized. 26523 "underline": True or False, # True if the text is underlined. 26524 }, 26525 "textRotation": { # The rotation applied to text in a cell. # The rotation applied to text in a cell 26526 "angle": 42, # The angle between the standard orientation and the desired orientation. 26527 # Measured in degrees. Valid values are between -90 and 90. Positive 26528 # angles are angled upwards, negative are angled downwards. 26529 # 26530 # Note: For LTR text direction positive angles are in the counterclockwise 26531 # direction, whereas for RTL they are in the clockwise direction 26532 "vertical": True or False, # If true, text reads top to bottom, but the orientation of individual 26533 # characters is unchanged. 26534 # For example: 26535 # 26536 # | V | 26537 # | e | 26538 # | r | 26539 # | t | 26540 # | i | 26541 # | c | 26542 # | a | 26543 # | l | 26544 }, 26545 "hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell. 26546 "borders": { # The borders of the cell. # The borders of the cell. 26547 "top": { # A border along a cell. # The top border of the cell. 26548 "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border. 26549 # for simplicity of conversion to/from color representations in various 26550 # languages over compactness; for example, the fields of this representation 26551 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 26552 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 26553 # method in iOS; and, with just a little work, it can be easily formatted into 26554 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 26555 # 26556 # Example (Java): 26557 # 26558 # import com.google.type.Color; 26559 # 26560 # // ... 26561 # public static java.awt.Color fromProto(Color protocolor) { 26562 # float alpha = protocolor.hasAlpha() 26563 # ? protocolor.getAlpha().getValue() 26564 # : 1.0; 26565 # 26566 # return new java.awt.Color( 26567 # protocolor.getRed(), 26568 # protocolor.getGreen(), 26569 # protocolor.getBlue(), 26570 # alpha); 26571 # } 26572 # 26573 # public static Color toProto(java.awt.Color color) { 26574 # float red = (float) color.getRed(); 26575 # float green = (float) color.getGreen(); 26576 # float blue = (float) color.getBlue(); 26577 # float denominator = 255.0; 26578 # Color.Builder resultBuilder = 26579 # Color 26580 # .newBuilder() 26581 # .setRed(red / denominator) 26582 # .setGreen(green / denominator) 26583 # .setBlue(blue / denominator); 26584 # int alpha = color.getAlpha(); 26585 # if (alpha != 255) { 26586 # result.setAlpha( 26587 # FloatValue 26588 # .newBuilder() 26589 # .setValue(((float) alpha) / denominator) 26590 # .build()); 26591 # } 26592 # return resultBuilder.build(); 26593 # } 26594 # // ... 26595 # 26596 # Example (iOS / Obj-C): 26597 # 26598 # // ... 26599 # static UIColor* fromProto(Color* protocolor) { 26600 # float red = [protocolor red]; 26601 # float green = [protocolor green]; 26602 # float blue = [protocolor blue]; 26603 # FloatValue* alpha_wrapper = [protocolor alpha]; 26604 # float alpha = 1.0; 26605 # if (alpha_wrapper != nil) { 26606 # alpha = [alpha_wrapper value]; 26607 # } 26608 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 26609 # } 26610 # 26611 # static Color* toProto(UIColor* color) { 26612 # CGFloat red, green, blue, alpha; 26613 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 26614 # return nil; 26615 # } 26616 # Color* result = [Color alloc] init]; 26617 # [result setRed:red]; 26618 # [result setGreen:green]; 26619 # [result setBlue:blue]; 26620 # if (alpha <= 0.9999) { 26621 # [result setAlpha:floatWrapperWithValue(alpha)]; 26622 # } 26623 # [result autorelease]; 26624 # return result; 26625 # } 26626 # // ... 26627 # 26628 # Example (JavaScript): 26629 # 26630 # // ... 26631 # 26632 # var protoToCssColor = function(rgb_color) { 26633 # var redFrac = rgb_color.red || 0.0; 26634 # var greenFrac = rgb_color.green || 0.0; 26635 # var blueFrac = rgb_color.blue || 0.0; 26636 # var red = Math.floor(redFrac * 255); 26637 # var green = Math.floor(greenFrac * 255); 26638 # var blue = Math.floor(blueFrac * 255); 26639 # 26640 # if (!('alpha' in rgb_color)) { 26641 # return rgbToCssColor_(red, green, blue); 26642 # } 26643 # 26644 # var alphaFrac = rgb_color.alpha.value || 0.0; 26645 # var rgbParams = [red, green, blue].join(','); 26646 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 26647 # }; 26648 # 26649 # var rgbToCssColor_ = function(red, green, blue) { 26650 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 26651 # var hexString = rgbNumber.toString(16); 26652 # var missingZeros = 6 - hexString.length; 26653 # var resultBuilder = ['#']; 26654 # for (var i = 0; i < missingZeros; i++) { 26655 # resultBuilder.push('0'); 26656 # } 26657 # resultBuilder.push(hexString); 26658 # return resultBuilder.join(''); 26659 # }; 26660 # 26661 # // ... 26662 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 26663 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 26664 # the final pixel color is defined by the equation: 26665 # 26666 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 26667 # 26668 # This means that a value of 1.0 corresponds to a solid color, whereas 26669 # a value of 0.0 corresponds to a completely transparent color. This 26670 # uses a wrapper message rather than a simple float scalar so that it is 26671 # possible to distinguish between a default value and the value being unset. 26672 # If omitted, this color object is to be rendered as a solid color 26673 # (as if the alpha value had been explicitly given with a value of 1.0). 26674 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 26675 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 26676 }, 26677 "width": 42, # The width of the border, in pixels. 26678 # Deprecated; the width is determined by the "style" field. 26679 "style": "A String", # The style of the border. 26680 }, 26681 "right": { # A border along a cell. # The right border of the cell. 26682 "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border. 26683 # for simplicity of conversion to/from color representations in various 26684 # languages over compactness; for example, the fields of this representation 26685 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 26686 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 26687 # method in iOS; and, with just a little work, it can be easily formatted into 26688 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 26689 # 26690 # Example (Java): 26691 # 26692 # import com.google.type.Color; 26693 # 26694 # // ... 26695 # public static java.awt.Color fromProto(Color protocolor) { 26696 # float alpha = protocolor.hasAlpha() 26697 # ? protocolor.getAlpha().getValue() 26698 # : 1.0; 26699 # 26700 # return new java.awt.Color( 26701 # protocolor.getRed(), 26702 # protocolor.getGreen(), 26703 # protocolor.getBlue(), 26704 # alpha); 26705 # } 26706 # 26707 # public static Color toProto(java.awt.Color color) { 26708 # float red = (float) color.getRed(); 26709 # float green = (float) color.getGreen(); 26710 # float blue = (float) color.getBlue(); 26711 # float denominator = 255.0; 26712 # Color.Builder resultBuilder = 26713 # Color 26714 # .newBuilder() 26715 # .setRed(red / denominator) 26716 # .setGreen(green / denominator) 26717 # .setBlue(blue / denominator); 26718 # int alpha = color.getAlpha(); 26719 # if (alpha != 255) { 26720 # result.setAlpha( 26721 # FloatValue 26722 # .newBuilder() 26723 # .setValue(((float) alpha) / denominator) 26724 # .build()); 26725 # } 26726 # return resultBuilder.build(); 26727 # } 26728 # // ... 26729 # 26730 # Example (iOS / Obj-C): 26731 # 26732 # // ... 26733 # static UIColor* fromProto(Color* protocolor) { 26734 # float red = [protocolor red]; 26735 # float green = [protocolor green]; 26736 # float blue = [protocolor blue]; 26737 # FloatValue* alpha_wrapper = [protocolor alpha]; 26738 # float alpha = 1.0; 26739 # if (alpha_wrapper != nil) { 26740 # alpha = [alpha_wrapper value]; 26741 # } 26742 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 26743 # } 26744 # 26745 # static Color* toProto(UIColor* color) { 26746 # CGFloat red, green, blue, alpha; 26747 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 26748 # return nil; 26749 # } 26750 # Color* result = [Color alloc] init]; 26751 # [result setRed:red]; 26752 # [result setGreen:green]; 26753 # [result setBlue:blue]; 26754 # if (alpha <= 0.9999) { 26755 # [result setAlpha:floatWrapperWithValue(alpha)]; 26756 # } 26757 # [result autorelease]; 26758 # return result; 26759 # } 26760 # // ... 26761 # 26762 # Example (JavaScript): 26763 # 26764 # // ... 26765 # 26766 # var protoToCssColor = function(rgb_color) { 26767 # var redFrac = rgb_color.red || 0.0; 26768 # var greenFrac = rgb_color.green || 0.0; 26769 # var blueFrac = rgb_color.blue || 0.0; 26770 # var red = Math.floor(redFrac * 255); 26771 # var green = Math.floor(greenFrac * 255); 26772 # var blue = Math.floor(blueFrac * 255); 26773 # 26774 # if (!('alpha' in rgb_color)) { 26775 # return rgbToCssColor_(red, green, blue); 26776 # } 26777 # 26778 # var alphaFrac = rgb_color.alpha.value || 0.0; 26779 # var rgbParams = [red, green, blue].join(','); 26780 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 26781 # }; 26782 # 26783 # var rgbToCssColor_ = function(red, green, blue) { 26784 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 26785 # var hexString = rgbNumber.toString(16); 26786 # var missingZeros = 6 - hexString.length; 26787 # var resultBuilder = ['#']; 26788 # for (var i = 0; i < missingZeros; i++) { 26789 # resultBuilder.push('0'); 26790 # } 26791 # resultBuilder.push(hexString); 26792 # return resultBuilder.join(''); 26793 # }; 26794 # 26795 # // ... 26796 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 26797 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 26798 # the final pixel color is defined by the equation: 26799 # 26800 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 26801 # 26802 # This means that a value of 1.0 corresponds to a solid color, whereas 26803 # a value of 0.0 corresponds to a completely transparent color. This 26804 # uses a wrapper message rather than a simple float scalar so that it is 26805 # possible to distinguish between a default value and the value being unset. 26806 # If omitted, this color object is to be rendered as a solid color 26807 # (as if the alpha value had been explicitly given with a value of 1.0). 26808 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 26809 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 26810 }, 26811 "width": 42, # The width of the border, in pixels. 26812 # Deprecated; the width is determined by the "style" field. 26813 "style": "A String", # The style of the border. 26814 }, 26815 "bottom": { # A border along a cell. # The bottom border of the cell. 26816 "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border. 26817 # for simplicity of conversion to/from color representations in various 26818 # languages over compactness; for example, the fields of this representation 26819 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 26820 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 26821 # method in iOS; and, with just a little work, it can be easily formatted into 26822 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 26823 # 26824 # Example (Java): 26825 # 26826 # import com.google.type.Color; 26827 # 26828 # // ... 26829 # public static java.awt.Color fromProto(Color protocolor) { 26830 # float alpha = protocolor.hasAlpha() 26831 # ? protocolor.getAlpha().getValue() 26832 # : 1.0; 26833 # 26834 # return new java.awt.Color( 26835 # protocolor.getRed(), 26836 # protocolor.getGreen(), 26837 # protocolor.getBlue(), 26838 # alpha); 26839 # } 26840 # 26841 # public static Color toProto(java.awt.Color color) { 26842 # float red = (float) color.getRed(); 26843 # float green = (float) color.getGreen(); 26844 # float blue = (float) color.getBlue(); 26845 # float denominator = 255.0; 26846 # Color.Builder resultBuilder = 26847 # Color 26848 # .newBuilder() 26849 # .setRed(red / denominator) 26850 # .setGreen(green / denominator) 26851 # .setBlue(blue / denominator); 26852 # int alpha = color.getAlpha(); 26853 # if (alpha != 255) { 26854 # result.setAlpha( 26855 # FloatValue 26856 # .newBuilder() 26857 # .setValue(((float) alpha) / denominator) 26858 # .build()); 26859 # } 26860 # return resultBuilder.build(); 26861 # } 26862 # // ... 26863 # 26864 # Example (iOS / Obj-C): 26865 # 26866 # // ... 26867 # static UIColor* fromProto(Color* protocolor) { 26868 # float red = [protocolor red]; 26869 # float green = [protocolor green]; 26870 # float blue = [protocolor blue]; 26871 # FloatValue* alpha_wrapper = [protocolor alpha]; 26872 # float alpha = 1.0; 26873 # if (alpha_wrapper != nil) { 26874 # alpha = [alpha_wrapper value]; 26875 # } 26876 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 26877 # } 26878 # 26879 # static Color* toProto(UIColor* color) { 26880 # CGFloat red, green, blue, alpha; 26881 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 26882 # return nil; 26883 # } 26884 # Color* result = [Color alloc] init]; 26885 # [result setRed:red]; 26886 # [result setGreen:green]; 26887 # [result setBlue:blue]; 26888 # if (alpha <= 0.9999) { 26889 # [result setAlpha:floatWrapperWithValue(alpha)]; 26890 # } 26891 # [result autorelease]; 26892 # return result; 26893 # } 26894 # // ... 26895 # 26896 # Example (JavaScript): 26897 # 26898 # // ... 26899 # 26900 # var protoToCssColor = function(rgb_color) { 26901 # var redFrac = rgb_color.red || 0.0; 26902 # var greenFrac = rgb_color.green || 0.0; 26903 # var blueFrac = rgb_color.blue || 0.0; 26904 # var red = Math.floor(redFrac * 255); 26905 # var green = Math.floor(greenFrac * 255); 26906 # var blue = Math.floor(blueFrac * 255); 26907 # 26908 # if (!('alpha' in rgb_color)) { 26909 # return rgbToCssColor_(red, green, blue); 26910 # } 26911 # 26912 # var alphaFrac = rgb_color.alpha.value || 0.0; 26913 # var rgbParams = [red, green, blue].join(','); 26914 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 26915 # }; 26916 # 26917 # var rgbToCssColor_ = function(red, green, blue) { 26918 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 26919 # var hexString = rgbNumber.toString(16); 26920 # var missingZeros = 6 - hexString.length; 26921 # var resultBuilder = ['#']; 26922 # for (var i = 0; i < missingZeros; i++) { 26923 # resultBuilder.push('0'); 26924 # } 26925 # resultBuilder.push(hexString); 26926 # return resultBuilder.join(''); 26927 # }; 26928 # 26929 # // ... 26930 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 26931 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 26932 # the final pixel color is defined by the equation: 26933 # 26934 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 26935 # 26936 # This means that a value of 1.0 corresponds to a solid color, whereas 26937 # a value of 0.0 corresponds to a completely transparent color. This 26938 # uses a wrapper message rather than a simple float scalar so that it is 26939 # possible to distinguish between a default value and the value being unset. 26940 # If omitted, this color object is to be rendered as a solid color 26941 # (as if the alpha value had been explicitly given with a value of 1.0). 26942 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 26943 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 26944 }, 26945 "width": 42, # The width of the border, in pixels. 26946 # Deprecated; the width is determined by the "style" field. 26947 "style": "A String", # The style of the border. 26948 }, 26949 "left": { # A border along a cell. # The left border of the cell. 26950 "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border. 26951 # for simplicity of conversion to/from color representations in various 26952 # languages over compactness; for example, the fields of this representation 26953 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 26954 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 26955 # method in iOS; and, with just a little work, it can be easily formatted into 26956 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 26957 # 26958 # Example (Java): 26959 # 26960 # import com.google.type.Color; 26961 # 26962 # // ... 26963 # public static java.awt.Color fromProto(Color protocolor) { 26964 # float alpha = protocolor.hasAlpha() 26965 # ? protocolor.getAlpha().getValue() 26966 # : 1.0; 26967 # 26968 # return new java.awt.Color( 26969 # protocolor.getRed(), 26970 # protocolor.getGreen(), 26971 # protocolor.getBlue(), 26972 # alpha); 26973 # } 26974 # 26975 # public static Color toProto(java.awt.Color color) { 26976 # float red = (float) color.getRed(); 26977 # float green = (float) color.getGreen(); 26978 # float blue = (float) color.getBlue(); 26979 # float denominator = 255.0; 26980 # Color.Builder resultBuilder = 26981 # Color 26982 # .newBuilder() 26983 # .setRed(red / denominator) 26984 # .setGreen(green / denominator) 26985 # .setBlue(blue / denominator); 26986 # int alpha = color.getAlpha(); 26987 # if (alpha != 255) { 26988 # result.setAlpha( 26989 # FloatValue 26990 # .newBuilder() 26991 # .setValue(((float) alpha) / denominator) 26992 # .build()); 26993 # } 26994 # return resultBuilder.build(); 26995 # } 26996 # // ... 26997 # 26998 # Example (iOS / Obj-C): 26999 # 27000 # // ... 27001 # static UIColor* fromProto(Color* protocolor) { 27002 # float red = [protocolor red]; 27003 # float green = [protocolor green]; 27004 # float blue = [protocolor blue]; 27005 # FloatValue* alpha_wrapper = [protocolor alpha]; 27006 # float alpha = 1.0; 27007 # if (alpha_wrapper != nil) { 27008 # alpha = [alpha_wrapper value]; 27009 # } 27010 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 27011 # } 27012 # 27013 # static Color* toProto(UIColor* color) { 27014 # CGFloat red, green, blue, alpha; 27015 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 27016 # return nil; 27017 # } 27018 # Color* result = [Color alloc] init]; 27019 # [result setRed:red]; 27020 # [result setGreen:green]; 27021 # [result setBlue:blue]; 27022 # if (alpha <= 0.9999) { 27023 # [result setAlpha:floatWrapperWithValue(alpha)]; 27024 # } 27025 # [result autorelease]; 27026 # return result; 27027 # } 27028 # // ... 27029 # 27030 # Example (JavaScript): 27031 # 27032 # // ... 27033 # 27034 # var protoToCssColor = function(rgb_color) { 27035 # var redFrac = rgb_color.red || 0.0; 27036 # var greenFrac = rgb_color.green || 0.0; 27037 # var blueFrac = rgb_color.blue || 0.0; 27038 # var red = Math.floor(redFrac * 255); 27039 # var green = Math.floor(greenFrac * 255); 27040 # var blue = Math.floor(blueFrac * 255); 27041 # 27042 # if (!('alpha' in rgb_color)) { 27043 # return rgbToCssColor_(red, green, blue); 27044 # } 27045 # 27046 # var alphaFrac = rgb_color.alpha.value || 0.0; 27047 # var rgbParams = [red, green, blue].join(','); 27048 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 27049 # }; 27050 # 27051 # var rgbToCssColor_ = function(red, green, blue) { 27052 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 27053 # var hexString = rgbNumber.toString(16); 27054 # var missingZeros = 6 - hexString.length; 27055 # var resultBuilder = ['#']; 27056 # for (var i = 0; i < missingZeros; i++) { 27057 # resultBuilder.push('0'); 27058 # } 27059 # resultBuilder.push(hexString); 27060 # return resultBuilder.join(''); 27061 # }; 27062 # 27063 # // ... 27064 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 27065 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 27066 # the final pixel color is defined by the equation: 27067 # 27068 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 27069 # 27070 # This means that a value of 1.0 corresponds to a solid color, whereas 27071 # a value of 0.0 corresponds to a completely transparent color. This 27072 # uses a wrapper message rather than a simple float scalar so that it is 27073 # possible to distinguish between a default value and the value being unset. 27074 # If omitted, this color object is to be rendered as a solid color 27075 # (as if the alpha value had been explicitly given with a value of 1.0). 27076 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 27077 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 27078 }, 27079 "width": 42, # The width of the border, in pixels. 27080 # Deprecated; the width is determined by the "style" field. 27081 "style": "A String", # The style of the border. 27082 }, 27083 }, 27084 "wrapStrategy": "A String", # The wrap strategy for the value in the cell. 27085 }, 27086 }, 27087 "gradientRule": { # A rule that applies a gradient color scale format, based on # The formatting will vary based on the gradients in the rule. 27088 # the interpolation points listed. The format of a cell will vary 27089 # based on its contents as compared to the values of the interpolation 27090 # points. 27091 "maxpoint": { # A single interpolation point on a gradient conditional format. # The final interpolation point. 27092 # These pin the gradient color scale according to the color, 27093 # type and value chosen. 27094 "color": { # Represents a color in the RGBA color space. This representation is designed # The color this interpolation point should use. 27095 # for simplicity of conversion to/from color representations in various 27096 # languages over compactness; for example, the fields of this representation 27097 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 27098 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 27099 # method in iOS; and, with just a little work, it can be easily formatted into 27100 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 27101 # 27102 # Example (Java): 27103 # 27104 # import com.google.type.Color; 27105 # 27106 # // ... 27107 # public static java.awt.Color fromProto(Color protocolor) { 27108 # float alpha = protocolor.hasAlpha() 27109 # ? protocolor.getAlpha().getValue() 27110 # : 1.0; 27111 # 27112 # return new java.awt.Color( 27113 # protocolor.getRed(), 27114 # protocolor.getGreen(), 27115 # protocolor.getBlue(), 27116 # alpha); 27117 # } 27118 # 27119 # public static Color toProto(java.awt.Color color) { 27120 # float red = (float) color.getRed(); 27121 # float green = (float) color.getGreen(); 27122 # float blue = (float) color.getBlue(); 27123 # float denominator = 255.0; 27124 # Color.Builder resultBuilder = 27125 # Color 27126 # .newBuilder() 27127 # .setRed(red / denominator) 27128 # .setGreen(green / denominator) 27129 # .setBlue(blue / denominator); 27130 # int alpha = color.getAlpha(); 27131 # if (alpha != 255) { 27132 # result.setAlpha( 27133 # FloatValue 27134 # .newBuilder() 27135 # .setValue(((float) alpha) / denominator) 27136 # .build()); 27137 # } 27138 # return resultBuilder.build(); 27139 # } 27140 # // ... 27141 # 27142 # Example (iOS / Obj-C): 27143 # 27144 # // ... 27145 # static UIColor* fromProto(Color* protocolor) { 27146 # float red = [protocolor red]; 27147 # float green = [protocolor green]; 27148 # float blue = [protocolor blue]; 27149 # FloatValue* alpha_wrapper = [protocolor alpha]; 27150 # float alpha = 1.0; 27151 # if (alpha_wrapper != nil) { 27152 # alpha = [alpha_wrapper value]; 27153 # } 27154 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 27155 # } 27156 # 27157 # static Color* toProto(UIColor* color) { 27158 # CGFloat red, green, blue, alpha; 27159 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 27160 # return nil; 27161 # } 27162 # Color* result = [Color alloc] init]; 27163 # [result setRed:red]; 27164 # [result setGreen:green]; 27165 # [result setBlue:blue]; 27166 # if (alpha <= 0.9999) { 27167 # [result setAlpha:floatWrapperWithValue(alpha)]; 27168 # } 27169 # [result autorelease]; 27170 # return result; 27171 # } 27172 # // ... 27173 # 27174 # Example (JavaScript): 27175 # 27176 # // ... 27177 # 27178 # var protoToCssColor = function(rgb_color) { 27179 # var redFrac = rgb_color.red || 0.0; 27180 # var greenFrac = rgb_color.green || 0.0; 27181 # var blueFrac = rgb_color.blue || 0.0; 27182 # var red = Math.floor(redFrac * 255); 27183 # var green = Math.floor(greenFrac * 255); 27184 # var blue = Math.floor(blueFrac * 255); 27185 # 27186 # if (!('alpha' in rgb_color)) { 27187 # return rgbToCssColor_(red, green, blue); 27188 # } 27189 # 27190 # var alphaFrac = rgb_color.alpha.value || 0.0; 27191 # var rgbParams = [red, green, blue].join(','); 27192 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 27193 # }; 27194 # 27195 # var rgbToCssColor_ = function(red, green, blue) { 27196 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 27197 # var hexString = rgbNumber.toString(16); 27198 # var missingZeros = 6 - hexString.length; 27199 # var resultBuilder = ['#']; 27200 # for (var i = 0; i < missingZeros; i++) { 27201 # resultBuilder.push('0'); 27202 # } 27203 # resultBuilder.push(hexString); 27204 # return resultBuilder.join(''); 27205 # }; 27206 # 27207 # // ... 27208 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 27209 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 27210 # the final pixel color is defined by the equation: 27211 # 27212 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 27213 # 27214 # This means that a value of 1.0 corresponds to a solid color, whereas 27215 # a value of 0.0 corresponds to a completely transparent color. This 27216 # uses a wrapper message rather than a simple float scalar so that it is 27217 # possible to distinguish between a default value and the value being unset. 27218 # If omitted, this color object is to be rendered as a solid color 27219 # (as if the alpha value had been explicitly given with a value of 1.0). 27220 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 27221 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 27222 }, 27223 "type": "A String", # How the value should be interpreted. 27224 "value": "A String", # The value this interpolation point uses. May be a formula. 27225 # Unused if type is MIN or 27226 # MAX. 27227 }, 27228 "midpoint": { # A single interpolation point on a gradient conditional format. # An optional midway interpolation point. 27229 # These pin the gradient color scale according to the color, 27230 # type and value chosen. 27231 "color": { # Represents a color in the RGBA color space. This representation is designed # The color this interpolation point should use. 27232 # for simplicity of conversion to/from color representations in various 27233 # languages over compactness; for example, the fields of this representation 27234 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 27235 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 27236 # method in iOS; and, with just a little work, it can be easily formatted into 27237 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 27238 # 27239 # Example (Java): 27240 # 27241 # import com.google.type.Color; 27242 # 27243 # // ... 27244 # public static java.awt.Color fromProto(Color protocolor) { 27245 # float alpha = protocolor.hasAlpha() 27246 # ? protocolor.getAlpha().getValue() 27247 # : 1.0; 27248 # 27249 # return new java.awt.Color( 27250 # protocolor.getRed(), 27251 # protocolor.getGreen(), 27252 # protocolor.getBlue(), 27253 # alpha); 27254 # } 27255 # 27256 # public static Color toProto(java.awt.Color color) { 27257 # float red = (float) color.getRed(); 27258 # float green = (float) color.getGreen(); 27259 # float blue = (float) color.getBlue(); 27260 # float denominator = 255.0; 27261 # Color.Builder resultBuilder = 27262 # Color 27263 # .newBuilder() 27264 # .setRed(red / denominator) 27265 # .setGreen(green / denominator) 27266 # .setBlue(blue / denominator); 27267 # int alpha = color.getAlpha(); 27268 # if (alpha != 255) { 27269 # result.setAlpha( 27270 # FloatValue 27271 # .newBuilder() 27272 # .setValue(((float) alpha) / denominator) 27273 # .build()); 27274 # } 27275 # return resultBuilder.build(); 27276 # } 27277 # // ... 27278 # 27279 # Example (iOS / Obj-C): 27280 # 27281 # // ... 27282 # static UIColor* fromProto(Color* protocolor) { 27283 # float red = [protocolor red]; 27284 # float green = [protocolor green]; 27285 # float blue = [protocolor blue]; 27286 # FloatValue* alpha_wrapper = [protocolor alpha]; 27287 # float alpha = 1.0; 27288 # if (alpha_wrapper != nil) { 27289 # alpha = [alpha_wrapper value]; 27290 # } 27291 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 27292 # } 27293 # 27294 # static Color* toProto(UIColor* color) { 27295 # CGFloat red, green, blue, alpha; 27296 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 27297 # return nil; 27298 # } 27299 # Color* result = [Color alloc] init]; 27300 # [result setRed:red]; 27301 # [result setGreen:green]; 27302 # [result setBlue:blue]; 27303 # if (alpha <= 0.9999) { 27304 # [result setAlpha:floatWrapperWithValue(alpha)]; 27305 # } 27306 # [result autorelease]; 27307 # return result; 27308 # } 27309 # // ... 27310 # 27311 # Example (JavaScript): 27312 # 27313 # // ... 27314 # 27315 # var protoToCssColor = function(rgb_color) { 27316 # var redFrac = rgb_color.red || 0.0; 27317 # var greenFrac = rgb_color.green || 0.0; 27318 # var blueFrac = rgb_color.blue || 0.0; 27319 # var red = Math.floor(redFrac * 255); 27320 # var green = Math.floor(greenFrac * 255); 27321 # var blue = Math.floor(blueFrac * 255); 27322 # 27323 # if (!('alpha' in rgb_color)) { 27324 # return rgbToCssColor_(red, green, blue); 27325 # } 27326 # 27327 # var alphaFrac = rgb_color.alpha.value || 0.0; 27328 # var rgbParams = [red, green, blue].join(','); 27329 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 27330 # }; 27331 # 27332 # var rgbToCssColor_ = function(red, green, blue) { 27333 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 27334 # var hexString = rgbNumber.toString(16); 27335 # var missingZeros = 6 - hexString.length; 27336 # var resultBuilder = ['#']; 27337 # for (var i = 0; i < missingZeros; i++) { 27338 # resultBuilder.push('0'); 27339 # } 27340 # resultBuilder.push(hexString); 27341 # return resultBuilder.join(''); 27342 # }; 27343 # 27344 # // ... 27345 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 27346 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 27347 # the final pixel color is defined by the equation: 27348 # 27349 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 27350 # 27351 # This means that a value of 1.0 corresponds to a solid color, whereas 27352 # a value of 0.0 corresponds to a completely transparent color. This 27353 # uses a wrapper message rather than a simple float scalar so that it is 27354 # possible to distinguish between a default value and the value being unset. 27355 # If omitted, this color object is to be rendered as a solid color 27356 # (as if the alpha value had been explicitly given with a value of 1.0). 27357 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 27358 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 27359 }, 27360 "type": "A String", # How the value should be interpreted. 27361 "value": "A String", # The value this interpolation point uses. May be a formula. 27362 # Unused if type is MIN or 27363 # MAX. 27364 }, 27365 "minpoint": { # A single interpolation point on a gradient conditional format. # The starting interpolation point. 27366 # These pin the gradient color scale according to the color, 27367 # type and value chosen. 27368 "color": { # Represents a color in the RGBA color space. This representation is designed # The color this interpolation point should use. 27369 # for simplicity of conversion to/from color representations in various 27370 # languages over compactness; for example, the fields of this representation 27371 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 27372 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 27373 # method in iOS; and, with just a little work, it can be easily formatted into 27374 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 27375 # 27376 # Example (Java): 27377 # 27378 # import com.google.type.Color; 27379 # 27380 # // ... 27381 # public static java.awt.Color fromProto(Color protocolor) { 27382 # float alpha = protocolor.hasAlpha() 27383 # ? protocolor.getAlpha().getValue() 27384 # : 1.0; 27385 # 27386 # return new java.awt.Color( 27387 # protocolor.getRed(), 27388 # protocolor.getGreen(), 27389 # protocolor.getBlue(), 27390 # alpha); 27391 # } 27392 # 27393 # public static Color toProto(java.awt.Color color) { 27394 # float red = (float) color.getRed(); 27395 # float green = (float) color.getGreen(); 27396 # float blue = (float) color.getBlue(); 27397 # float denominator = 255.0; 27398 # Color.Builder resultBuilder = 27399 # Color 27400 # .newBuilder() 27401 # .setRed(red / denominator) 27402 # .setGreen(green / denominator) 27403 # .setBlue(blue / denominator); 27404 # int alpha = color.getAlpha(); 27405 # if (alpha != 255) { 27406 # result.setAlpha( 27407 # FloatValue 27408 # .newBuilder() 27409 # .setValue(((float) alpha) / denominator) 27410 # .build()); 27411 # } 27412 # return resultBuilder.build(); 27413 # } 27414 # // ... 27415 # 27416 # Example (iOS / Obj-C): 27417 # 27418 # // ... 27419 # static UIColor* fromProto(Color* protocolor) { 27420 # float red = [protocolor red]; 27421 # float green = [protocolor green]; 27422 # float blue = [protocolor blue]; 27423 # FloatValue* alpha_wrapper = [protocolor alpha]; 27424 # float alpha = 1.0; 27425 # if (alpha_wrapper != nil) { 27426 # alpha = [alpha_wrapper value]; 27427 # } 27428 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 27429 # } 27430 # 27431 # static Color* toProto(UIColor* color) { 27432 # CGFloat red, green, blue, alpha; 27433 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 27434 # return nil; 27435 # } 27436 # Color* result = [Color alloc] init]; 27437 # [result setRed:red]; 27438 # [result setGreen:green]; 27439 # [result setBlue:blue]; 27440 # if (alpha <= 0.9999) { 27441 # [result setAlpha:floatWrapperWithValue(alpha)]; 27442 # } 27443 # [result autorelease]; 27444 # return result; 27445 # } 27446 # // ... 27447 # 27448 # Example (JavaScript): 27449 # 27450 # // ... 27451 # 27452 # var protoToCssColor = function(rgb_color) { 27453 # var redFrac = rgb_color.red || 0.0; 27454 # var greenFrac = rgb_color.green || 0.0; 27455 # var blueFrac = rgb_color.blue || 0.0; 27456 # var red = Math.floor(redFrac * 255); 27457 # var green = Math.floor(greenFrac * 255); 27458 # var blue = Math.floor(blueFrac * 255); 27459 # 27460 # if (!('alpha' in rgb_color)) { 27461 # return rgbToCssColor_(red, green, blue); 27462 # } 27463 # 27464 # var alphaFrac = rgb_color.alpha.value || 0.0; 27465 # var rgbParams = [red, green, blue].join(','); 27466 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 27467 # }; 27468 # 27469 # var rgbToCssColor_ = function(red, green, blue) { 27470 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 27471 # var hexString = rgbNumber.toString(16); 27472 # var missingZeros = 6 - hexString.length; 27473 # var resultBuilder = ['#']; 27474 # for (var i = 0; i < missingZeros; i++) { 27475 # resultBuilder.push('0'); 27476 # } 27477 # resultBuilder.push(hexString); 27478 # return resultBuilder.join(''); 27479 # }; 27480 # 27481 # // ... 27482 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 27483 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 27484 # the final pixel color is defined by the equation: 27485 # 27486 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 27487 # 27488 # This means that a value of 1.0 corresponds to a solid color, whereas 27489 # a value of 0.0 corresponds to a completely transparent color. This 27490 # uses a wrapper message rather than a simple float scalar so that it is 27491 # possible to distinguish between a default value and the value being unset. 27492 # If omitted, this color object is to be rendered as a solid color 27493 # (as if the alpha value had been explicitly given with a value of 1.0). 27494 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 27495 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 27496 }, 27497 "type": "A String", # How the value should be interpreted. 27498 "value": "A String", # The value this interpolation point uses. May be a formula. 27499 # Unused if type is MIN or 27500 # MAX. 27501 }, 27502 }, 27503 }, 27504 }, 27505 "addBanding": { # The result of adding a banded range. # A reply from adding a banded range. 27506 "bandedRange": { # A banded (alternating colors) range in a sheet. # The banded range that was added. 27507 "range": { # A range on a sheet. # The range over which these properties are applied. 27508 # All indexes are zero-based. 27509 # Indexes are half open, e.g the start index is inclusive 27510 # and the end index is exclusive -- [start_index, end_index). 27511 # Missing indexes indicate the range is unbounded on that side. 27512 # 27513 # For example, if `"Sheet1"` is sheet ID 0, then: 27514 # 27515 # `Sheet1!A1:A1 == sheet_id: 0, 27516 # start_row_index: 0, end_row_index: 1, 27517 # start_column_index: 0, end_column_index: 1` 27518 # 27519 # `Sheet1!A3:B4 == sheet_id: 0, 27520 # start_row_index: 2, end_row_index: 4, 27521 # start_column_index: 0, end_column_index: 2` 27522 # 27523 # `Sheet1!A:B == sheet_id: 0, 27524 # start_column_index: 0, end_column_index: 2` 27525 # 27526 # `Sheet1!A5:B == sheet_id: 0, 27527 # start_row_index: 4, 27528 # start_column_index: 0, end_column_index: 2` 27529 # 27530 # `Sheet1 == sheet_id:0` 27531 # 27532 # The start index must always be less than or equal to the end index. 27533 # If the start index equals the end index, then the range is empty. 27534 # Empty ranges are typically not meaningful and are usually rendered in the 27535 # UI as `#REF!`. 27536 "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded. 27537 "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded. 27538 "sheetId": 42, # The sheet this range is on. 27539 "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded. 27540 "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded. 27541 }, 27542 "columnProperties": { # Properties referring a single dimension (either row or column). If both # Properties for column bands. These properties will be applied on a column- 27543 # by-column basis throughout all the columns in the range. At least one of 27544 # row_properties or column_properties must be specified. 27545 # BandedRange.row_properties and BandedRange.column_properties are 27546 # set, the fill colors are applied to cells according to the following rules: 27547 # 27548 # * header_color and footer_color take priority over band colors. 27549 # * first_band_color takes priority over second_band_color. 27550 # * row_properties takes priority over column_properties. 27551 # 27552 # For example, the first row color takes priority over the first column 27553 # color, but the first column color takes priority over the second row color. 27554 # Similarly, the row header takes priority over the column header in the 27555 # top left cell, but the column header takes priority over the first row 27556 # color if the row header is not set. 27557 "secondBandColor": { # Represents a color in the RGBA color space. This representation is designed # The second color that is alternating. (Required) 27558 # for simplicity of conversion to/from color representations in various 27559 # languages over compactness; for example, the fields of this representation 27560 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 27561 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 27562 # method in iOS; and, with just a little work, it can be easily formatted into 27563 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 27564 # 27565 # Example (Java): 27566 # 27567 # import com.google.type.Color; 27568 # 27569 # // ... 27570 # public static java.awt.Color fromProto(Color protocolor) { 27571 # float alpha = protocolor.hasAlpha() 27572 # ? protocolor.getAlpha().getValue() 27573 # : 1.0; 27574 # 27575 # return new java.awt.Color( 27576 # protocolor.getRed(), 27577 # protocolor.getGreen(), 27578 # protocolor.getBlue(), 27579 # alpha); 27580 # } 27581 # 27582 # public static Color toProto(java.awt.Color color) { 27583 # float red = (float) color.getRed(); 27584 # float green = (float) color.getGreen(); 27585 # float blue = (float) color.getBlue(); 27586 # float denominator = 255.0; 27587 # Color.Builder resultBuilder = 27588 # Color 27589 # .newBuilder() 27590 # .setRed(red / denominator) 27591 # .setGreen(green / denominator) 27592 # .setBlue(blue / denominator); 27593 # int alpha = color.getAlpha(); 27594 # if (alpha != 255) { 27595 # result.setAlpha( 27596 # FloatValue 27597 # .newBuilder() 27598 # .setValue(((float) alpha) / denominator) 27599 # .build()); 27600 # } 27601 # return resultBuilder.build(); 27602 # } 27603 # // ... 27604 # 27605 # Example (iOS / Obj-C): 27606 # 27607 # // ... 27608 # static UIColor* fromProto(Color* protocolor) { 27609 # float red = [protocolor red]; 27610 # float green = [protocolor green]; 27611 # float blue = [protocolor blue]; 27612 # FloatValue* alpha_wrapper = [protocolor alpha]; 27613 # float alpha = 1.0; 27614 # if (alpha_wrapper != nil) { 27615 # alpha = [alpha_wrapper value]; 27616 # } 27617 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 27618 # } 27619 # 27620 # static Color* toProto(UIColor* color) { 27621 # CGFloat red, green, blue, alpha; 27622 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 27623 # return nil; 27624 # } 27625 # Color* result = [Color alloc] init]; 27626 # [result setRed:red]; 27627 # [result setGreen:green]; 27628 # [result setBlue:blue]; 27629 # if (alpha <= 0.9999) { 27630 # [result setAlpha:floatWrapperWithValue(alpha)]; 27631 # } 27632 # [result autorelease]; 27633 # return result; 27634 # } 27635 # // ... 27636 # 27637 # Example (JavaScript): 27638 # 27639 # // ... 27640 # 27641 # var protoToCssColor = function(rgb_color) { 27642 # var redFrac = rgb_color.red || 0.0; 27643 # var greenFrac = rgb_color.green || 0.0; 27644 # var blueFrac = rgb_color.blue || 0.0; 27645 # var red = Math.floor(redFrac * 255); 27646 # var green = Math.floor(greenFrac * 255); 27647 # var blue = Math.floor(blueFrac * 255); 27648 # 27649 # if (!('alpha' in rgb_color)) { 27650 # return rgbToCssColor_(red, green, blue); 27651 # } 27652 # 27653 # var alphaFrac = rgb_color.alpha.value || 0.0; 27654 # var rgbParams = [red, green, blue].join(','); 27655 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 27656 # }; 27657 # 27658 # var rgbToCssColor_ = function(red, green, blue) { 27659 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 27660 # var hexString = rgbNumber.toString(16); 27661 # var missingZeros = 6 - hexString.length; 27662 # var resultBuilder = ['#']; 27663 # for (var i = 0; i < missingZeros; i++) { 27664 # resultBuilder.push('0'); 27665 # } 27666 # resultBuilder.push(hexString); 27667 # return resultBuilder.join(''); 27668 # }; 27669 # 27670 # // ... 27671 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 27672 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 27673 # the final pixel color is defined by the equation: 27674 # 27675 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 27676 # 27677 # This means that a value of 1.0 corresponds to a solid color, whereas 27678 # a value of 0.0 corresponds to a completely transparent color. This 27679 # uses a wrapper message rather than a simple float scalar so that it is 27680 # possible to distinguish between a default value and the value being unset. 27681 # If omitted, this color object is to be rendered as a solid color 27682 # (as if the alpha value had been explicitly given with a value of 1.0). 27683 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 27684 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 27685 }, 27686 "headerColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the first row or column. If this field is set, the first 27687 # row or column will be filled with this color and the colors will 27688 # alternate between first_band_color and second_band_color starting 27689 # from the second row or column. Otherwise, the first row or column will be 27690 # filled with first_band_color and the colors will proceed to alternate 27691 # as they normally would. 27692 # for simplicity of conversion to/from color representations in various 27693 # languages over compactness; for example, the fields of this representation 27694 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 27695 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 27696 # method in iOS; and, with just a little work, it can be easily formatted into 27697 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 27698 # 27699 # Example (Java): 27700 # 27701 # import com.google.type.Color; 27702 # 27703 # // ... 27704 # public static java.awt.Color fromProto(Color protocolor) { 27705 # float alpha = protocolor.hasAlpha() 27706 # ? protocolor.getAlpha().getValue() 27707 # : 1.0; 27708 # 27709 # return new java.awt.Color( 27710 # protocolor.getRed(), 27711 # protocolor.getGreen(), 27712 # protocolor.getBlue(), 27713 # alpha); 27714 # } 27715 # 27716 # public static Color toProto(java.awt.Color color) { 27717 # float red = (float) color.getRed(); 27718 # float green = (float) color.getGreen(); 27719 # float blue = (float) color.getBlue(); 27720 # float denominator = 255.0; 27721 # Color.Builder resultBuilder = 27722 # Color 27723 # .newBuilder() 27724 # .setRed(red / denominator) 27725 # .setGreen(green / denominator) 27726 # .setBlue(blue / denominator); 27727 # int alpha = color.getAlpha(); 27728 # if (alpha != 255) { 27729 # result.setAlpha( 27730 # FloatValue 27731 # .newBuilder() 27732 # .setValue(((float) alpha) / denominator) 27733 # .build()); 27734 # } 27735 # return resultBuilder.build(); 27736 # } 27737 # // ... 27738 # 27739 # Example (iOS / Obj-C): 27740 # 27741 # // ... 27742 # static UIColor* fromProto(Color* protocolor) { 27743 # float red = [protocolor red]; 27744 # float green = [protocolor green]; 27745 # float blue = [protocolor blue]; 27746 # FloatValue* alpha_wrapper = [protocolor alpha]; 27747 # float alpha = 1.0; 27748 # if (alpha_wrapper != nil) { 27749 # alpha = [alpha_wrapper value]; 27750 # } 27751 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 27752 # } 27753 # 27754 # static Color* toProto(UIColor* color) { 27755 # CGFloat red, green, blue, alpha; 27756 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 27757 # return nil; 27758 # } 27759 # Color* result = [Color alloc] init]; 27760 # [result setRed:red]; 27761 # [result setGreen:green]; 27762 # [result setBlue:blue]; 27763 # if (alpha <= 0.9999) { 27764 # [result setAlpha:floatWrapperWithValue(alpha)]; 27765 # } 27766 # [result autorelease]; 27767 # return result; 27768 # } 27769 # // ... 27770 # 27771 # Example (JavaScript): 27772 # 27773 # // ... 27774 # 27775 # var protoToCssColor = function(rgb_color) { 27776 # var redFrac = rgb_color.red || 0.0; 27777 # var greenFrac = rgb_color.green || 0.0; 27778 # var blueFrac = rgb_color.blue || 0.0; 27779 # var red = Math.floor(redFrac * 255); 27780 # var green = Math.floor(greenFrac * 255); 27781 # var blue = Math.floor(blueFrac * 255); 27782 # 27783 # if (!('alpha' in rgb_color)) { 27784 # return rgbToCssColor_(red, green, blue); 27785 # } 27786 # 27787 # var alphaFrac = rgb_color.alpha.value || 0.0; 27788 # var rgbParams = [red, green, blue].join(','); 27789 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 27790 # }; 27791 # 27792 # var rgbToCssColor_ = function(red, green, blue) { 27793 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 27794 # var hexString = rgbNumber.toString(16); 27795 # var missingZeros = 6 - hexString.length; 27796 # var resultBuilder = ['#']; 27797 # for (var i = 0; i < missingZeros; i++) { 27798 # resultBuilder.push('0'); 27799 # } 27800 # resultBuilder.push(hexString); 27801 # return resultBuilder.join(''); 27802 # }; 27803 # 27804 # // ... 27805 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 27806 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 27807 # the final pixel color is defined by the equation: 27808 # 27809 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 27810 # 27811 # This means that a value of 1.0 corresponds to a solid color, whereas 27812 # a value of 0.0 corresponds to a completely transparent color. This 27813 # uses a wrapper message rather than a simple float scalar so that it is 27814 # possible to distinguish between a default value and the value being unset. 27815 # If omitted, this color object is to be rendered as a solid color 27816 # (as if the alpha value had been explicitly given with a value of 1.0). 27817 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 27818 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 27819 }, 27820 "footerColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the last row or column. If this field is not set, the last 27821 # row or column will be filled with either first_band_color or 27822 # second_band_color, depending on the color of the previous row or 27823 # column. 27824 # for simplicity of conversion to/from color representations in various 27825 # languages over compactness; for example, the fields of this representation 27826 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 27827 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 27828 # method in iOS; and, with just a little work, it can be easily formatted into 27829 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 27830 # 27831 # Example (Java): 27832 # 27833 # import com.google.type.Color; 27834 # 27835 # // ... 27836 # public static java.awt.Color fromProto(Color protocolor) { 27837 # float alpha = protocolor.hasAlpha() 27838 # ? protocolor.getAlpha().getValue() 27839 # : 1.0; 27840 # 27841 # return new java.awt.Color( 27842 # protocolor.getRed(), 27843 # protocolor.getGreen(), 27844 # protocolor.getBlue(), 27845 # alpha); 27846 # } 27847 # 27848 # public static Color toProto(java.awt.Color color) { 27849 # float red = (float) color.getRed(); 27850 # float green = (float) color.getGreen(); 27851 # float blue = (float) color.getBlue(); 27852 # float denominator = 255.0; 27853 # Color.Builder resultBuilder = 27854 # Color 27855 # .newBuilder() 27856 # .setRed(red / denominator) 27857 # .setGreen(green / denominator) 27858 # .setBlue(blue / denominator); 27859 # int alpha = color.getAlpha(); 27860 # if (alpha != 255) { 27861 # result.setAlpha( 27862 # FloatValue 27863 # .newBuilder() 27864 # .setValue(((float) alpha) / denominator) 27865 # .build()); 27866 # } 27867 # return resultBuilder.build(); 27868 # } 27869 # // ... 27870 # 27871 # Example (iOS / Obj-C): 27872 # 27873 # // ... 27874 # static UIColor* fromProto(Color* protocolor) { 27875 # float red = [protocolor red]; 27876 # float green = [protocolor green]; 27877 # float blue = [protocolor blue]; 27878 # FloatValue* alpha_wrapper = [protocolor alpha]; 27879 # float alpha = 1.0; 27880 # if (alpha_wrapper != nil) { 27881 # alpha = [alpha_wrapper value]; 27882 # } 27883 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 27884 # } 27885 # 27886 # static Color* toProto(UIColor* color) { 27887 # CGFloat red, green, blue, alpha; 27888 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 27889 # return nil; 27890 # } 27891 # Color* result = [Color alloc] init]; 27892 # [result setRed:red]; 27893 # [result setGreen:green]; 27894 # [result setBlue:blue]; 27895 # if (alpha <= 0.9999) { 27896 # [result setAlpha:floatWrapperWithValue(alpha)]; 27897 # } 27898 # [result autorelease]; 27899 # return result; 27900 # } 27901 # // ... 27902 # 27903 # Example (JavaScript): 27904 # 27905 # // ... 27906 # 27907 # var protoToCssColor = function(rgb_color) { 27908 # var redFrac = rgb_color.red || 0.0; 27909 # var greenFrac = rgb_color.green || 0.0; 27910 # var blueFrac = rgb_color.blue || 0.0; 27911 # var red = Math.floor(redFrac * 255); 27912 # var green = Math.floor(greenFrac * 255); 27913 # var blue = Math.floor(blueFrac * 255); 27914 # 27915 # if (!('alpha' in rgb_color)) { 27916 # return rgbToCssColor_(red, green, blue); 27917 # } 27918 # 27919 # var alphaFrac = rgb_color.alpha.value || 0.0; 27920 # var rgbParams = [red, green, blue].join(','); 27921 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 27922 # }; 27923 # 27924 # var rgbToCssColor_ = function(red, green, blue) { 27925 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 27926 # var hexString = rgbNumber.toString(16); 27927 # var missingZeros = 6 - hexString.length; 27928 # var resultBuilder = ['#']; 27929 # for (var i = 0; i < missingZeros; i++) { 27930 # resultBuilder.push('0'); 27931 # } 27932 # resultBuilder.push(hexString); 27933 # return resultBuilder.join(''); 27934 # }; 27935 # 27936 # // ... 27937 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 27938 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 27939 # the final pixel color is defined by the equation: 27940 # 27941 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 27942 # 27943 # This means that a value of 1.0 corresponds to a solid color, whereas 27944 # a value of 0.0 corresponds to a completely transparent color. This 27945 # uses a wrapper message rather than a simple float scalar so that it is 27946 # possible to distinguish between a default value and the value being unset. 27947 # If omitted, this color object is to be rendered as a solid color 27948 # (as if the alpha value had been explicitly given with a value of 1.0). 27949 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 27950 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 27951 }, 27952 "firstBandColor": { # Represents a color in the RGBA color space. This representation is designed # The first color that is alternating. (Required) 27953 # for simplicity of conversion to/from color representations in various 27954 # languages over compactness; for example, the fields of this representation 27955 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 27956 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 27957 # method in iOS; and, with just a little work, it can be easily formatted into 27958 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 27959 # 27960 # Example (Java): 27961 # 27962 # import com.google.type.Color; 27963 # 27964 # // ... 27965 # public static java.awt.Color fromProto(Color protocolor) { 27966 # float alpha = protocolor.hasAlpha() 27967 # ? protocolor.getAlpha().getValue() 27968 # : 1.0; 27969 # 27970 # return new java.awt.Color( 27971 # protocolor.getRed(), 27972 # protocolor.getGreen(), 27973 # protocolor.getBlue(), 27974 # alpha); 27975 # } 27976 # 27977 # public static Color toProto(java.awt.Color color) { 27978 # float red = (float) color.getRed(); 27979 # float green = (float) color.getGreen(); 27980 # float blue = (float) color.getBlue(); 27981 # float denominator = 255.0; 27982 # Color.Builder resultBuilder = 27983 # Color 27984 # .newBuilder() 27985 # .setRed(red / denominator) 27986 # .setGreen(green / denominator) 27987 # .setBlue(blue / denominator); 27988 # int alpha = color.getAlpha(); 27989 # if (alpha != 255) { 27990 # result.setAlpha( 27991 # FloatValue 27992 # .newBuilder() 27993 # .setValue(((float) alpha) / denominator) 27994 # .build()); 27995 # } 27996 # return resultBuilder.build(); 27997 # } 27998 # // ... 27999 # 28000 # Example (iOS / Obj-C): 28001 # 28002 # // ... 28003 # static UIColor* fromProto(Color* protocolor) { 28004 # float red = [protocolor red]; 28005 # float green = [protocolor green]; 28006 # float blue = [protocolor blue]; 28007 # FloatValue* alpha_wrapper = [protocolor alpha]; 28008 # float alpha = 1.0; 28009 # if (alpha_wrapper != nil) { 28010 # alpha = [alpha_wrapper value]; 28011 # } 28012 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 28013 # } 28014 # 28015 # static Color* toProto(UIColor* color) { 28016 # CGFloat red, green, blue, alpha; 28017 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 28018 # return nil; 28019 # } 28020 # Color* result = [Color alloc] init]; 28021 # [result setRed:red]; 28022 # [result setGreen:green]; 28023 # [result setBlue:blue]; 28024 # if (alpha <= 0.9999) { 28025 # [result setAlpha:floatWrapperWithValue(alpha)]; 28026 # } 28027 # [result autorelease]; 28028 # return result; 28029 # } 28030 # // ... 28031 # 28032 # Example (JavaScript): 28033 # 28034 # // ... 28035 # 28036 # var protoToCssColor = function(rgb_color) { 28037 # var redFrac = rgb_color.red || 0.0; 28038 # var greenFrac = rgb_color.green || 0.0; 28039 # var blueFrac = rgb_color.blue || 0.0; 28040 # var red = Math.floor(redFrac * 255); 28041 # var green = Math.floor(greenFrac * 255); 28042 # var blue = Math.floor(blueFrac * 255); 28043 # 28044 # if (!('alpha' in rgb_color)) { 28045 # return rgbToCssColor_(red, green, blue); 28046 # } 28047 # 28048 # var alphaFrac = rgb_color.alpha.value || 0.0; 28049 # var rgbParams = [red, green, blue].join(','); 28050 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 28051 # }; 28052 # 28053 # var rgbToCssColor_ = function(red, green, blue) { 28054 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 28055 # var hexString = rgbNumber.toString(16); 28056 # var missingZeros = 6 - hexString.length; 28057 # var resultBuilder = ['#']; 28058 # for (var i = 0; i < missingZeros; i++) { 28059 # resultBuilder.push('0'); 28060 # } 28061 # resultBuilder.push(hexString); 28062 # return resultBuilder.join(''); 28063 # }; 28064 # 28065 # // ... 28066 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 28067 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 28068 # the final pixel color is defined by the equation: 28069 # 28070 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 28071 # 28072 # This means that a value of 1.0 corresponds to a solid color, whereas 28073 # a value of 0.0 corresponds to a completely transparent color. This 28074 # uses a wrapper message rather than a simple float scalar so that it is 28075 # possible to distinguish between a default value and the value being unset. 28076 # If omitted, this color object is to be rendered as a solid color 28077 # (as if the alpha value had been explicitly given with a value of 1.0). 28078 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 28079 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 28080 }, 28081 }, 28082 "rowProperties": { # Properties referring a single dimension (either row or column). If both # Properties for row bands. These properties will be applied on a row-by-row 28083 # basis throughout all the rows in the range. At least one of 28084 # row_properties or column_properties must be specified. 28085 # BandedRange.row_properties and BandedRange.column_properties are 28086 # set, the fill colors are applied to cells according to the following rules: 28087 # 28088 # * header_color and footer_color take priority over band colors. 28089 # * first_band_color takes priority over second_band_color. 28090 # * row_properties takes priority over column_properties. 28091 # 28092 # For example, the first row color takes priority over the first column 28093 # color, but the first column color takes priority over the second row color. 28094 # Similarly, the row header takes priority over the column header in the 28095 # top left cell, but the column header takes priority over the first row 28096 # color if the row header is not set. 28097 "secondBandColor": { # Represents a color in the RGBA color space. This representation is designed # The second color that is alternating. (Required) 28098 # for simplicity of conversion to/from color representations in various 28099 # languages over compactness; for example, the fields of this representation 28100 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 28101 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 28102 # method in iOS; and, with just a little work, it can be easily formatted into 28103 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 28104 # 28105 # Example (Java): 28106 # 28107 # import com.google.type.Color; 28108 # 28109 # // ... 28110 # public static java.awt.Color fromProto(Color protocolor) { 28111 # float alpha = protocolor.hasAlpha() 28112 # ? protocolor.getAlpha().getValue() 28113 # : 1.0; 28114 # 28115 # return new java.awt.Color( 28116 # protocolor.getRed(), 28117 # protocolor.getGreen(), 28118 # protocolor.getBlue(), 28119 # alpha); 28120 # } 28121 # 28122 # public static Color toProto(java.awt.Color color) { 28123 # float red = (float) color.getRed(); 28124 # float green = (float) color.getGreen(); 28125 # float blue = (float) color.getBlue(); 28126 # float denominator = 255.0; 28127 # Color.Builder resultBuilder = 28128 # Color 28129 # .newBuilder() 28130 # .setRed(red / denominator) 28131 # .setGreen(green / denominator) 28132 # .setBlue(blue / denominator); 28133 # int alpha = color.getAlpha(); 28134 # if (alpha != 255) { 28135 # result.setAlpha( 28136 # FloatValue 28137 # .newBuilder() 28138 # .setValue(((float) alpha) / denominator) 28139 # .build()); 28140 # } 28141 # return resultBuilder.build(); 28142 # } 28143 # // ... 28144 # 28145 # Example (iOS / Obj-C): 28146 # 28147 # // ... 28148 # static UIColor* fromProto(Color* protocolor) { 28149 # float red = [protocolor red]; 28150 # float green = [protocolor green]; 28151 # float blue = [protocolor blue]; 28152 # FloatValue* alpha_wrapper = [protocolor alpha]; 28153 # float alpha = 1.0; 28154 # if (alpha_wrapper != nil) { 28155 # alpha = [alpha_wrapper value]; 28156 # } 28157 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 28158 # } 28159 # 28160 # static Color* toProto(UIColor* color) { 28161 # CGFloat red, green, blue, alpha; 28162 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 28163 # return nil; 28164 # } 28165 # Color* result = [Color alloc] init]; 28166 # [result setRed:red]; 28167 # [result setGreen:green]; 28168 # [result setBlue:blue]; 28169 # if (alpha <= 0.9999) { 28170 # [result setAlpha:floatWrapperWithValue(alpha)]; 28171 # } 28172 # [result autorelease]; 28173 # return result; 28174 # } 28175 # // ... 28176 # 28177 # Example (JavaScript): 28178 # 28179 # // ... 28180 # 28181 # var protoToCssColor = function(rgb_color) { 28182 # var redFrac = rgb_color.red || 0.0; 28183 # var greenFrac = rgb_color.green || 0.0; 28184 # var blueFrac = rgb_color.blue || 0.0; 28185 # var red = Math.floor(redFrac * 255); 28186 # var green = Math.floor(greenFrac * 255); 28187 # var blue = Math.floor(blueFrac * 255); 28188 # 28189 # if (!('alpha' in rgb_color)) { 28190 # return rgbToCssColor_(red, green, blue); 28191 # } 28192 # 28193 # var alphaFrac = rgb_color.alpha.value || 0.0; 28194 # var rgbParams = [red, green, blue].join(','); 28195 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 28196 # }; 28197 # 28198 # var rgbToCssColor_ = function(red, green, blue) { 28199 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 28200 # var hexString = rgbNumber.toString(16); 28201 # var missingZeros = 6 - hexString.length; 28202 # var resultBuilder = ['#']; 28203 # for (var i = 0; i < missingZeros; i++) { 28204 # resultBuilder.push('0'); 28205 # } 28206 # resultBuilder.push(hexString); 28207 # return resultBuilder.join(''); 28208 # }; 28209 # 28210 # // ... 28211 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 28212 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 28213 # the final pixel color is defined by the equation: 28214 # 28215 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 28216 # 28217 # This means that a value of 1.0 corresponds to a solid color, whereas 28218 # a value of 0.0 corresponds to a completely transparent color. This 28219 # uses a wrapper message rather than a simple float scalar so that it is 28220 # possible to distinguish between a default value and the value being unset. 28221 # If omitted, this color object is to be rendered as a solid color 28222 # (as if the alpha value had been explicitly given with a value of 1.0). 28223 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 28224 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 28225 }, 28226 "headerColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the first row or column. If this field is set, the first 28227 # row or column will be filled with this color and the colors will 28228 # alternate between first_band_color and second_band_color starting 28229 # from the second row or column. Otherwise, the first row or column will be 28230 # filled with first_band_color and the colors will proceed to alternate 28231 # as they normally would. 28232 # for simplicity of conversion to/from color representations in various 28233 # languages over compactness; for example, the fields of this representation 28234 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 28235 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 28236 # method in iOS; and, with just a little work, it can be easily formatted into 28237 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 28238 # 28239 # Example (Java): 28240 # 28241 # import com.google.type.Color; 28242 # 28243 # // ... 28244 # public static java.awt.Color fromProto(Color protocolor) { 28245 # float alpha = protocolor.hasAlpha() 28246 # ? protocolor.getAlpha().getValue() 28247 # : 1.0; 28248 # 28249 # return new java.awt.Color( 28250 # protocolor.getRed(), 28251 # protocolor.getGreen(), 28252 # protocolor.getBlue(), 28253 # alpha); 28254 # } 28255 # 28256 # public static Color toProto(java.awt.Color color) { 28257 # float red = (float) color.getRed(); 28258 # float green = (float) color.getGreen(); 28259 # float blue = (float) color.getBlue(); 28260 # float denominator = 255.0; 28261 # Color.Builder resultBuilder = 28262 # Color 28263 # .newBuilder() 28264 # .setRed(red / denominator) 28265 # .setGreen(green / denominator) 28266 # .setBlue(blue / denominator); 28267 # int alpha = color.getAlpha(); 28268 # if (alpha != 255) { 28269 # result.setAlpha( 28270 # FloatValue 28271 # .newBuilder() 28272 # .setValue(((float) alpha) / denominator) 28273 # .build()); 28274 # } 28275 # return resultBuilder.build(); 28276 # } 28277 # // ... 28278 # 28279 # Example (iOS / Obj-C): 28280 # 28281 # // ... 28282 # static UIColor* fromProto(Color* protocolor) { 28283 # float red = [protocolor red]; 28284 # float green = [protocolor green]; 28285 # float blue = [protocolor blue]; 28286 # FloatValue* alpha_wrapper = [protocolor alpha]; 28287 # float alpha = 1.0; 28288 # if (alpha_wrapper != nil) { 28289 # alpha = [alpha_wrapper value]; 28290 # } 28291 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 28292 # } 28293 # 28294 # static Color* toProto(UIColor* color) { 28295 # CGFloat red, green, blue, alpha; 28296 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 28297 # return nil; 28298 # } 28299 # Color* result = [Color alloc] init]; 28300 # [result setRed:red]; 28301 # [result setGreen:green]; 28302 # [result setBlue:blue]; 28303 # if (alpha <= 0.9999) { 28304 # [result setAlpha:floatWrapperWithValue(alpha)]; 28305 # } 28306 # [result autorelease]; 28307 # return result; 28308 # } 28309 # // ... 28310 # 28311 # Example (JavaScript): 28312 # 28313 # // ... 28314 # 28315 # var protoToCssColor = function(rgb_color) { 28316 # var redFrac = rgb_color.red || 0.0; 28317 # var greenFrac = rgb_color.green || 0.0; 28318 # var blueFrac = rgb_color.blue || 0.0; 28319 # var red = Math.floor(redFrac * 255); 28320 # var green = Math.floor(greenFrac * 255); 28321 # var blue = Math.floor(blueFrac * 255); 28322 # 28323 # if (!('alpha' in rgb_color)) { 28324 # return rgbToCssColor_(red, green, blue); 28325 # } 28326 # 28327 # var alphaFrac = rgb_color.alpha.value || 0.0; 28328 # var rgbParams = [red, green, blue].join(','); 28329 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 28330 # }; 28331 # 28332 # var rgbToCssColor_ = function(red, green, blue) { 28333 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 28334 # var hexString = rgbNumber.toString(16); 28335 # var missingZeros = 6 - hexString.length; 28336 # var resultBuilder = ['#']; 28337 # for (var i = 0; i < missingZeros; i++) { 28338 # resultBuilder.push('0'); 28339 # } 28340 # resultBuilder.push(hexString); 28341 # return resultBuilder.join(''); 28342 # }; 28343 # 28344 # // ... 28345 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 28346 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 28347 # the final pixel color is defined by the equation: 28348 # 28349 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 28350 # 28351 # This means that a value of 1.0 corresponds to a solid color, whereas 28352 # a value of 0.0 corresponds to a completely transparent color. This 28353 # uses a wrapper message rather than a simple float scalar so that it is 28354 # possible to distinguish between a default value and the value being unset. 28355 # If omitted, this color object is to be rendered as a solid color 28356 # (as if the alpha value had been explicitly given with a value of 1.0). 28357 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 28358 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 28359 }, 28360 "footerColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the last row or column. If this field is not set, the last 28361 # row or column will be filled with either first_band_color or 28362 # second_band_color, depending on the color of the previous row or 28363 # column. 28364 # for simplicity of conversion to/from color representations in various 28365 # languages over compactness; for example, the fields of this representation 28366 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 28367 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 28368 # method in iOS; and, with just a little work, it can be easily formatted into 28369 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 28370 # 28371 # Example (Java): 28372 # 28373 # import com.google.type.Color; 28374 # 28375 # // ... 28376 # public static java.awt.Color fromProto(Color protocolor) { 28377 # float alpha = protocolor.hasAlpha() 28378 # ? protocolor.getAlpha().getValue() 28379 # : 1.0; 28380 # 28381 # return new java.awt.Color( 28382 # protocolor.getRed(), 28383 # protocolor.getGreen(), 28384 # protocolor.getBlue(), 28385 # alpha); 28386 # } 28387 # 28388 # public static Color toProto(java.awt.Color color) { 28389 # float red = (float) color.getRed(); 28390 # float green = (float) color.getGreen(); 28391 # float blue = (float) color.getBlue(); 28392 # float denominator = 255.0; 28393 # Color.Builder resultBuilder = 28394 # Color 28395 # .newBuilder() 28396 # .setRed(red / denominator) 28397 # .setGreen(green / denominator) 28398 # .setBlue(blue / denominator); 28399 # int alpha = color.getAlpha(); 28400 # if (alpha != 255) { 28401 # result.setAlpha( 28402 # FloatValue 28403 # .newBuilder() 28404 # .setValue(((float) alpha) / denominator) 28405 # .build()); 28406 # } 28407 # return resultBuilder.build(); 28408 # } 28409 # // ... 28410 # 28411 # Example (iOS / Obj-C): 28412 # 28413 # // ... 28414 # static UIColor* fromProto(Color* protocolor) { 28415 # float red = [protocolor red]; 28416 # float green = [protocolor green]; 28417 # float blue = [protocolor blue]; 28418 # FloatValue* alpha_wrapper = [protocolor alpha]; 28419 # float alpha = 1.0; 28420 # if (alpha_wrapper != nil) { 28421 # alpha = [alpha_wrapper value]; 28422 # } 28423 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 28424 # } 28425 # 28426 # static Color* toProto(UIColor* color) { 28427 # CGFloat red, green, blue, alpha; 28428 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 28429 # return nil; 28430 # } 28431 # Color* result = [Color alloc] init]; 28432 # [result setRed:red]; 28433 # [result setGreen:green]; 28434 # [result setBlue:blue]; 28435 # if (alpha <= 0.9999) { 28436 # [result setAlpha:floatWrapperWithValue(alpha)]; 28437 # } 28438 # [result autorelease]; 28439 # return result; 28440 # } 28441 # // ... 28442 # 28443 # Example (JavaScript): 28444 # 28445 # // ... 28446 # 28447 # var protoToCssColor = function(rgb_color) { 28448 # var redFrac = rgb_color.red || 0.0; 28449 # var greenFrac = rgb_color.green || 0.0; 28450 # var blueFrac = rgb_color.blue || 0.0; 28451 # var red = Math.floor(redFrac * 255); 28452 # var green = Math.floor(greenFrac * 255); 28453 # var blue = Math.floor(blueFrac * 255); 28454 # 28455 # if (!('alpha' in rgb_color)) { 28456 # return rgbToCssColor_(red, green, blue); 28457 # } 28458 # 28459 # var alphaFrac = rgb_color.alpha.value || 0.0; 28460 # var rgbParams = [red, green, blue].join(','); 28461 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 28462 # }; 28463 # 28464 # var rgbToCssColor_ = function(red, green, blue) { 28465 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 28466 # var hexString = rgbNumber.toString(16); 28467 # var missingZeros = 6 - hexString.length; 28468 # var resultBuilder = ['#']; 28469 # for (var i = 0; i < missingZeros; i++) { 28470 # resultBuilder.push('0'); 28471 # } 28472 # resultBuilder.push(hexString); 28473 # return resultBuilder.join(''); 28474 # }; 28475 # 28476 # // ... 28477 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 28478 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 28479 # the final pixel color is defined by the equation: 28480 # 28481 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 28482 # 28483 # This means that a value of 1.0 corresponds to a solid color, whereas 28484 # a value of 0.0 corresponds to a completely transparent color. This 28485 # uses a wrapper message rather than a simple float scalar so that it is 28486 # possible to distinguish between a default value and the value being unset. 28487 # If omitted, this color object is to be rendered as a solid color 28488 # (as if the alpha value had been explicitly given with a value of 1.0). 28489 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 28490 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 28491 }, 28492 "firstBandColor": { # Represents a color in the RGBA color space. This representation is designed # The first color that is alternating. (Required) 28493 # for simplicity of conversion to/from color representations in various 28494 # languages over compactness; for example, the fields of this representation 28495 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 28496 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 28497 # method in iOS; and, with just a little work, it can be easily formatted into 28498 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 28499 # 28500 # Example (Java): 28501 # 28502 # import com.google.type.Color; 28503 # 28504 # // ... 28505 # public static java.awt.Color fromProto(Color protocolor) { 28506 # float alpha = protocolor.hasAlpha() 28507 # ? protocolor.getAlpha().getValue() 28508 # : 1.0; 28509 # 28510 # return new java.awt.Color( 28511 # protocolor.getRed(), 28512 # protocolor.getGreen(), 28513 # protocolor.getBlue(), 28514 # alpha); 28515 # } 28516 # 28517 # public static Color toProto(java.awt.Color color) { 28518 # float red = (float) color.getRed(); 28519 # float green = (float) color.getGreen(); 28520 # float blue = (float) color.getBlue(); 28521 # float denominator = 255.0; 28522 # Color.Builder resultBuilder = 28523 # Color 28524 # .newBuilder() 28525 # .setRed(red / denominator) 28526 # .setGreen(green / denominator) 28527 # .setBlue(blue / denominator); 28528 # int alpha = color.getAlpha(); 28529 # if (alpha != 255) { 28530 # result.setAlpha( 28531 # FloatValue 28532 # .newBuilder() 28533 # .setValue(((float) alpha) / denominator) 28534 # .build()); 28535 # } 28536 # return resultBuilder.build(); 28537 # } 28538 # // ... 28539 # 28540 # Example (iOS / Obj-C): 28541 # 28542 # // ... 28543 # static UIColor* fromProto(Color* protocolor) { 28544 # float red = [protocolor red]; 28545 # float green = [protocolor green]; 28546 # float blue = [protocolor blue]; 28547 # FloatValue* alpha_wrapper = [protocolor alpha]; 28548 # float alpha = 1.0; 28549 # if (alpha_wrapper != nil) { 28550 # alpha = [alpha_wrapper value]; 28551 # } 28552 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 28553 # } 28554 # 28555 # static Color* toProto(UIColor* color) { 28556 # CGFloat red, green, blue, alpha; 28557 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 28558 # return nil; 28559 # } 28560 # Color* result = [Color alloc] init]; 28561 # [result setRed:red]; 28562 # [result setGreen:green]; 28563 # [result setBlue:blue]; 28564 # if (alpha <= 0.9999) { 28565 # [result setAlpha:floatWrapperWithValue(alpha)]; 28566 # } 28567 # [result autorelease]; 28568 # return result; 28569 # } 28570 # // ... 28571 # 28572 # Example (JavaScript): 28573 # 28574 # // ... 28575 # 28576 # var protoToCssColor = function(rgb_color) { 28577 # var redFrac = rgb_color.red || 0.0; 28578 # var greenFrac = rgb_color.green || 0.0; 28579 # var blueFrac = rgb_color.blue || 0.0; 28580 # var red = Math.floor(redFrac * 255); 28581 # var green = Math.floor(greenFrac * 255); 28582 # var blue = Math.floor(blueFrac * 255); 28583 # 28584 # if (!('alpha' in rgb_color)) { 28585 # return rgbToCssColor_(red, green, blue); 28586 # } 28587 # 28588 # var alphaFrac = rgb_color.alpha.value || 0.0; 28589 # var rgbParams = [red, green, blue].join(','); 28590 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 28591 # }; 28592 # 28593 # var rgbToCssColor_ = function(red, green, blue) { 28594 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 28595 # var hexString = rgbNumber.toString(16); 28596 # var missingZeros = 6 - hexString.length; 28597 # var resultBuilder = ['#']; 28598 # for (var i = 0; i < missingZeros; i++) { 28599 # resultBuilder.push('0'); 28600 # } 28601 # resultBuilder.push(hexString); 28602 # return resultBuilder.join(''); 28603 # }; 28604 # 28605 # // ... 28606 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 28607 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 28608 # the final pixel color is defined by the equation: 28609 # 28610 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 28611 # 28612 # This means that a value of 1.0 corresponds to a solid color, whereas 28613 # a value of 0.0 corresponds to a completely transparent color. This 28614 # uses a wrapper message rather than a simple float scalar so that it is 28615 # possible to distinguish between a default value and the value being unset. 28616 # If omitted, this color object is to be rendered as a solid color 28617 # (as if the alpha value had been explicitly given with a value of 1.0). 28618 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 28619 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 28620 }, 28621 }, 28622 "bandedRangeId": 42, # The id of the banded range. 28623 }, 28624 }, 28625 "addFilterView": { # The result of adding a filter view. # A reply from adding a filter view. 28626 "filter": { # A filter view. # The newly added filter view. 28627 "title": "A String", # The name of the filter view. 28628 "namedRangeId": "A String", # The named range this filter view is backed by, if any. 28629 # 28630 # When writing, only one of range or named_range_id 28631 # may be set. 28632 "filterViewId": 42, # The ID of the filter view. 28633 "range": { # A range on a sheet. # The range this filter view covers. 28634 # 28635 # When writing, only one of range or named_range_id 28636 # may be set. 28637 # All indexes are zero-based. 28638 # Indexes are half open, e.g the start index is inclusive 28639 # and the end index is exclusive -- [start_index, end_index). 28640 # Missing indexes indicate the range is unbounded on that side. 28641 # 28642 # For example, if `"Sheet1"` is sheet ID 0, then: 28643 # 28644 # `Sheet1!A1:A1 == sheet_id: 0, 28645 # start_row_index: 0, end_row_index: 1, 28646 # start_column_index: 0, end_column_index: 1` 28647 # 28648 # `Sheet1!A3:B4 == sheet_id: 0, 28649 # start_row_index: 2, end_row_index: 4, 28650 # start_column_index: 0, end_column_index: 2` 28651 # 28652 # `Sheet1!A:B == sheet_id: 0, 28653 # start_column_index: 0, end_column_index: 2` 28654 # 28655 # `Sheet1!A5:B == sheet_id: 0, 28656 # start_row_index: 4, 28657 # start_column_index: 0, end_column_index: 2` 28658 # 28659 # `Sheet1 == sheet_id:0` 28660 # 28661 # The start index must always be less than or equal to the end index. 28662 # If the start index equals the end index, then the range is empty. 28663 # Empty ranges are typically not meaningful and are usually rendered in the 28664 # UI as `#REF!`. 28665 "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded. 28666 "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded. 28667 "sheetId": 42, # The sheet this range is on. 28668 "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded. 28669 "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded. 28670 }, 28671 "sortSpecs": [ # The sort order per column. Later specifications are used when values 28672 # are equal in the earlier specifications. 28673 { # A sort order associated with a specific column or row. 28674 "sortOrder": "A String", # The order data should be sorted. 28675 "dimensionIndex": 42, # The dimension the sort should be applied to. 28676 }, 28677 ], 28678 "criteria": { # The criteria for showing/hiding values per column. 28679 # The map's key is the column index, and the value is the criteria for 28680 # that column. 28681 "a_key": { # Criteria for showing/hiding rows in a filter or filter view. 28682 "hiddenValues": [ # Values that should be hidden. 28683 "A String", 28684 ], 28685 "condition": { # A condition that can evaluate to true or false. # A condition that must be true for values to be shown. 28686 # (This does not override hiddenValues -- if a value is listed there, 28687 # it will still be hidden.) 28688 # BooleanConditions are used by conditional formatting, 28689 # data validation, and the criteria in filters. 28690 "values": [ # The values of the condition. The number of supported values depends 28691 # on the condition type. Some support zero values, 28692 # others one or two values, 28693 # and ConditionType.ONE_OF_LIST supports an arbitrary number of values. 28694 { # The value of the condition. 28695 "relativeDate": "A String", # A relative date (based on the current date). 28696 # Valid only if the type is 28697 # DATE_BEFORE, 28698 # DATE_AFTER, 28699 # DATE_ON_OR_BEFORE or 28700 # DATE_ON_OR_AFTER. 28701 # 28702 # Relative dates are not supported in data validation. 28703 # They are supported only in conditional formatting and 28704 # conditional filters. 28705 "userEnteredValue": "A String", # A value the condition is based on. 28706 # The value will be parsed as if the user typed into a cell. 28707 # Formulas are supported (and must begin with an `=`). 28708 }, 28709 ], 28710 "type": "A String", # The type of condition. 28711 }, 28712 }, 28713 }, 28714 }, 28715 }, 28716 }, 28717 ], 28718 }</pre> 28719 </div> 28720 28721 <div class="method"> 28722 <code class="details" id="create">create(body, x__xgafv=None)</code> 28723 <pre>Creates a spreadsheet, returning the newly created spreadsheet. 28724 28725 Args: 28726 body: object, The request body. (required) 28727 The object takes the form of: 28728 28729 { # Resource that represents a spreadsheet. 28730 "spreadsheetId": "A String", # The ID of the spreadsheet. 28731 # This field is read-only. 28732 "namedRanges": [ # The named ranges defined in a spreadsheet. 28733 { # A named range. 28734 "namedRangeId": "A String", # The ID of the named range. 28735 "range": { # A range on a sheet. # The range this represents. 28736 # All indexes are zero-based. 28737 # Indexes are half open, e.g the start index is inclusive 28738 # and the end index is exclusive -- [start_index, end_index). 28739 # Missing indexes indicate the range is unbounded on that side. 28740 # 28741 # For example, if `"Sheet1"` is sheet ID 0, then: 28742 # 28743 # `Sheet1!A1:A1 == sheet_id: 0, 28744 # start_row_index: 0, end_row_index: 1, 28745 # start_column_index: 0, end_column_index: 1` 28746 # 28747 # `Sheet1!A3:B4 == sheet_id: 0, 28748 # start_row_index: 2, end_row_index: 4, 28749 # start_column_index: 0, end_column_index: 2` 28750 # 28751 # `Sheet1!A:B == sheet_id: 0, 28752 # start_column_index: 0, end_column_index: 2` 28753 # 28754 # `Sheet1!A5:B == sheet_id: 0, 28755 # start_row_index: 4, 28756 # start_column_index: 0, end_column_index: 2` 28757 # 28758 # `Sheet1 == sheet_id:0` 28759 # 28760 # The start index must always be less than or equal to the end index. 28761 # If the start index equals the end index, then the range is empty. 28762 # Empty ranges are typically not meaningful and are usually rendered in the 28763 # UI as `#REF!`. 28764 "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded. 28765 "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded. 28766 "sheetId": 42, # The sheet this range is on. 28767 "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded. 28768 "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded. 28769 }, 28770 "name": "A String", # The name of the named range. 28771 }, 28772 ], 28773 "properties": { # Properties of a spreadsheet. # Overall properties of a spreadsheet. 28774 "title": "A String", # The title of the spreadsheet. 28775 "locale": "A String", # The locale of the spreadsheet in one of the following formats: 28776 # 28777 # * an ISO 639-1 language code such as `en` 28778 # 28779 # * an ISO 639-2 language code such as `fil`, if no 639-1 code exists 28780 # 28781 # * a combination of the ISO language code and country code, such as `en_US` 28782 # 28783 # Note: when updating this field, not all locales/languages are supported. 28784 "defaultFormat": { # The format of a cell. # The default format of all cells in the spreadsheet. 28785 # CellData.effectiveFormat will not be set if the 28786 # cell's format is equal to this default format. 28787 # This field is read-only. 28788 "numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user. 28789 "pattern": "A String", # Pattern string used for formatting. If not set, a default pattern based on 28790 # the user's locale will be used if necessary for the given type. 28791 # See the [Date and Number Formats guide](/sheets/api/guides/formats) for more 28792 # information about the supported patterns. 28793 "type": "A String", # The type of the number format. 28794 # When writing, this field must be set. 28795 }, 28796 "textDirection": "A String", # The direction of the text in the cell. 28797 "padding": { # The amount of padding around the cell, in pixels. # The padding of the cell. 28798 # When updating padding, every field must be specified. 28799 "top": 42, # The top padding of the cell. 28800 "right": 42, # The right padding of the cell. 28801 "bottom": 42, # The bottom padding of the cell. 28802 "left": 42, # The left padding of the cell. 28803 }, 28804 "verticalAlignment": "A String", # The vertical alignment of the value in the cell. 28805 "backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell. 28806 # for simplicity of conversion to/from color representations in various 28807 # languages over compactness; for example, the fields of this representation 28808 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 28809 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 28810 # method in iOS; and, with just a little work, it can be easily formatted into 28811 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 28812 # 28813 # Example (Java): 28814 # 28815 # import com.google.type.Color; 28816 # 28817 # // ... 28818 # public static java.awt.Color fromProto(Color protocolor) { 28819 # float alpha = protocolor.hasAlpha() 28820 # ? protocolor.getAlpha().getValue() 28821 # : 1.0; 28822 # 28823 # return new java.awt.Color( 28824 # protocolor.getRed(), 28825 # protocolor.getGreen(), 28826 # protocolor.getBlue(), 28827 # alpha); 28828 # } 28829 # 28830 # public static Color toProto(java.awt.Color color) { 28831 # float red = (float) color.getRed(); 28832 # float green = (float) color.getGreen(); 28833 # float blue = (float) color.getBlue(); 28834 # float denominator = 255.0; 28835 # Color.Builder resultBuilder = 28836 # Color 28837 # .newBuilder() 28838 # .setRed(red / denominator) 28839 # .setGreen(green / denominator) 28840 # .setBlue(blue / denominator); 28841 # int alpha = color.getAlpha(); 28842 # if (alpha != 255) { 28843 # result.setAlpha( 28844 # FloatValue 28845 # .newBuilder() 28846 # .setValue(((float) alpha) / denominator) 28847 # .build()); 28848 # } 28849 # return resultBuilder.build(); 28850 # } 28851 # // ... 28852 # 28853 # Example (iOS / Obj-C): 28854 # 28855 # // ... 28856 # static UIColor* fromProto(Color* protocolor) { 28857 # float red = [protocolor red]; 28858 # float green = [protocolor green]; 28859 # float blue = [protocolor blue]; 28860 # FloatValue* alpha_wrapper = [protocolor alpha]; 28861 # float alpha = 1.0; 28862 # if (alpha_wrapper != nil) { 28863 # alpha = [alpha_wrapper value]; 28864 # } 28865 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 28866 # } 28867 # 28868 # static Color* toProto(UIColor* color) { 28869 # CGFloat red, green, blue, alpha; 28870 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 28871 # return nil; 28872 # } 28873 # Color* result = [Color alloc] init]; 28874 # [result setRed:red]; 28875 # [result setGreen:green]; 28876 # [result setBlue:blue]; 28877 # if (alpha <= 0.9999) { 28878 # [result setAlpha:floatWrapperWithValue(alpha)]; 28879 # } 28880 # [result autorelease]; 28881 # return result; 28882 # } 28883 # // ... 28884 # 28885 # Example (JavaScript): 28886 # 28887 # // ... 28888 # 28889 # var protoToCssColor = function(rgb_color) { 28890 # var redFrac = rgb_color.red || 0.0; 28891 # var greenFrac = rgb_color.green || 0.0; 28892 # var blueFrac = rgb_color.blue || 0.0; 28893 # var red = Math.floor(redFrac * 255); 28894 # var green = Math.floor(greenFrac * 255); 28895 # var blue = Math.floor(blueFrac * 255); 28896 # 28897 # if (!('alpha' in rgb_color)) { 28898 # return rgbToCssColor_(red, green, blue); 28899 # } 28900 # 28901 # var alphaFrac = rgb_color.alpha.value || 0.0; 28902 # var rgbParams = [red, green, blue].join(','); 28903 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 28904 # }; 28905 # 28906 # var rgbToCssColor_ = function(red, green, blue) { 28907 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 28908 # var hexString = rgbNumber.toString(16); 28909 # var missingZeros = 6 - hexString.length; 28910 # var resultBuilder = ['#']; 28911 # for (var i = 0; i < missingZeros; i++) { 28912 # resultBuilder.push('0'); 28913 # } 28914 # resultBuilder.push(hexString); 28915 # return resultBuilder.join(''); 28916 # }; 28917 # 28918 # // ... 28919 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 28920 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 28921 # the final pixel color is defined by the equation: 28922 # 28923 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 28924 # 28925 # This means that a value of 1.0 corresponds to a solid color, whereas 28926 # a value of 0.0 corresponds to a completely transparent color. This 28927 # uses a wrapper message rather than a simple float scalar so that it is 28928 # possible to distinguish between a default value and the value being unset. 28929 # If omitted, this color object is to be rendered as a solid color 28930 # (as if the alpha value had been explicitly given with a value of 1.0). 28931 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 28932 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 28933 }, 28934 "horizontalAlignment": "A String", # The horizontal alignment of the value in the cell. 28935 "textFormat": { # The format of a run of text in a cell. # The format of the text in the cell (unless overridden by a format run). 28936 # Absent values indicate that the field isn't specified. 28937 "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text. 28938 # for simplicity of conversion to/from color representations in various 28939 # languages over compactness; for example, the fields of this representation 28940 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 28941 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 28942 # method in iOS; and, with just a little work, it can be easily formatted into 28943 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 28944 # 28945 # Example (Java): 28946 # 28947 # import com.google.type.Color; 28948 # 28949 # // ... 28950 # public static java.awt.Color fromProto(Color protocolor) { 28951 # float alpha = protocolor.hasAlpha() 28952 # ? protocolor.getAlpha().getValue() 28953 # : 1.0; 28954 # 28955 # return new java.awt.Color( 28956 # protocolor.getRed(), 28957 # protocolor.getGreen(), 28958 # protocolor.getBlue(), 28959 # alpha); 28960 # } 28961 # 28962 # public static Color toProto(java.awt.Color color) { 28963 # float red = (float) color.getRed(); 28964 # float green = (float) color.getGreen(); 28965 # float blue = (float) color.getBlue(); 28966 # float denominator = 255.0; 28967 # Color.Builder resultBuilder = 28968 # Color 28969 # .newBuilder() 28970 # .setRed(red / denominator) 28971 # .setGreen(green / denominator) 28972 # .setBlue(blue / denominator); 28973 # int alpha = color.getAlpha(); 28974 # if (alpha != 255) { 28975 # result.setAlpha( 28976 # FloatValue 28977 # .newBuilder() 28978 # .setValue(((float) alpha) / denominator) 28979 # .build()); 28980 # } 28981 # return resultBuilder.build(); 28982 # } 28983 # // ... 28984 # 28985 # Example (iOS / Obj-C): 28986 # 28987 # // ... 28988 # static UIColor* fromProto(Color* protocolor) { 28989 # float red = [protocolor red]; 28990 # float green = [protocolor green]; 28991 # float blue = [protocolor blue]; 28992 # FloatValue* alpha_wrapper = [protocolor alpha]; 28993 # float alpha = 1.0; 28994 # if (alpha_wrapper != nil) { 28995 # alpha = [alpha_wrapper value]; 28996 # } 28997 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 28998 # } 28999 # 29000 # static Color* toProto(UIColor* color) { 29001 # CGFloat red, green, blue, alpha; 29002 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 29003 # return nil; 29004 # } 29005 # Color* result = [Color alloc] init]; 29006 # [result setRed:red]; 29007 # [result setGreen:green]; 29008 # [result setBlue:blue]; 29009 # if (alpha <= 0.9999) { 29010 # [result setAlpha:floatWrapperWithValue(alpha)]; 29011 # } 29012 # [result autorelease]; 29013 # return result; 29014 # } 29015 # // ... 29016 # 29017 # Example (JavaScript): 29018 # 29019 # // ... 29020 # 29021 # var protoToCssColor = function(rgb_color) { 29022 # var redFrac = rgb_color.red || 0.0; 29023 # var greenFrac = rgb_color.green || 0.0; 29024 # var blueFrac = rgb_color.blue || 0.0; 29025 # var red = Math.floor(redFrac * 255); 29026 # var green = Math.floor(greenFrac * 255); 29027 # var blue = Math.floor(blueFrac * 255); 29028 # 29029 # if (!('alpha' in rgb_color)) { 29030 # return rgbToCssColor_(red, green, blue); 29031 # } 29032 # 29033 # var alphaFrac = rgb_color.alpha.value || 0.0; 29034 # var rgbParams = [red, green, blue].join(','); 29035 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 29036 # }; 29037 # 29038 # var rgbToCssColor_ = function(red, green, blue) { 29039 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 29040 # var hexString = rgbNumber.toString(16); 29041 # var missingZeros = 6 - hexString.length; 29042 # var resultBuilder = ['#']; 29043 # for (var i = 0; i < missingZeros; i++) { 29044 # resultBuilder.push('0'); 29045 # } 29046 # resultBuilder.push(hexString); 29047 # return resultBuilder.join(''); 29048 # }; 29049 # 29050 # // ... 29051 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 29052 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 29053 # the final pixel color is defined by the equation: 29054 # 29055 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 29056 # 29057 # This means that a value of 1.0 corresponds to a solid color, whereas 29058 # a value of 0.0 corresponds to a completely transparent color. This 29059 # uses a wrapper message rather than a simple float scalar so that it is 29060 # possible to distinguish between a default value and the value being unset. 29061 # If omitted, this color object is to be rendered as a solid color 29062 # (as if the alpha value had been explicitly given with a value of 1.0). 29063 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 29064 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 29065 }, 29066 "bold": True or False, # True if the text is bold. 29067 "strikethrough": True or False, # True if the text has a strikethrough. 29068 "fontFamily": "A String", # The font family. 29069 "fontSize": 42, # The size of the font. 29070 "italic": True or False, # True if the text is italicized. 29071 "underline": True or False, # True if the text is underlined. 29072 }, 29073 "textRotation": { # The rotation applied to text in a cell. # The rotation applied to text in a cell 29074 "angle": 42, # The angle between the standard orientation and the desired orientation. 29075 # Measured in degrees. Valid values are between -90 and 90. Positive 29076 # angles are angled upwards, negative are angled downwards. 29077 # 29078 # Note: For LTR text direction positive angles are in the counterclockwise 29079 # direction, whereas for RTL they are in the clockwise direction 29080 "vertical": True or False, # If true, text reads top to bottom, but the orientation of individual 29081 # characters is unchanged. 29082 # For example: 29083 # 29084 # | V | 29085 # | e | 29086 # | r | 29087 # | t | 29088 # | i | 29089 # | c | 29090 # | a | 29091 # | l | 29092 }, 29093 "hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell. 29094 "borders": { # The borders of the cell. # The borders of the cell. 29095 "top": { # A border along a cell. # The top border of the cell. 29096 "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border. 29097 # for simplicity of conversion to/from color representations in various 29098 # languages over compactness; for example, the fields of this representation 29099 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 29100 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 29101 # method in iOS; and, with just a little work, it can be easily formatted into 29102 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 29103 # 29104 # Example (Java): 29105 # 29106 # import com.google.type.Color; 29107 # 29108 # // ... 29109 # public static java.awt.Color fromProto(Color protocolor) { 29110 # float alpha = protocolor.hasAlpha() 29111 # ? protocolor.getAlpha().getValue() 29112 # : 1.0; 29113 # 29114 # return new java.awt.Color( 29115 # protocolor.getRed(), 29116 # protocolor.getGreen(), 29117 # protocolor.getBlue(), 29118 # alpha); 29119 # } 29120 # 29121 # public static Color toProto(java.awt.Color color) { 29122 # float red = (float) color.getRed(); 29123 # float green = (float) color.getGreen(); 29124 # float blue = (float) color.getBlue(); 29125 # float denominator = 255.0; 29126 # Color.Builder resultBuilder = 29127 # Color 29128 # .newBuilder() 29129 # .setRed(red / denominator) 29130 # .setGreen(green / denominator) 29131 # .setBlue(blue / denominator); 29132 # int alpha = color.getAlpha(); 29133 # if (alpha != 255) { 29134 # result.setAlpha( 29135 # FloatValue 29136 # .newBuilder() 29137 # .setValue(((float) alpha) / denominator) 29138 # .build()); 29139 # } 29140 # return resultBuilder.build(); 29141 # } 29142 # // ... 29143 # 29144 # Example (iOS / Obj-C): 29145 # 29146 # // ... 29147 # static UIColor* fromProto(Color* protocolor) { 29148 # float red = [protocolor red]; 29149 # float green = [protocolor green]; 29150 # float blue = [protocolor blue]; 29151 # FloatValue* alpha_wrapper = [protocolor alpha]; 29152 # float alpha = 1.0; 29153 # if (alpha_wrapper != nil) { 29154 # alpha = [alpha_wrapper value]; 29155 # } 29156 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 29157 # } 29158 # 29159 # static Color* toProto(UIColor* color) { 29160 # CGFloat red, green, blue, alpha; 29161 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 29162 # return nil; 29163 # } 29164 # Color* result = [Color alloc] init]; 29165 # [result setRed:red]; 29166 # [result setGreen:green]; 29167 # [result setBlue:blue]; 29168 # if (alpha <= 0.9999) { 29169 # [result setAlpha:floatWrapperWithValue(alpha)]; 29170 # } 29171 # [result autorelease]; 29172 # return result; 29173 # } 29174 # // ... 29175 # 29176 # Example (JavaScript): 29177 # 29178 # // ... 29179 # 29180 # var protoToCssColor = function(rgb_color) { 29181 # var redFrac = rgb_color.red || 0.0; 29182 # var greenFrac = rgb_color.green || 0.0; 29183 # var blueFrac = rgb_color.blue || 0.0; 29184 # var red = Math.floor(redFrac * 255); 29185 # var green = Math.floor(greenFrac * 255); 29186 # var blue = Math.floor(blueFrac * 255); 29187 # 29188 # if (!('alpha' in rgb_color)) { 29189 # return rgbToCssColor_(red, green, blue); 29190 # } 29191 # 29192 # var alphaFrac = rgb_color.alpha.value || 0.0; 29193 # var rgbParams = [red, green, blue].join(','); 29194 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 29195 # }; 29196 # 29197 # var rgbToCssColor_ = function(red, green, blue) { 29198 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 29199 # var hexString = rgbNumber.toString(16); 29200 # var missingZeros = 6 - hexString.length; 29201 # var resultBuilder = ['#']; 29202 # for (var i = 0; i < missingZeros; i++) { 29203 # resultBuilder.push('0'); 29204 # } 29205 # resultBuilder.push(hexString); 29206 # return resultBuilder.join(''); 29207 # }; 29208 # 29209 # // ... 29210 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 29211 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 29212 # the final pixel color is defined by the equation: 29213 # 29214 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 29215 # 29216 # This means that a value of 1.0 corresponds to a solid color, whereas 29217 # a value of 0.0 corresponds to a completely transparent color. This 29218 # uses a wrapper message rather than a simple float scalar so that it is 29219 # possible to distinguish between a default value and the value being unset. 29220 # If omitted, this color object is to be rendered as a solid color 29221 # (as if the alpha value had been explicitly given with a value of 1.0). 29222 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 29223 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 29224 }, 29225 "width": 42, # The width of the border, in pixels. 29226 # Deprecated; the width is determined by the "style" field. 29227 "style": "A String", # The style of the border. 29228 }, 29229 "right": { # A border along a cell. # The right border of the cell. 29230 "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border. 29231 # for simplicity of conversion to/from color representations in various 29232 # languages over compactness; for example, the fields of this representation 29233 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 29234 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 29235 # method in iOS; and, with just a little work, it can be easily formatted into 29236 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 29237 # 29238 # Example (Java): 29239 # 29240 # import com.google.type.Color; 29241 # 29242 # // ... 29243 # public static java.awt.Color fromProto(Color protocolor) { 29244 # float alpha = protocolor.hasAlpha() 29245 # ? protocolor.getAlpha().getValue() 29246 # : 1.0; 29247 # 29248 # return new java.awt.Color( 29249 # protocolor.getRed(), 29250 # protocolor.getGreen(), 29251 # protocolor.getBlue(), 29252 # alpha); 29253 # } 29254 # 29255 # public static Color toProto(java.awt.Color color) { 29256 # float red = (float) color.getRed(); 29257 # float green = (float) color.getGreen(); 29258 # float blue = (float) color.getBlue(); 29259 # float denominator = 255.0; 29260 # Color.Builder resultBuilder = 29261 # Color 29262 # .newBuilder() 29263 # .setRed(red / denominator) 29264 # .setGreen(green / denominator) 29265 # .setBlue(blue / denominator); 29266 # int alpha = color.getAlpha(); 29267 # if (alpha != 255) { 29268 # result.setAlpha( 29269 # FloatValue 29270 # .newBuilder() 29271 # .setValue(((float) alpha) / denominator) 29272 # .build()); 29273 # } 29274 # return resultBuilder.build(); 29275 # } 29276 # // ... 29277 # 29278 # Example (iOS / Obj-C): 29279 # 29280 # // ... 29281 # static UIColor* fromProto(Color* protocolor) { 29282 # float red = [protocolor red]; 29283 # float green = [protocolor green]; 29284 # float blue = [protocolor blue]; 29285 # FloatValue* alpha_wrapper = [protocolor alpha]; 29286 # float alpha = 1.0; 29287 # if (alpha_wrapper != nil) { 29288 # alpha = [alpha_wrapper value]; 29289 # } 29290 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 29291 # } 29292 # 29293 # static Color* toProto(UIColor* color) { 29294 # CGFloat red, green, blue, alpha; 29295 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 29296 # return nil; 29297 # } 29298 # Color* result = [Color alloc] init]; 29299 # [result setRed:red]; 29300 # [result setGreen:green]; 29301 # [result setBlue:blue]; 29302 # if (alpha <= 0.9999) { 29303 # [result setAlpha:floatWrapperWithValue(alpha)]; 29304 # } 29305 # [result autorelease]; 29306 # return result; 29307 # } 29308 # // ... 29309 # 29310 # Example (JavaScript): 29311 # 29312 # // ... 29313 # 29314 # var protoToCssColor = function(rgb_color) { 29315 # var redFrac = rgb_color.red || 0.0; 29316 # var greenFrac = rgb_color.green || 0.0; 29317 # var blueFrac = rgb_color.blue || 0.0; 29318 # var red = Math.floor(redFrac * 255); 29319 # var green = Math.floor(greenFrac * 255); 29320 # var blue = Math.floor(blueFrac * 255); 29321 # 29322 # if (!('alpha' in rgb_color)) { 29323 # return rgbToCssColor_(red, green, blue); 29324 # } 29325 # 29326 # var alphaFrac = rgb_color.alpha.value || 0.0; 29327 # var rgbParams = [red, green, blue].join(','); 29328 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 29329 # }; 29330 # 29331 # var rgbToCssColor_ = function(red, green, blue) { 29332 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 29333 # var hexString = rgbNumber.toString(16); 29334 # var missingZeros = 6 - hexString.length; 29335 # var resultBuilder = ['#']; 29336 # for (var i = 0; i < missingZeros; i++) { 29337 # resultBuilder.push('0'); 29338 # } 29339 # resultBuilder.push(hexString); 29340 # return resultBuilder.join(''); 29341 # }; 29342 # 29343 # // ... 29344 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 29345 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 29346 # the final pixel color is defined by the equation: 29347 # 29348 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 29349 # 29350 # This means that a value of 1.0 corresponds to a solid color, whereas 29351 # a value of 0.0 corresponds to a completely transparent color. This 29352 # uses a wrapper message rather than a simple float scalar so that it is 29353 # possible to distinguish between a default value and the value being unset. 29354 # If omitted, this color object is to be rendered as a solid color 29355 # (as if the alpha value had been explicitly given with a value of 1.0). 29356 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 29357 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 29358 }, 29359 "width": 42, # The width of the border, in pixels. 29360 # Deprecated; the width is determined by the "style" field. 29361 "style": "A String", # The style of the border. 29362 }, 29363 "bottom": { # A border along a cell. # The bottom border of the cell. 29364 "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border. 29365 # for simplicity of conversion to/from color representations in various 29366 # languages over compactness; for example, the fields of this representation 29367 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 29368 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 29369 # method in iOS; and, with just a little work, it can be easily formatted into 29370 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 29371 # 29372 # Example (Java): 29373 # 29374 # import com.google.type.Color; 29375 # 29376 # // ... 29377 # public static java.awt.Color fromProto(Color protocolor) { 29378 # float alpha = protocolor.hasAlpha() 29379 # ? protocolor.getAlpha().getValue() 29380 # : 1.0; 29381 # 29382 # return new java.awt.Color( 29383 # protocolor.getRed(), 29384 # protocolor.getGreen(), 29385 # protocolor.getBlue(), 29386 # alpha); 29387 # } 29388 # 29389 # public static Color toProto(java.awt.Color color) { 29390 # float red = (float) color.getRed(); 29391 # float green = (float) color.getGreen(); 29392 # float blue = (float) color.getBlue(); 29393 # float denominator = 255.0; 29394 # Color.Builder resultBuilder = 29395 # Color 29396 # .newBuilder() 29397 # .setRed(red / denominator) 29398 # .setGreen(green / denominator) 29399 # .setBlue(blue / denominator); 29400 # int alpha = color.getAlpha(); 29401 # if (alpha != 255) { 29402 # result.setAlpha( 29403 # FloatValue 29404 # .newBuilder() 29405 # .setValue(((float) alpha) / denominator) 29406 # .build()); 29407 # } 29408 # return resultBuilder.build(); 29409 # } 29410 # // ... 29411 # 29412 # Example (iOS / Obj-C): 29413 # 29414 # // ... 29415 # static UIColor* fromProto(Color* protocolor) { 29416 # float red = [protocolor red]; 29417 # float green = [protocolor green]; 29418 # float blue = [protocolor blue]; 29419 # FloatValue* alpha_wrapper = [protocolor alpha]; 29420 # float alpha = 1.0; 29421 # if (alpha_wrapper != nil) { 29422 # alpha = [alpha_wrapper value]; 29423 # } 29424 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 29425 # } 29426 # 29427 # static Color* toProto(UIColor* color) { 29428 # CGFloat red, green, blue, alpha; 29429 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 29430 # return nil; 29431 # } 29432 # Color* result = [Color alloc] init]; 29433 # [result setRed:red]; 29434 # [result setGreen:green]; 29435 # [result setBlue:blue]; 29436 # if (alpha <= 0.9999) { 29437 # [result setAlpha:floatWrapperWithValue(alpha)]; 29438 # } 29439 # [result autorelease]; 29440 # return result; 29441 # } 29442 # // ... 29443 # 29444 # Example (JavaScript): 29445 # 29446 # // ... 29447 # 29448 # var protoToCssColor = function(rgb_color) { 29449 # var redFrac = rgb_color.red || 0.0; 29450 # var greenFrac = rgb_color.green || 0.0; 29451 # var blueFrac = rgb_color.blue || 0.0; 29452 # var red = Math.floor(redFrac * 255); 29453 # var green = Math.floor(greenFrac * 255); 29454 # var blue = Math.floor(blueFrac * 255); 29455 # 29456 # if (!('alpha' in rgb_color)) { 29457 # return rgbToCssColor_(red, green, blue); 29458 # } 29459 # 29460 # var alphaFrac = rgb_color.alpha.value || 0.0; 29461 # var rgbParams = [red, green, blue].join(','); 29462 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 29463 # }; 29464 # 29465 # var rgbToCssColor_ = function(red, green, blue) { 29466 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 29467 # var hexString = rgbNumber.toString(16); 29468 # var missingZeros = 6 - hexString.length; 29469 # var resultBuilder = ['#']; 29470 # for (var i = 0; i < missingZeros; i++) { 29471 # resultBuilder.push('0'); 29472 # } 29473 # resultBuilder.push(hexString); 29474 # return resultBuilder.join(''); 29475 # }; 29476 # 29477 # // ... 29478 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 29479 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 29480 # the final pixel color is defined by the equation: 29481 # 29482 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 29483 # 29484 # This means that a value of 1.0 corresponds to a solid color, whereas 29485 # a value of 0.0 corresponds to a completely transparent color. This 29486 # uses a wrapper message rather than a simple float scalar so that it is 29487 # possible to distinguish between a default value and the value being unset. 29488 # If omitted, this color object is to be rendered as a solid color 29489 # (as if the alpha value had been explicitly given with a value of 1.0). 29490 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 29491 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 29492 }, 29493 "width": 42, # The width of the border, in pixels. 29494 # Deprecated; the width is determined by the "style" field. 29495 "style": "A String", # The style of the border. 29496 }, 29497 "left": { # A border along a cell. # The left border of the cell. 29498 "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border. 29499 # for simplicity of conversion to/from color representations in various 29500 # languages over compactness; for example, the fields of this representation 29501 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 29502 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 29503 # method in iOS; and, with just a little work, it can be easily formatted into 29504 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 29505 # 29506 # Example (Java): 29507 # 29508 # import com.google.type.Color; 29509 # 29510 # // ... 29511 # public static java.awt.Color fromProto(Color protocolor) { 29512 # float alpha = protocolor.hasAlpha() 29513 # ? protocolor.getAlpha().getValue() 29514 # : 1.0; 29515 # 29516 # return new java.awt.Color( 29517 # protocolor.getRed(), 29518 # protocolor.getGreen(), 29519 # protocolor.getBlue(), 29520 # alpha); 29521 # } 29522 # 29523 # public static Color toProto(java.awt.Color color) { 29524 # float red = (float) color.getRed(); 29525 # float green = (float) color.getGreen(); 29526 # float blue = (float) color.getBlue(); 29527 # float denominator = 255.0; 29528 # Color.Builder resultBuilder = 29529 # Color 29530 # .newBuilder() 29531 # .setRed(red / denominator) 29532 # .setGreen(green / denominator) 29533 # .setBlue(blue / denominator); 29534 # int alpha = color.getAlpha(); 29535 # if (alpha != 255) { 29536 # result.setAlpha( 29537 # FloatValue 29538 # .newBuilder() 29539 # .setValue(((float) alpha) / denominator) 29540 # .build()); 29541 # } 29542 # return resultBuilder.build(); 29543 # } 29544 # // ... 29545 # 29546 # Example (iOS / Obj-C): 29547 # 29548 # // ... 29549 # static UIColor* fromProto(Color* protocolor) { 29550 # float red = [protocolor red]; 29551 # float green = [protocolor green]; 29552 # float blue = [protocolor blue]; 29553 # FloatValue* alpha_wrapper = [protocolor alpha]; 29554 # float alpha = 1.0; 29555 # if (alpha_wrapper != nil) { 29556 # alpha = [alpha_wrapper value]; 29557 # } 29558 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 29559 # } 29560 # 29561 # static Color* toProto(UIColor* color) { 29562 # CGFloat red, green, blue, alpha; 29563 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 29564 # return nil; 29565 # } 29566 # Color* result = [Color alloc] init]; 29567 # [result setRed:red]; 29568 # [result setGreen:green]; 29569 # [result setBlue:blue]; 29570 # if (alpha <= 0.9999) { 29571 # [result setAlpha:floatWrapperWithValue(alpha)]; 29572 # } 29573 # [result autorelease]; 29574 # return result; 29575 # } 29576 # // ... 29577 # 29578 # Example (JavaScript): 29579 # 29580 # // ... 29581 # 29582 # var protoToCssColor = function(rgb_color) { 29583 # var redFrac = rgb_color.red || 0.0; 29584 # var greenFrac = rgb_color.green || 0.0; 29585 # var blueFrac = rgb_color.blue || 0.0; 29586 # var red = Math.floor(redFrac * 255); 29587 # var green = Math.floor(greenFrac * 255); 29588 # var blue = Math.floor(blueFrac * 255); 29589 # 29590 # if (!('alpha' in rgb_color)) { 29591 # return rgbToCssColor_(red, green, blue); 29592 # } 29593 # 29594 # var alphaFrac = rgb_color.alpha.value || 0.0; 29595 # var rgbParams = [red, green, blue].join(','); 29596 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 29597 # }; 29598 # 29599 # var rgbToCssColor_ = function(red, green, blue) { 29600 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 29601 # var hexString = rgbNumber.toString(16); 29602 # var missingZeros = 6 - hexString.length; 29603 # var resultBuilder = ['#']; 29604 # for (var i = 0; i < missingZeros; i++) { 29605 # resultBuilder.push('0'); 29606 # } 29607 # resultBuilder.push(hexString); 29608 # return resultBuilder.join(''); 29609 # }; 29610 # 29611 # // ... 29612 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 29613 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 29614 # the final pixel color is defined by the equation: 29615 # 29616 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 29617 # 29618 # This means that a value of 1.0 corresponds to a solid color, whereas 29619 # a value of 0.0 corresponds to a completely transparent color. This 29620 # uses a wrapper message rather than a simple float scalar so that it is 29621 # possible to distinguish between a default value and the value being unset. 29622 # If omitted, this color object is to be rendered as a solid color 29623 # (as if the alpha value had been explicitly given with a value of 1.0). 29624 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 29625 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 29626 }, 29627 "width": 42, # The width of the border, in pixels. 29628 # Deprecated; the width is determined by the "style" field. 29629 "style": "A String", # The style of the border. 29630 }, 29631 }, 29632 "wrapStrategy": "A String", # The wrap strategy for the value in the cell. 29633 }, 29634 "autoRecalc": "A String", # The amount of time to wait before volatile functions are recalculated. 29635 "iterativeCalculationSettings": { # Settings to control how circular dependencies are resolved with iterative # Determines whether and how circular references are resolved with iterative 29636 # calculation. Absence of this field means that circular references will 29637 # result in calculation errors. 29638 # calculation. 29639 "convergenceThreshold": 3.14, # When iterative calculation is enabled and successive results differ by 29640 # less than this threshold value, the calculation rounds stop. 29641 "maxIterations": 42, # When iterative calculation is enabled, the maximum number of calculation 29642 # rounds to perform. 29643 }, 29644 "timeZone": "A String", # The time zone of the spreadsheet, in CLDR format such as 29645 # `America/New_York`. If the time zone isn't recognized, this may 29646 # be a custom time zone such as `GMT-07:00`. 29647 }, 29648 "sheets": [ # The sheets that are part of a spreadsheet. 29649 { # A sheet in a spreadsheet. 29650 "conditionalFormats": [ # The conditional format rules in this sheet. 29651 { # A rule describing a conditional format. 29652 "ranges": [ # The ranges that will be formatted if the condition is true. 29653 # All the ranges must be on the same grid. 29654 { # A range on a sheet. 29655 # All indexes are zero-based. 29656 # Indexes are half open, e.g the start index is inclusive 29657 # and the end index is exclusive -- [start_index, end_index). 29658 # Missing indexes indicate the range is unbounded on that side. 29659 # 29660 # For example, if `"Sheet1"` is sheet ID 0, then: 29661 # 29662 # `Sheet1!A1:A1 == sheet_id: 0, 29663 # start_row_index: 0, end_row_index: 1, 29664 # start_column_index: 0, end_column_index: 1` 29665 # 29666 # `Sheet1!A3:B4 == sheet_id: 0, 29667 # start_row_index: 2, end_row_index: 4, 29668 # start_column_index: 0, end_column_index: 2` 29669 # 29670 # `Sheet1!A:B == sheet_id: 0, 29671 # start_column_index: 0, end_column_index: 2` 29672 # 29673 # `Sheet1!A5:B == sheet_id: 0, 29674 # start_row_index: 4, 29675 # start_column_index: 0, end_column_index: 2` 29676 # 29677 # `Sheet1 == sheet_id:0` 29678 # 29679 # The start index must always be less than or equal to the end index. 29680 # If the start index equals the end index, then the range is empty. 29681 # Empty ranges are typically not meaningful and are usually rendered in the 29682 # UI as `#REF!`. 29683 "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded. 29684 "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded. 29685 "sheetId": 42, # The sheet this range is on. 29686 "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded. 29687 "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded. 29688 }, 29689 ], 29690 "booleanRule": { # A rule that may or may not match, depending on the condition. # The formatting is either "on" or "off" according to the rule. 29691 "condition": { # A condition that can evaluate to true or false. # The condition of the rule. If the condition evaluates to true, 29692 # the format will be applied. 29693 # BooleanConditions are used by conditional formatting, 29694 # data validation, and the criteria in filters. 29695 "values": [ # The values of the condition. The number of supported values depends 29696 # on the condition type. Some support zero values, 29697 # others one or two values, 29698 # and ConditionType.ONE_OF_LIST supports an arbitrary number of values. 29699 { # The value of the condition. 29700 "relativeDate": "A String", # A relative date (based on the current date). 29701 # Valid only if the type is 29702 # DATE_BEFORE, 29703 # DATE_AFTER, 29704 # DATE_ON_OR_BEFORE or 29705 # DATE_ON_OR_AFTER. 29706 # 29707 # Relative dates are not supported in data validation. 29708 # They are supported only in conditional formatting and 29709 # conditional filters. 29710 "userEnteredValue": "A String", # A value the condition is based on. 29711 # The value will be parsed as if the user typed into a cell. 29712 # Formulas are supported (and must begin with an `=`). 29713 }, 29714 ], 29715 "type": "A String", # The type of condition. 29716 }, 29717 "format": { # The format of a cell. # The format to apply. 29718 # Conditional formatting can only apply a subset of formatting: 29719 # bold, italic, 29720 # strikethrough, 29721 # foreground color & 29722 # background color. 29723 "numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user. 29724 "pattern": "A String", # Pattern string used for formatting. If not set, a default pattern based on 29725 # the user's locale will be used if necessary for the given type. 29726 # See the [Date and Number Formats guide](/sheets/api/guides/formats) for more 29727 # information about the supported patterns. 29728 "type": "A String", # The type of the number format. 29729 # When writing, this field must be set. 29730 }, 29731 "textDirection": "A String", # The direction of the text in the cell. 29732 "padding": { # The amount of padding around the cell, in pixels. # The padding of the cell. 29733 # When updating padding, every field must be specified. 29734 "top": 42, # The top padding of the cell. 29735 "right": 42, # The right padding of the cell. 29736 "bottom": 42, # The bottom padding of the cell. 29737 "left": 42, # The left padding of the cell. 29738 }, 29739 "verticalAlignment": "A String", # The vertical alignment of the value in the cell. 29740 "backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell. 29741 # for simplicity of conversion to/from color representations in various 29742 # languages over compactness; for example, the fields of this representation 29743 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 29744 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 29745 # method in iOS; and, with just a little work, it can be easily formatted into 29746 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 29747 # 29748 # Example (Java): 29749 # 29750 # import com.google.type.Color; 29751 # 29752 # // ... 29753 # public static java.awt.Color fromProto(Color protocolor) { 29754 # float alpha = protocolor.hasAlpha() 29755 # ? protocolor.getAlpha().getValue() 29756 # : 1.0; 29757 # 29758 # return new java.awt.Color( 29759 # protocolor.getRed(), 29760 # protocolor.getGreen(), 29761 # protocolor.getBlue(), 29762 # alpha); 29763 # } 29764 # 29765 # public static Color toProto(java.awt.Color color) { 29766 # float red = (float) color.getRed(); 29767 # float green = (float) color.getGreen(); 29768 # float blue = (float) color.getBlue(); 29769 # float denominator = 255.0; 29770 # Color.Builder resultBuilder = 29771 # Color 29772 # .newBuilder() 29773 # .setRed(red / denominator) 29774 # .setGreen(green / denominator) 29775 # .setBlue(blue / denominator); 29776 # int alpha = color.getAlpha(); 29777 # if (alpha != 255) { 29778 # result.setAlpha( 29779 # FloatValue 29780 # .newBuilder() 29781 # .setValue(((float) alpha) / denominator) 29782 # .build()); 29783 # } 29784 # return resultBuilder.build(); 29785 # } 29786 # // ... 29787 # 29788 # Example (iOS / Obj-C): 29789 # 29790 # // ... 29791 # static UIColor* fromProto(Color* protocolor) { 29792 # float red = [protocolor red]; 29793 # float green = [protocolor green]; 29794 # float blue = [protocolor blue]; 29795 # FloatValue* alpha_wrapper = [protocolor alpha]; 29796 # float alpha = 1.0; 29797 # if (alpha_wrapper != nil) { 29798 # alpha = [alpha_wrapper value]; 29799 # } 29800 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 29801 # } 29802 # 29803 # static Color* toProto(UIColor* color) { 29804 # CGFloat red, green, blue, alpha; 29805 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 29806 # return nil; 29807 # } 29808 # Color* result = [Color alloc] init]; 29809 # [result setRed:red]; 29810 # [result setGreen:green]; 29811 # [result setBlue:blue]; 29812 # if (alpha <= 0.9999) { 29813 # [result setAlpha:floatWrapperWithValue(alpha)]; 29814 # } 29815 # [result autorelease]; 29816 # return result; 29817 # } 29818 # // ... 29819 # 29820 # Example (JavaScript): 29821 # 29822 # // ... 29823 # 29824 # var protoToCssColor = function(rgb_color) { 29825 # var redFrac = rgb_color.red || 0.0; 29826 # var greenFrac = rgb_color.green || 0.0; 29827 # var blueFrac = rgb_color.blue || 0.0; 29828 # var red = Math.floor(redFrac * 255); 29829 # var green = Math.floor(greenFrac * 255); 29830 # var blue = Math.floor(blueFrac * 255); 29831 # 29832 # if (!('alpha' in rgb_color)) { 29833 # return rgbToCssColor_(red, green, blue); 29834 # } 29835 # 29836 # var alphaFrac = rgb_color.alpha.value || 0.0; 29837 # var rgbParams = [red, green, blue].join(','); 29838 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 29839 # }; 29840 # 29841 # var rgbToCssColor_ = function(red, green, blue) { 29842 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 29843 # var hexString = rgbNumber.toString(16); 29844 # var missingZeros = 6 - hexString.length; 29845 # var resultBuilder = ['#']; 29846 # for (var i = 0; i < missingZeros; i++) { 29847 # resultBuilder.push('0'); 29848 # } 29849 # resultBuilder.push(hexString); 29850 # return resultBuilder.join(''); 29851 # }; 29852 # 29853 # // ... 29854 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 29855 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 29856 # the final pixel color is defined by the equation: 29857 # 29858 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 29859 # 29860 # This means that a value of 1.0 corresponds to a solid color, whereas 29861 # a value of 0.0 corresponds to a completely transparent color. This 29862 # uses a wrapper message rather than a simple float scalar so that it is 29863 # possible to distinguish between a default value and the value being unset. 29864 # If omitted, this color object is to be rendered as a solid color 29865 # (as if the alpha value had been explicitly given with a value of 1.0). 29866 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 29867 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 29868 }, 29869 "horizontalAlignment": "A String", # The horizontal alignment of the value in the cell. 29870 "textFormat": { # The format of a run of text in a cell. # The format of the text in the cell (unless overridden by a format run). 29871 # Absent values indicate that the field isn't specified. 29872 "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text. 29873 # for simplicity of conversion to/from color representations in various 29874 # languages over compactness; for example, the fields of this representation 29875 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 29876 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 29877 # method in iOS; and, with just a little work, it can be easily formatted into 29878 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 29879 # 29880 # Example (Java): 29881 # 29882 # import com.google.type.Color; 29883 # 29884 # // ... 29885 # public static java.awt.Color fromProto(Color protocolor) { 29886 # float alpha = protocolor.hasAlpha() 29887 # ? protocolor.getAlpha().getValue() 29888 # : 1.0; 29889 # 29890 # return new java.awt.Color( 29891 # protocolor.getRed(), 29892 # protocolor.getGreen(), 29893 # protocolor.getBlue(), 29894 # alpha); 29895 # } 29896 # 29897 # public static Color toProto(java.awt.Color color) { 29898 # float red = (float) color.getRed(); 29899 # float green = (float) color.getGreen(); 29900 # float blue = (float) color.getBlue(); 29901 # float denominator = 255.0; 29902 # Color.Builder resultBuilder = 29903 # Color 29904 # .newBuilder() 29905 # .setRed(red / denominator) 29906 # .setGreen(green / denominator) 29907 # .setBlue(blue / denominator); 29908 # int alpha = color.getAlpha(); 29909 # if (alpha != 255) { 29910 # result.setAlpha( 29911 # FloatValue 29912 # .newBuilder() 29913 # .setValue(((float) alpha) / denominator) 29914 # .build()); 29915 # } 29916 # return resultBuilder.build(); 29917 # } 29918 # // ... 29919 # 29920 # Example (iOS / Obj-C): 29921 # 29922 # // ... 29923 # static UIColor* fromProto(Color* protocolor) { 29924 # float red = [protocolor red]; 29925 # float green = [protocolor green]; 29926 # float blue = [protocolor blue]; 29927 # FloatValue* alpha_wrapper = [protocolor alpha]; 29928 # float alpha = 1.0; 29929 # if (alpha_wrapper != nil) { 29930 # alpha = [alpha_wrapper value]; 29931 # } 29932 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 29933 # } 29934 # 29935 # static Color* toProto(UIColor* color) { 29936 # CGFloat red, green, blue, alpha; 29937 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 29938 # return nil; 29939 # } 29940 # Color* result = [Color alloc] init]; 29941 # [result setRed:red]; 29942 # [result setGreen:green]; 29943 # [result setBlue:blue]; 29944 # if (alpha <= 0.9999) { 29945 # [result setAlpha:floatWrapperWithValue(alpha)]; 29946 # } 29947 # [result autorelease]; 29948 # return result; 29949 # } 29950 # // ... 29951 # 29952 # Example (JavaScript): 29953 # 29954 # // ... 29955 # 29956 # var protoToCssColor = function(rgb_color) { 29957 # var redFrac = rgb_color.red || 0.0; 29958 # var greenFrac = rgb_color.green || 0.0; 29959 # var blueFrac = rgb_color.blue || 0.0; 29960 # var red = Math.floor(redFrac * 255); 29961 # var green = Math.floor(greenFrac * 255); 29962 # var blue = Math.floor(blueFrac * 255); 29963 # 29964 # if (!('alpha' in rgb_color)) { 29965 # return rgbToCssColor_(red, green, blue); 29966 # } 29967 # 29968 # var alphaFrac = rgb_color.alpha.value || 0.0; 29969 # var rgbParams = [red, green, blue].join(','); 29970 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 29971 # }; 29972 # 29973 # var rgbToCssColor_ = function(red, green, blue) { 29974 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 29975 # var hexString = rgbNumber.toString(16); 29976 # var missingZeros = 6 - hexString.length; 29977 # var resultBuilder = ['#']; 29978 # for (var i = 0; i < missingZeros; i++) { 29979 # resultBuilder.push('0'); 29980 # } 29981 # resultBuilder.push(hexString); 29982 # return resultBuilder.join(''); 29983 # }; 29984 # 29985 # // ... 29986 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 29987 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 29988 # the final pixel color is defined by the equation: 29989 # 29990 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 29991 # 29992 # This means that a value of 1.0 corresponds to a solid color, whereas 29993 # a value of 0.0 corresponds to a completely transparent color. This 29994 # uses a wrapper message rather than a simple float scalar so that it is 29995 # possible to distinguish between a default value and the value being unset. 29996 # If omitted, this color object is to be rendered as a solid color 29997 # (as if the alpha value had been explicitly given with a value of 1.0). 29998 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 29999 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 30000 }, 30001 "bold": True or False, # True if the text is bold. 30002 "strikethrough": True or False, # True if the text has a strikethrough. 30003 "fontFamily": "A String", # The font family. 30004 "fontSize": 42, # The size of the font. 30005 "italic": True or False, # True if the text is italicized. 30006 "underline": True or False, # True if the text is underlined. 30007 }, 30008 "textRotation": { # The rotation applied to text in a cell. # The rotation applied to text in a cell 30009 "angle": 42, # The angle between the standard orientation and the desired orientation. 30010 # Measured in degrees. Valid values are between -90 and 90. Positive 30011 # angles are angled upwards, negative are angled downwards. 30012 # 30013 # Note: For LTR text direction positive angles are in the counterclockwise 30014 # direction, whereas for RTL they are in the clockwise direction 30015 "vertical": True or False, # If true, text reads top to bottom, but the orientation of individual 30016 # characters is unchanged. 30017 # For example: 30018 # 30019 # | V | 30020 # | e | 30021 # | r | 30022 # | t | 30023 # | i | 30024 # | c | 30025 # | a | 30026 # | l | 30027 }, 30028 "hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell. 30029 "borders": { # The borders of the cell. # The borders of the cell. 30030 "top": { # A border along a cell. # The top border of the cell. 30031 "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border. 30032 # for simplicity of conversion to/from color representations in various 30033 # languages over compactness; for example, the fields of this representation 30034 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 30035 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 30036 # method in iOS; and, with just a little work, it can be easily formatted into 30037 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 30038 # 30039 # Example (Java): 30040 # 30041 # import com.google.type.Color; 30042 # 30043 # // ... 30044 # public static java.awt.Color fromProto(Color protocolor) { 30045 # float alpha = protocolor.hasAlpha() 30046 # ? protocolor.getAlpha().getValue() 30047 # : 1.0; 30048 # 30049 # return new java.awt.Color( 30050 # protocolor.getRed(), 30051 # protocolor.getGreen(), 30052 # protocolor.getBlue(), 30053 # alpha); 30054 # } 30055 # 30056 # public static Color toProto(java.awt.Color color) { 30057 # float red = (float) color.getRed(); 30058 # float green = (float) color.getGreen(); 30059 # float blue = (float) color.getBlue(); 30060 # float denominator = 255.0; 30061 # Color.Builder resultBuilder = 30062 # Color 30063 # .newBuilder() 30064 # .setRed(red / denominator) 30065 # .setGreen(green / denominator) 30066 # .setBlue(blue / denominator); 30067 # int alpha = color.getAlpha(); 30068 # if (alpha != 255) { 30069 # result.setAlpha( 30070 # FloatValue 30071 # .newBuilder() 30072 # .setValue(((float) alpha) / denominator) 30073 # .build()); 30074 # } 30075 # return resultBuilder.build(); 30076 # } 30077 # // ... 30078 # 30079 # Example (iOS / Obj-C): 30080 # 30081 # // ... 30082 # static UIColor* fromProto(Color* protocolor) { 30083 # float red = [protocolor red]; 30084 # float green = [protocolor green]; 30085 # float blue = [protocolor blue]; 30086 # FloatValue* alpha_wrapper = [protocolor alpha]; 30087 # float alpha = 1.0; 30088 # if (alpha_wrapper != nil) { 30089 # alpha = [alpha_wrapper value]; 30090 # } 30091 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 30092 # } 30093 # 30094 # static Color* toProto(UIColor* color) { 30095 # CGFloat red, green, blue, alpha; 30096 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 30097 # return nil; 30098 # } 30099 # Color* result = [Color alloc] init]; 30100 # [result setRed:red]; 30101 # [result setGreen:green]; 30102 # [result setBlue:blue]; 30103 # if (alpha <= 0.9999) { 30104 # [result setAlpha:floatWrapperWithValue(alpha)]; 30105 # } 30106 # [result autorelease]; 30107 # return result; 30108 # } 30109 # // ... 30110 # 30111 # Example (JavaScript): 30112 # 30113 # // ... 30114 # 30115 # var protoToCssColor = function(rgb_color) { 30116 # var redFrac = rgb_color.red || 0.0; 30117 # var greenFrac = rgb_color.green || 0.0; 30118 # var blueFrac = rgb_color.blue || 0.0; 30119 # var red = Math.floor(redFrac * 255); 30120 # var green = Math.floor(greenFrac * 255); 30121 # var blue = Math.floor(blueFrac * 255); 30122 # 30123 # if (!('alpha' in rgb_color)) { 30124 # return rgbToCssColor_(red, green, blue); 30125 # } 30126 # 30127 # var alphaFrac = rgb_color.alpha.value || 0.0; 30128 # var rgbParams = [red, green, blue].join(','); 30129 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 30130 # }; 30131 # 30132 # var rgbToCssColor_ = function(red, green, blue) { 30133 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 30134 # var hexString = rgbNumber.toString(16); 30135 # var missingZeros = 6 - hexString.length; 30136 # var resultBuilder = ['#']; 30137 # for (var i = 0; i < missingZeros; i++) { 30138 # resultBuilder.push('0'); 30139 # } 30140 # resultBuilder.push(hexString); 30141 # return resultBuilder.join(''); 30142 # }; 30143 # 30144 # // ... 30145 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 30146 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 30147 # the final pixel color is defined by the equation: 30148 # 30149 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 30150 # 30151 # This means that a value of 1.0 corresponds to a solid color, whereas 30152 # a value of 0.0 corresponds to a completely transparent color. This 30153 # uses a wrapper message rather than a simple float scalar so that it is 30154 # possible to distinguish between a default value and the value being unset. 30155 # If omitted, this color object is to be rendered as a solid color 30156 # (as if the alpha value had been explicitly given with a value of 1.0). 30157 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 30158 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 30159 }, 30160 "width": 42, # The width of the border, in pixels. 30161 # Deprecated; the width is determined by the "style" field. 30162 "style": "A String", # The style of the border. 30163 }, 30164 "right": { # A border along a cell. # The right border of the cell. 30165 "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border. 30166 # for simplicity of conversion to/from color representations in various 30167 # languages over compactness; for example, the fields of this representation 30168 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 30169 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 30170 # method in iOS; and, with just a little work, it can be easily formatted into 30171 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 30172 # 30173 # Example (Java): 30174 # 30175 # import com.google.type.Color; 30176 # 30177 # // ... 30178 # public static java.awt.Color fromProto(Color protocolor) { 30179 # float alpha = protocolor.hasAlpha() 30180 # ? protocolor.getAlpha().getValue() 30181 # : 1.0; 30182 # 30183 # return new java.awt.Color( 30184 # protocolor.getRed(), 30185 # protocolor.getGreen(), 30186 # protocolor.getBlue(), 30187 # alpha); 30188 # } 30189 # 30190 # public static Color toProto(java.awt.Color color) { 30191 # float red = (float) color.getRed(); 30192 # float green = (float) color.getGreen(); 30193 # float blue = (float) color.getBlue(); 30194 # float denominator = 255.0; 30195 # Color.Builder resultBuilder = 30196 # Color 30197 # .newBuilder() 30198 # .setRed(red / denominator) 30199 # .setGreen(green / denominator) 30200 # .setBlue(blue / denominator); 30201 # int alpha = color.getAlpha(); 30202 # if (alpha != 255) { 30203 # result.setAlpha( 30204 # FloatValue 30205 # .newBuilder() 30206 # .setValue(((float) alpha) / denominator) 30207 # .build()); 30208 # } 30209 # return resultBuilder.build(); 30210 # } 30211 # // ... 30212 # 30213 # Example (iOS / Obj-C): 30214 # 30215 # // ... 30216 # static UIColor* fromProto(Color* protocolor) { 30217 # float red = [protocolor red]; 30218 # float green = [protocolor green]; 30219 # float blue = [protocolor blue]; 30220 # FloatValue* alpha_wrapper = [protocolor alpha]; 30221 # float alpha = 1.0; 30222 # if (alpha_wrapper != nil) { 30223 # alpha = [alpha_wrapper value]; 30224 # } 30225 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 30226 # } 30227 # 30228 # static Color* toProto(UIColor* color) { 30229 # CGFloat red, green, blue, alpha; 30230 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 30231 # return nil; 30232 # } 30233 # Color* result = [Color alloc] init]; 30234 # [result setRed:red]; 30235 # [result setGreen:green]; 30236 # [result setBlue:blue]; 30237 # if (alpha <= 0.9999) { 30238 # [result setAlpha:floatWrapperWithValue(alpha)]; 30239 # } 30240 # [result autorelease]; 30241 # return result; 30242 # } 30243 # // ... 30244 # 30245 # Example (JavaScript): 30246 # 30247 # // ... 30248 # 30249 # var protoToCssColor = function(rgb_color) { 30250 # var redFrac = rgb_color.red || 0.0; 30251 # var greenFrac = rgb_color.green || 0.0; 30252 # var blueFrac = rgb_color.blue || 0.0; 30253 # var red = Math.floor(redFrac * 255); 30254 # var green = Math.floor(greenFrac * 255); 30255 # var blue = Math.floor(blueFrac * 255); 30256 # 30257 # if (!('alpha' in rgb_color)) { 30258 # return rgbToCssColor_(red, green, blue); 30259 # } 30260 # 30261 # var alphaFrac = rgb_color.alpha.value || 0.0; 30262 # var rgbParams = [red, green, blue].join(','); 30263 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 30264 # }; 30265 # 30266 # var rgbToCssColor_ = function(red, green, blue) { 30267 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 30268 # var hexString = rgbNumber.toString(16); 30269 # var missingZeros = 6 - hexString.length; 30270 # var resultBuilder = ['#']; 30271 # for (var i = 0; i < missingZeros; i++) { 30272 # resultBuilder.push('0'); 30273 # } 30274 # resultBuilder.push(hexString); 30275 # return resultBuilder.join(''); 30276 # }; 30277 # 30278 # // ... 30279 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 30280 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 30281 # the final pixel color is defined by the equation: 30282 # 30283 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 30284 # 30285 # This means that a value of 1.0 corresponds to a solid color, whereas 30286 # a value of 0.0 corresponds to a completely transparent color. This 30287 # uses a wrapper message rather than a simple float scalar so that it is 30288 # possible to distinguish between a default value and the value being unset. 30289 # If omitted, this color object is to be rendered as a solid color 30290 # (as if the alpha value had been explicitly given with a value of 1.0). 30291 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 30292 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 30293 }, 30294 "width": 42, # The width of the border, in pixels. 30295 # Deprecated; the width is determined by the "style" field. 30296 "style": "A String", # The style of the border. 30297 }, 30298 "bottom": { # A border along a cell. # The bottom border of the cell. 30299 "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border. 30300 # for simplicity of conversion to/from color representations in various 30301 # languages over compactness; for example, the fields of this representation 30302 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 30303 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 30304 # method in iOS; and, with just a little work, it can be easily formatted into 30305 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 30306 # 30307 # Example (Java): 30308 # 30309 # import com.google.type.Color; 30310 # 30311 # // ... 30312 # public static java.awt.Color fromProto(Color protocolor) { 30313 # float alpha = protocolor.hasAlpha() 30314 # ? protocolor.getAlpha().getValue() 30315 # : 1.0; 30316 # 30317 # return new java.awt.Color( 30318 # protocolor.getRed(), 30319 # protocolor.getGreen(), 30320 # protocolor.getBlue(), 30321 # alpha); 30322 # } 30323 # 30324 # public static Color toProto(java.awt.Color color) { 30325 # float red = (float) color.getRed(); 30326 # float green = (float) color.getGreen(); 30327 # float blue = (float) color.getBlue(); 30328 # float denominator = 255.0; 30329 # Color.Builder resultBuilder = 30330 # Color 30331 # .newBuilder() 30332 # .setRed(red / denominator) 30333 # .setGreen(green / denominator) 30334 # .setBlue(blue / denominator); 30335 # int alpha = color.getAlpha(); 30336 # if (alpha != 255) { 30337 # result.setAlpha( 30338 # FloatValue 30339 # .newBuilder() 30340 # .setValue(((float) alpha) / denominator) 30341 # .build()); 30342 # } 30343 # return resultBuilder.build(); 30344 # } 30345 # // ... 30346 # 30347 # Example (iOS / Obj-C): 30348 # 30349 # // ... 30350 # static UIColor* fromProto(Color* protocolor) { 30351 # float red = [protocolor red]; 30352 # float green = [protocolor green]; 30353 # float blue = [protocolor blue]; 30354 # FloatValue* alpha_wrapper = [protocolor alpha]; 30355 # float alpha = 1.0; 30356 # if (alpha_wrapper != nil) { 30357 # alpha = [alpha_wrapper value]; 30358 # } 30359 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 30360 # } 30361 # 30362 # static Color* toProto(UIColor* color) { 30363 # CGFloat red, green, blue, alpha; 30364 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 30365 # return nil; 30366 # } 30367 # Color* result = [Color alloc] init]; 30368 # [result setRed:red]; 30369 # [result setGreen:green]; 30370 # [result setBlue:blue]; 30371 # if (alpha <= 0.9999) { 30372 # [result setAlpha:floatWrapperWithValue(alpha)]; 30373 # } 30374 # [result autorelease]; 30375 # return result; 30376 # } 30377 # // ... 30378 # 30379 # Example (JavaScript): 30380 # 30381 # // ... 30382 # 30383 # var protoToCssColor = function(rgb_color) { 30384 # var redFrac = rgb_color.red || 0.0; 30385 # var greenFrac = rgb_color.green || 0.0; 30386 # var blueFrac = rgb_color.blue || 0.0; 30387 # var red = Math.floor(redFrac * 255); 30388 # var green = Math.floor(greenFrac * 255); 30389 # var blue = Math.floor(blueFrac * 255); 30390 # 30391 # if (!('alpha' in rgb_color)) { 30392 # return rgbToCssColor_(red, green, blue); 30393 # } 30394 # 30395 # var alphaFrac = rgb_color.alpha.value || 0.0; 30396 # var rgbParams = [red, green, blue].join(','); 30397 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 30398 # }; 30399 # 30400 # var rgbToCssColor_ = function(red, green, blue) { 30401 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 30402 # var hexString = rgbNumber.toString(16); 30403 # var missingZeros = 6 - hexString.length; 30404 # var resultBuilder = ['#']; 30405 # for (var i = 0; i < missingZeros; i++) { 30406 # resultBuilder.push('0'); 30407 # } 30408 # resultBuilder.push(hexString); 30409 # return resultBuilder.join(''); 30410 # }; 30411 # 30412 # // ... 30413 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 30414 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 30415 # the final pixel color is defined by the equation: 30416 # 30417 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 30418 # 30419 # This means that a value of 1.0 corresponds to a solid color, whereas 30420 # a value of 0.0 corresponds to a completely transparent color. This 30421 # uses a wrapper message rather than a simple float scalar so that it is 30422 # possible to distinguish between a default value and the value being unset. 30423 # If omitted, this color object is to be rendered as a solid color 30424 # (as if the alpha value had been explicitly given with a value of 1.0). 30425 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 30426 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 30427 }, 30428 "width": 42, # The width of the border, in pixels. 30429 # Deprecated; the width is determined by the "style" field. 30430 "style": "A String", # The style of the border. 30431 }, 30432 "left": { # A border along a cell. # The left border of the cell. 30433 "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border. 30434 # for simplicity of conversion to/from color representations in various 30435 # languages over compactness; for example, the fields of this representation 30436 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 30437 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 30438 # method in iOS; and, with just a little work, it can be easily formatted into 30439 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 30440 # 30441 # Example (Java): 30442 # 30443 # import com.google.type.Color; 30444 # 30445 # // ... 30446 # public static java.awt.Color fromProto(Color protocolor) { 30447 # float alpha = protocolor.hasAlpha() 30448 # ? protocolor.getAlpha().getValue() 30449 # : 1.0; 30450 # 30451 # return new java.awt.Color( 30452 # protocolor.getRed(), 30453 # protocolor.getGreen(), 30454 # protocolor.getBlue(), 30455 # alpha); 30456 # } 30457 # 30458 # public static Color toProto(java.awt.Color color) { 30459 # float red = (float) color.getRed(); 30460 # float green = (float) color.getGreen(); 30461 # float blue = (float) color.getBlue(); 30462 # float denominator = 255.0; 30463 # Color.Builder resultBuilder = 30464 # Color 30465 # .newBuilder() 30466 # .setRed(red / denominator) 30467 # .setGreen(green / denominator) 30468 # .setBlue(blue / denominator); 30469 # int alpha = color.getAlpha(); 30470 # if (alpha != 255) { 30471 # result.setAlpha( 30472 # FloatValue 30473 # .newBuilder() 30474 # .setValue(((float) alpha) / denominator) 30475 # .build()); 30476 # } 30477 # return resultBuilder.build(); 30478 # } 30479 # // ... 30480 # 30481 # Example (iOS / Obj-C): 30482 # 30483 # // ... 30484 # static UIColor* fromProto(Color* protocolor) { 30485 # float red = [protocolor red]; 30486 # float green = [protocolor green]; 30487 # float blue = [protocolor blue]; 30488 # FloatValue* alpha_wrapper = [protocolor alpha]; 30489 # float alpha = 1.0; 30490 # if (alpha_wrapper != nil) { 30491 # alpha = [alpha_wrapper value]; 30492 # } 30493 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 30494 # } 30495 # 30496 # static Color* toProto(UIColor* color) { 30497 # CGFloat red, green, blue, alpha; 30498 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 30499 # return nil; 30500 # } 30501 # Color* result = [Color alloc] init]; 30502 # [result setRed:red]; 30503 # [result setGreen:green]; 30504 # [result setBlue:blue]; 30505 # if (alpha <= 0.9999) { 30506 # [result setAlpha:floatWrapperWithValue(alpha)]; 30507 # } 30508 # [result autorelease]; 30509 # return result; 30510 # } 30511 # // ... 30512 # 30513 # Example (JavaScript): 30514 # 30515 # // ... 30516 # 30517 # var protoToCssColor = function(rgb_color) { 30518 # var redFrac = rgb_color.red || 0.0; 30519 # var greenFrac = rgb_color.green || 0.0; 30520 # var blueFrac = rgb_color.blue || 0.0; 30521 # var red = Math.floor(redFrac * 255); 30522 # var green = Math.floor(greenFrac * 255); 30523 # var blue = Math.floor(blueFrac * 255); 30524 # 30525 # if (!('alpha' in rgb_color)) { 30526 # return rgbToCssColor_(red, green, blue); 30527 # } 30528 # 30529 # var alphaFrac = rgb_color.alpha.value || 0.0; 30530 # var rgbParams = [red, green, blue].join(','); 30531 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 30532 # }; 30533 # 30534 # var rgbToCssColor_ = function(red, green, blue) { 30535 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 30536 # var hexString = rgbNumber.toString(16); 30537 # var missingZeros = 6 - hexString.length; 30538 # var resultBuilder = ['#']; 30539 # for (var i = 0; i < missingZeros; i++) { 30540 # resultBuilder.push('0'); 30541 # } 30542 # resultBuilder.push(hexString); 30543 # return resultBuilder.join(''); 30544 # }; 30545 # 30546 # // ... 30547 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 30548 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 30549 # the final pixel color is defined by the equation: 30550 # 30551 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 30552 # 30553 # This means that a value of 1.0 corresponds to a solid color, whereas 30554 # a value of 0.0 corresponds to a completely transparent color. This 30555 # uses a wrapper message rather than a simple float scalar so that it is 30556 # possible to distinguish between a default value and the value being unset. 30557 # If omitted, this color object is to be rendered as a solid color 30558 # (as if the alpha value had been explicitly given with a value of 1.0). 30559 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 30560 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 30561 }, 30562 "width": 42, # The width of the border, in pixels. 30563 # Deprecated; the width is determined by the "style" field. 30564 "style": "A String", # The style of the border. 30565 }, 30566 }, 30567 "wrapStrategy": "A String", # The wrap strategy for the value in the cell. 30568 }, 30569 }, 30570 "gradientRule": { # A rule that applies a gradient color scale format, based on # The formatting will vary based on the gradients in the rule. 30571 # the interpolation points listed. The format of a cell will vary 30572 # based on its contents as compared to the values of the interpolation 30573 # points. 30574 "maxpoint": { # A single interpolation point on a gradient conditional format. # The final interpolation point. 30575 # These pin the gradient color scale according to the color, 30576 # type and value chosen. 30577 "color": { # Represents a color in the RGBA color space. This representation is designed # The color this interpolation point should use. 30578 # for simplicity of conversion to/from color representations in various 30579 # languages over compactness; for example, the fields of this representation 30580 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 30581 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 30582 # method in iOS; and, with just a little work, it can be easily formatted into 30583 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 30584 # 30585 # Example (Java): 30586 # 30587 # import com.google.type.Color; 30588 # 30589 # // ... 30590 # public static java.awt.Color fromProto(Color protocolor) { 30591 # float alpha = protocolor.hasAlpha() 30592 # ? protocolor.getAlpha().getValue() 30593 # : 1.0; 30594 # 30595 # return new java.awt.Color( 30596 # protocolor.getRed(), 30597 # protocolor.getGreen(), 30598 # protocolor.getBlue(), 30599 # alpha); 30600 # } 30601 # 30602 # public static Color toProto(java.awt.Color color) { 30603 # float red = (float) color.getRed(); 30604 # float green = (float) color.getGreen(); 30605 # float blue = (float) color.getBlue(); 30606 # float denominator = 255.0; 30607 # Color.Builder resultBuilder = 30608 # Color 30609 # .newBuilder() 30610 # .setRed(red / denominator) 30611 # .setGreen(green / denominator) 30612 # .setBlue(blue / denominator); 30613 # int alpha = color.getAlpha(); 30614 # if (alpha != 255) { 30615 # result.setAlpha( 30616 # FloatValue 30617 # .newBuilder() 30618 # .setValue(((float) alpha) / denominator) 30619 # .build()); 30620 # } 30621 # return resultBuilder.build(); 30622 # } 30623 # // ... 30624 # 30625 # Example (iOS / Obj-C): 30626 # 30627 # // ... 30628 # static UIColor* fromProto(Color* protocolor) { 30629 # float red = [protocolor red]; 30630 # float green = [protocolor green]; 30631 # float blue = [protocolor blue]; 30632 # FloatValue* alpha_wrapper = [protocolor alpha]; 30633 # float alpha = 1.0; 30634 # if (alpha_wrapper != nil) { 30635 # alpha = [alpha_wrapper value]; 30636 # } 30637 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 30638 # } 30639 # 30640 # static Color* toProto(UIColor* color) { 30641 # CGFloat red, green, blue, alpha; 30642 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 30643 # return nil; 30644 # } 30645 # Color* result = [Color alloc] init]; 30646 # [result setRed:red]; 30647 # [result setGreen:green]; 30648 # [result setBlue:blue]; 30649 # if (alpha <= 0.9999) { 30650 # [result setAlpha:floatWrapperWithValue(alpha)]; 30651 # } 30652 # [result autorelease]; 30653 # return result; 30654 # } 30655 # // ... 30656 # 30657 # Example (JavaScript): 30658 # 30659 # // ... 30660 # 30661 # var protoToCssColor = function(rgb_color) { 30662 # var redFrac = rgb_color.red || 0.0; 30663 # var greenFrac = rgb_color.green || 0.0; 30664 # var blueFrac = rgb_color.blue || 0.0; 30665 # var red = Math.floor(redFrac * 255); 30666 # var green = Math.floor(greenFrac * 255); 30667 # var blue = Math.floor(blueFrac * 255); 30668 # 30669 # if (!('alpha' in rgb_color)) { 30670 # return rgbToCssColor_(red, green, blue); 30671 # } 30672 # 30673 # var alphaFrac = rgb_color.alpha.value || 0.0; 30674 # var rgbParams = [red, green, blue].join(','); 30675 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 30676 # }; 30677 # 30678 # var rgbToCssColor_ = function(red, green, blue) { 30679 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 30680 # var hexString = rgbNumber.toString(16); 30681 # var missingZeros = 6 - hexString.length; 30682 # var resultBuilder = ['#']; 30683 # for (var i = 0; i < missingZeros; i++) { 30684 # resultBuilder.push('0'); 30685 # } 30686 # resultBuilder.push(hexString); 30687 # return resultBuilder.join(''); 30688 # }; 30689 # 30690 # // ... 30691 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 30692 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 30693 # the final pixel color is defined by the equation: 30694 # 30695 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 30696 # 30697 # This means that a value of 1.0 corresponds to a solid color, whereas 30698 # a value of 0.0 corresponds to a completely transparent color. This 30699 # uses a wrapper message rather than a simple float scalar so that it is 30700 # possible to distinguish between a default value and the value being unset. 30701 # If omitted, this color object is to be rendered as a solid color 30702 # (as if the alpha value had been explicitly given with a value of 1.0). 30703 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 30704 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 30705 }, 30706 "type": "A String", # How the value should be interpreted. 30707 "value": "A String", # The value this interpolation point uses. May be a formula. 30708 # Unused if type is MIN or 30709 # MAX. 30710 }, 30711 "midpoint": { # A single interpolation point on a gradient conditional format. # An optional midway interpolation point. 30712 # These pin the gradient color scale according to the color, 30713 # type and value chosen. 30714 "color": { # Represents a color in the RGBA color space. This representation is designed # The color this interpolation point should use. 30715 # for simplicity of conversion to/from color representations in various 30716 # languages over compactness; for example, the fields of this representation 30717 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 30718 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 30719 # method in iOS; and, with just a little work, it can be easily formatted into 30720 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 30721 # 30722 # Example (Java): 30723 # 30724 # import com.google.type.Color; 30725 # 30726 # // ... 30727 # public static java.awt.Color fromProto(Color protocolor) { 30728 # float alpha = protocolor.hasAlpha() 30729 # ? protocolor.getAlpha().getValue() 30730 # : 1.0; 30731 # 30732 # return new java.awt.Color( 30733 # protocolor.getRed(), 30734 # protocolor.getGreen(), 30735 # protocolor.getBlue(), 30736 # alpha); 30737 # } 30738 # 30739 # public static Color toProto(java.awt.Color color) { 30740 # float red = (float) color.getRed(); 30741 # float green = (float) color.getGreen(); 30742 # float blue = (float) color.getBlue(); 30743 # float denominator = 255.0; 30744 # Color.Builder resultBuilder = 30745 # Color 30746 # .newBuilder() 30747 # .setRed(red / denominator) 30748 # .setGreen(green / denominator) 30749 # .setBlue(blue / denominator); 30750 # int alpha = color.getAlpha(); 30751 # if (alpha != 255) { 30752 # result.setAlpha( 30753 # FloatValue 30754 # .newBuilder() 30755 # .setValue(((float) alpha) / denominator) 30756 # .build()); 30757 # } 30758 # return resultBuilder.build(); 30759 # } 30760 # // ... 30761 # 30762 # Example (iOS / Obj-C): 30763 # 30764 # // ... 30765 # static UIColor* fromProto(Color* protocolor) { 30766 # float red = [protocolor red]; 30767 # float green = [protocolor green]; 30768 # float blue = [protocolor blue]; 30769 # FloatValue* alpha_wrapper = [protocolor alpha]; 30770 # float alpha = 1.0; 30771 # if (alpha_wrapper != nil) { 30772 # alpha = [alpha_wrapper value]; 30773 # } 30774 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 30775 # } 30776 # 30777 # static Color* toProto(UIColor* color) { 30778 # CGFloat red, green, blue, alpha; 30779 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 30780 # return nil; 30781 # } 30782 # Color* result = [Color alloc] init]; 30783 # [result setRed:red]; 30784 # [result setGreen:green]; 30785 # [result setBlue:blue]; 30786 # if (alpha <= 0.9999) { 30787 # [result setAlpha:floatWrapperWithValue(alpha)]; 30788 # } 30789 # [result autorelease]; 30790 # return result; 30791 # } 30792 # // ... 30793 # 30794 # Example (JavaScript): 30795 # 30796 # // ... 30797 # 30798 # var protoToCssColor = function(rgb_color) { 30799 # var redFrac = rgb_color.red || 0.0; 30800 # var greenFrac = rgb_color.green || 0.0; 30801 # var blueFrac = rgb_color.blue || 0.0; 30802 # var red = Math.floor(redFrac * 255); 30803 # var green = Math.floor(greenFrac * 255); 30804 # var blue = Math.floor(blueFrac * 255); 30805 # 30806 # if (!('alpha' in rgb_color)) { 30807 # return rgbToCssColor_(red, green, blue); 30808 # } 30809 # 30810 # var alphaFrac = rgb_color.alpha.value || 0.0; 30811 # var rgbParams = [red, green, blue].join(','); 30812 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 30813 # }; 30814 # 30815 # var rgbToCssColor_ = function(red, green, blue) { 30816 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 30817 # var hexString = rgbNumber.toString(16); 30818 # var missingZeros = 6 - hexString.length; 30819 # var resultBuilder = ['#']; 30820 # for (var i = 0; i < missingZeros; i++) { 30821 # resultBuilder.push('0'); 30822 # } 30823 # resultBuilder.push(hexString); 30824 # return resultBuilder.join(''); 30825 # }; 30826 # 30827 # // ... 30828 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 30829 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 30830 # the final pixel color is defined by the equation: 30831 # 30832 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 30833 # 30834 # This means that a value of 1.0 corresponds to a solid color, whereas 30835 # a value of 0.0 corresponds to a completely transparent color. This 30836 # uses a wrapper message rather than a simple float scalar so that it is 30837 # possible to distinguish between a default value and the value being unset. 30838 # If omitted, this color object is to be rendered as a solid color 30839 # (as if the alpha value had been explicitly given with a value of 1.0). 30840 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 30841 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 30842 }, 30843 "type": "A String", # How the value should be interpreted. 30844 "value": "A String", # The value this interpolation point uses. May be a formula. 30845 # Unused if type is MIN or 30846 # MAX. 30847 }, 30848 "minpoint": { # A single interpolation point on a gradient conditional format. # The starting interpolation point. 30849 # These pin the gradient color scale according to the color, 30850 # type and value chosen. 30851 "color": { # Represents a color in the RGBA color space. This representation is designed # The color this interpolation point should use. 30852 # for simplicity of conversion to/from color representations in various 30853 # languages over compactness; for example, the fields of this representation 30854 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 30855 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 30856 # method in iOS; and, with just a little work, it can be easily formatted into 30857 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 30858 # 30859 # Example (Java): 30860 # 30861 # import com.google.type.Color; 30862 # 30863 # // ... 30864 # public static java.awt.Color fromProto(Color protocolor) { 30865 # float alpha = protocolor.hasAlpha() 30866 # ? protocolor.getAlpha().getValue() 30867 # : 1.0; 30868 # 30869 # return new java.awt.Color( 30870 # protocolor.getRed(), 30871 # protocolor.getGreen(), 30872 # protocolor.getBlue(), 30873 # alpha); 30874 # } 30875 # 30876 # public static Color toProto(java.awt.Color color) { 30877 # float red = (float) color.getRed(); 30878 # float green = (float) color.getGreen(); 30879 # float blue = (float) color.getBlue(); 30880 # float denominator = 255.0; 30881 # Color.Builder resultBuilder = 30882 # Color 30883 # .newBuilder() 30884 # .setRed(red / denominator) 30885 # .setGreen(green / denominator) 30886 # .setBlue(blue / denominator); 30887 # int alpha = color.getAlpha(); 30888 # if (alpha != 255) { 30889 # result.setAlpha( 30890 # FloatValue 30891 # .newBuilder() 30892 # .setValue(((float) alpha) / denominator) 30893 # .build()); 30894 # } 30895 # return resultBuilder.build(); 30896 # } 30897 # // ... 30898 # 30899 # Example (iOS / Obj-C): 30900 # 30901 # // ... 30902 # static UIColor* fromProto(Color* protocolor) { 30903 # float red = [protocolor red]; 30904 # float green = [protocolor green]; 30905 # float blue = [protocolor blue]; 30906 # FloatValue* alpha_wrapper = [protocolor alpha]; 30907 # float alpha = 1.0; 30908 # if (alpha_wrapper != nil) { 30909 # alpha = [alpha_wrapper value]; 30910 # } 30911 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 30912 # } 30913 # 30914 # static Color* toProto(UIColor* color) { 30915 # CGFloat red, green, blue, alpha; 30916 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 30917 # return nil; 30918 # } 30919 # Color* result = [Color alloc] init]; 30920 # [result setRed:red]; 30921 # [result setGreen:green]; 30922 # [result setBlue:blue]; 30923 # if (alpha <= 0.9999) { 30924 # [result setAlpha:floatWrapperWithValue(alpha)]; 30925 # } 30926 # [result autorelease]; 30927 # return result; 30928 # } 30929 # // ... 30930 # 30931 # Example (JavaScript): 30932 # 30933 # // ... 30934 # 30935 # var protoToCssColor = function(rgb_color) { 30936 # var redFrac = rgb_color.red || 0.0; 30937 # var greenFrac = rgb_color.green || 0.0; 30938 # var blueFrac = rgb_color.blue || 0.0; 30939 # var red = Math.floor(redFrac * 255); 30940 # var green = Math.floor(greenFrac * 255); 30941 # var blue = Math.floor(blueFrac * 255); 30942 # 30943 # if (!('alpha' in rgb_color)) { 30944 # return rgbToCssColor_(red, green, blue); 30945 # } 30946 # 30947 # var alphaFrac = rgb_color.alpha.value || 0.0; 30948 # var rgbParams = [red, green, blue].join(','); 30949 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 30950 # }; 30951 # 30952 # var rgbToCssColor_ = function(red, green, blue) { 30953 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 30954 # var hexString = rgbNumber.toString(16); 30955 # var missingZeros = 6 - hexString.length; 30956 # var resultBuilder = ['#']; 30957 # for (var i = 0; i < missingZeros; i++) { 30958 # resultBuilder.push('0'); 30959 # } 30960 # resultBuilder.push(hexString); 30961 # return resultBuilder.join(''); 30962 # }; 30963 # 30964 # // ... 30965 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 30966 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 30967 # the final pixel color is defined by the equation: 30968 # 30969 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 30970 # 30971 # This means that a value of 1.0 corresponds to a solid color, whereas 30972 # a value of 0.0 corresponds to a completely transparent color. This 30973 # uses a wrapper message rather than a simple float scalar so that it is 30974 # possible to distinguish between a default value and the value being unset. 30975 # If omitted, this color object is to be rendered as a solid color 30976 # (as if the alpha value had been explicitly given with a value of 1.0). 30977 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 30978 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 30979 }, 30980 "type": "A String", # How the value should be interpreted. 30981 "value": "A String", # The value this interpolation point uses. May be a formula. 30982 # Unused if type is MIN or 30983 # MAX. 30984 }, 30985 }, 30986 }, 30987 ], 30988 "bandedRanges": [ # The banded (i.e. alternating colors) ranges on this sheet. 30989 { # A banded (alternating colors) range in a sheet. 30990 "range": { # A range on a sheet. # The range over which these properties are applied. 30991 # All indexes are zero-based. 30992 # Indexes are half open, e.g the start index is inclusive 30993 # and the end index is exclusive -- [start_index, end_index). 30994 # Missing indexes indicate the range is unbounded on that side. 30995 # 30996 # For example, if `"Sheet1"` is sheet ID 0, then: 30997 # 30998 # `Sheet1!A1:A1 == sheet_id: 0, 30999 # start_row_index: 0, end_row_index: 1, 31000 # start_column_index: 0, end_column_index: 1` 31001 # 31002 # `Sheet1!A3:B4 == sheet_id: 0, 31003 # start_row_index: 2, end_row_index: 4, 31004 # start_column_index: 0, end_column_index: 2` 31005 # 31006 # `Sheet1!A:B == sheet_id: 0, 31007 # start_column_index: 0, end_column_index: 2` 31008 # 31009 # `Sheet1!A5:B == sheet_id: 0, 31010 # start_row_index: 4, 31011 # start_column_index: 0, end_column_index: 2` 31012 # 31013 # `Sheet1 == sheet_id:0` 31014 # 31015 # The start index must always be less than or equal to the end index. 31016 # If the start index equals the end index, then the range is empty. 31017 # Empty ranges are typically not meaningful and are usually rendered in the 31018 # UI as `#REF!`. 31019 "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded. 31020 "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded. 31021 "sheetId": 42, # The sheet this range is on. 31022 "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded. 31023 "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded. 31024 }, 31025 "columnProperties": { # Properties referring a single dimension (either row or column). If both # Properties for column bands. These properties will be applied on a column- 31026 # by-column basis throughout all the columns in the range. At least one of 31027 # row_properties or column_properties must be specified. 31028 # BandedRange.row_properties and BandedRange.column_properties are 31029 # set, the fill colors are applied to cells according to the following rules: 31030 # 31031 # * header_color and footer_color take priority over band colors. 31032 # * first_band_color takes priority over second_band_color. 31033 # * row_properties takes priority over column_properties. 31034 # 31035 # For example, the first row color takes priority over the first column 31036 # color, but the first column color takes priority over the second row color. 31037 # Similarly, the row header takes priority over the column header in the 31038 # top left cell, but the column header takes priority over the first row 31039 # color if the row header is not set. 31040 "secondBandColor": { # Represents a color in the RGBA color space. This representation is designed # The second color that is alternating. (Required) 31041 # for simplicity of conversion to/from color representations in various 31042 # languages over compactness; for example, the fields of this representation 31043 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 31044 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 31045 # method in iOS; and, with just a little work, it can be easily formatted into 31046 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 31047 # 31048 # Example (Java): 31049 # 31050 # import com.google.type.Color; 31051 # 31052 # // ... 31053 # public static java.awt.Color fromProto(Color protocolor) { 31054 # float alpha = protocolor.hasAlpha() 31055 # ? protocolor.getAlpha().getValue() 31056 # : 1.0; 31057 # 31058 # return new java.awt.Color( 31059 # protocolor.getRed(), 31060 # protocolor.getGreen(), 31061 # protocolor.getBlue(), 31062 # alpha); 31063 # } 31064 # 31065 # public static Color toProto(java.awt.Color color) { 31066 # float red = (float) color.getRed(); 31067 # float green = (float) color.getGreen(); 31068 # float blue = (float) color.getBlue(); 31069 # float denominator = 255.0; 31070 # Color.Builder resultBuilder = 31071 # Color 31072 # .newBuilder() 31073 # .setRed(red / denominator) 31074 # .setGreen(green / denominator) 31075 # .setBlue(blue / denominator); 31076 # int alpha = color.getAlpha(); 31077 # if (alpha != 255) { 31078 # result.setAlpha( 31079 # FloatValue 31080 # .newBuilder() 31081 # .setValue(((float) alpha) / denominator) 31082 # .build()); 31083 # } 31084 # return resultBuilder.build(); 31085 # } 31086 # // ... 31087 # 31088 # Example (iOS / Obj-C): 31089 # 31090 # // ... 31091 # static UIColor* fromProto(Color* protocolor) { 31092 # float red = [protocolor red]; 31093 # float green = [protocolor green]; 31094 # float blue = [protocolor blue]; 31095 # FloatValue* alpha_wrapper = [protocolor alpha]; 31096 # float alpha = 1.0; 31097 # if (alpha_wrapper != nil) { 31098 # alpha = [alpha_wrapper value]; 31099 # } 31100 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 31101 # } 31102 # 31103 # static Color* toProto(UIColor* color) { 31104 # CGFloat red, green, blue, alpha; 31105 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 31106 # return nil; 31107 # } 31108 # Color* result = [Color alloc] init]; 31109 # [result setRed:red]; 31110 # [result setGreen:green]; 31111 # [result setBlue:blue]; 31112 # if (alpha <= 0.9999) { 31113 # [result setAlpha:floatWrapperWithValue(alpha)]; 31114 # } 31115 # [result autorelease]; 31116 # return result; 31117 # } 31118 # // ... 31119 # 31120 # Example (JavaScript): 31121 # 31122 # // ... 31123 # 31124 # var protoToCssColor = function(rgb_color) { 31125 # var redFrac = rgb_color.red || 0.0; 31126 # var greenFrac = rgb_color.green || 0.0; 31127 # var blueFrac = rgb_color.blue || 0.0; 31128 # var red = Math.floor(redFrac * 255); 31129 # var green = Math.floor(greenFrac * 255); 31130 # var blue = Math.floor(blueFrac * 255); 31131 # 31132 # if (!('alpha' in rgb_color)) { 31133 # return rgbToCssColor_(red, green, blue); 31134 # } 31135 # 31136 # var alphaFrac = rgb_color.alpha.value || 0.0; 31137 # var rgbParams = [red, green, blue].join(','); 31138 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 31139 # }; 31140 # 31141 # var rgbToCssColor_ = function(red, green, blue) { 31142 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 31143 # var hexString = rgbNumber.toString(16); 31144 # var missingZeros = 6 - hexString.length; 31145 # var resultBuilder = ['#']; 31146 # for (var i = 0; i < missingZeros; i++) { 31147 # resultBuilder.push('0'); 31148 # } 31149 # resultBuilder.push(hexString); 31150 # return resultBuilder.join(''); 31151 # }; 31152 # 31153 # // ... 31154 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 31155 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 31156 # the final pixel color is defined by the equation: 31157 # 31158 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 31159 # 31160 # This means that a value of 1.0 corresponds to a solid color, whereas 31161 # a value of 0.0 corresponds to a completely transparent color. This 31162 # uses a wrapper message rather than a simple float scalar so that it is 31163 # possible to distinguish between a default value and the value being unset. 31164 # If omitted, this color object is to be rendered as a solid color 31165 # (as if the alpha value had been explicitly given with a value of 1.0). 31166 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 31167 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 31168 }, 31169 "headerColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the first row or column. If this field is set, the first 31170 # row or column will be filled with this color and the colors will 31171 # alternate between first_band_color and second_band_color starting 31172 # from the second row or column. Otherwise, the first row or column will be 31173 # filled with first_band_color and the colors will proceed to alternate 31174 # as they normally would. 31175 # for simplicity of conversion to/from color representations in various 31176 # languages over compactness; for example, the fields of this representation 31177 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 31178 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 31179 # method in iOS; and, with just a little work, it can be easily formatted into 31180 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 31181 # 31182 # Example (Java): 31183 # 31184 # import com.google.type.Color; 31185 # 31186 # // ... 31187 # public static java.awt.Color fromProto(Color protocolor) { 31188 # float alpha = protocolor.hasAlpha() 31189 # ? protocolor.getAlpha().getValue() 31190 # : 1.0; 31191 # 31192 # return new java.awt.Color( 31193 # protocolor.getRed(), 31194 # protocolor.getGreen(), 31195 # protocolor.getBlue(), 31196 # alpha); 31197 # } 31198 # 31199 # public static Color toProto(java.awt.Color color) { 31200 # float red = (float) color.getRed(); 31201 # float green = (float) color.getGreen(); 31202 # float blue = (float) color.getBlue(); 31203 # float denominator = 255.0; 31204 # Color.Builder resultBuilder = 31205 # Color 31206 # .newBuilder() 31207 # .setRed(red / denominator) 31208 # .setGreen(green / denominator) 31209 # .setBlue(blue / denominator); 31210 # int alpha = color.getAlpha(); 31211 # if (alpha != 255) { 31212 # result.setAlpha( 31213 # FloatValue 31214 # .newBuilder() 31215 # .setValue(((float) alpha) / denominator) 31216 # .build()); 31217 # } 31218 # return resultBuilder.build(); 31219 # } 31220 # // ... 31221 # 31222 # Example (iOS / Obj-C): 31223 # 31224 # // ... 31225 # static UIColor* fromProto(Color* protocolor) { 31226 # float red = [protocolor red]; 31227 # float green = [protocolor green]; 31228 # float blue = [protocolor blue]; 31229 # FloatValue* alpha_wrapper = [protocolor alpha]; 31230 # float alpha = 1.0; 31231 # if (alpha_wrapper != nil) { 31232 # alpha = [alpha_wrapper value]; 31233 # } 31234 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 31235 # } 31236 # 31237 # static Color* toProto(UIColor* color) { 31238 # CGFloat red, green, blue, alpha; 31239 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 31240 # return nil; 31241 # } 31242 # Color* result = [Color alloc] init]; 31243 # [result setRed:red]; 31244 # [result setGreen:green]; 31245 # [result setBlue:blue]; 31246 # if (alpha <= 0.9999) { 31247 # [result setAlpha:floatWrapperWithValue(alpha)]; 31248 # } 31249 # [result autorelease]; 31250 # return result; 31251 # } 31252 # // ... 31253 # 31254 # Example (JavaScript): 31255 # 31256 # // ... 31257 # 31258 # var protoToCssColor = function(rgb_color) { 31259 # var redFrac = rgb_color.red || 0.0; 31260 # var greenFrac = rgb_color.green || 0.0; 31261 # var blueFrac = rgb_color.blue || 0.0; 31262 # var red = Math.floor(redFrac * 255); 31263 # var green = Math.floor(greenFrac * 255); 31264 # var blue = Math.floor(blueFrac * 255); 31265 # 31266 # if (!('alpha' in rgb_color)) { 31267 # return rgbToCssColor_(red, green, blue); 31268 # } 31269 # 31270 # var alphaFrac = rgb_color.alpha.value || 0.0; 31271 # var rgbParams = [red, green, blue].join(','); 31272 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 31273 # }; 31274 # 31275 # var rgbToCssColor_ = function(red, green, blue) { 31276 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 31277 # var hexString = rgbNumber.toString(16); 31278 # var missingZeros = 6 - hexString.length; 31279 # var resultBuilder = ['#']; 31280 # for (var i = 0; i < missingZeros; i++) { 31281 # resultBuilder.push('0'); 31282 # } 31283 # resultBuilder.push(hexString); 31284 # return resultBuilder.join(''); 31285 # }; 31286 # 31287 # // ... 31288 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 31289 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 31290 # the final pixel color is defined by the equation: 31291 # 31292 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 31293 # 31294 # This means that a value of 1.0 corresponds to a solid color, whereas 31295 # a value of 0.0 corresponds to a completely transparent color. This 31296 # uses a wrapper message rather than a simple float scalar so that it is 31297 # possible to distinguish between a default value and the value being unset. 31298 # If omitted, this color object is to be rendered as a solid color 31299 # (as if the alpha value had been explicitly given with a value of 1.0). 31300 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 31301 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 31302 }, 31303 "footerColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the last row or column. If this field is not set, the last 31304 # row or column will be filled with either first_band_color or 31305 # second_band_color, depending on the color of the previous row or 31306 # column. 31307 # for simplicity of conversion to/from color representations in various 31308 # languages over compactness; for example, the fields of this representation 31309 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 31310 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 31311 # method in iOS; and, with just a little work, it can be easily formatted into 31312 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 31313 # 31314 # Example (Java): 31315 # 31316 # import com.google.type.Color; 31317 # 31318 # // ... 31319 # public static java.awt.Color fromProto(Color protocolor) { 31320 # float alpha = protocolor.hasAlpha() 31321 # ? protocolor.getAlpha().getValue() 31322 # : 1.0; 31323 # 31324 # return new java.awt.Color( 31325 # protocolor.getRed(), 31326 # protocolor.getGreen(), 31327 # protocolor.getBlue(), 31328 # alpha); 31329 # } 31330 # 31331 # public static Color toProto(java.awt.Color color) { 31332 # float red = (float) color.getRed(); 31333 # float green = (float) color.getGreen(); 31334 # float blue = (float) color.getBlue(); 31335 # float denominator = 255.0; 31336 # Color.Builder resultBuilder = 31337 # Color 31338 # .newBuilder() 31339 # .setRed(red / denominator) 31340 # .setGreen(green / denominator) 31341 # .setBlue(blue / denominator); 31342 # int alpha = color.getAlpha(); 31343 # if (alpha != 255) { 31344 # result.setAlpha( 31345 # FloatValue 31346 # .newBuilder() 31347 # .setValue(((float) alpha) / denominator) 31348 # .build()); 31349 # } 31350 # return resultBuilder.build(); 31351 # } 31352 # // ... 31353 # 31354 # Example (iOS / Obj-C): 31355 # 31356 # // ... 31357 # static UIColor* fromProto(Color* protocolor) { 31358 # float red = [protocolor red]; 31359 # float green = [protocolor green]; 31360 # float blue = [protocolor blue]; 31361 # FloatValue* alpha_wrapper = [protocolor alpha]; 31362 # float alpha = 1.0; 31363 # if (alpha_wrapper != nil) { 31364 # alpha = [alpha_wrapper value]; 31365 # } 31366 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 31367 # } 31368 # 31369 # static Color* toProto(UIColor* color) { 31370 # CGFloat red, green, blue, alpha; 31371 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 31372 # return nil; 31373 # } 31374 # Color* result = [Color alloc] init]; 31375 # [result setRed:red]; 31376 # [result setGreen:green]; 31377 # [result setBlue:blue]; 31378 # if (alpha <= 0.9999) { 31379 # [result setAlpha:floatWrapperWithValue(alpha)]; 31380 # } 31381 # [result autorelease]; 31382 # return result; 31383 # } 31384 # // ... 31385 # 31386 # Example (JavaScript): 31387 # 31388 # // ... 31389 # 31390 # var protoToCssColor = function(rgb_color) { 31391 # var redFrac = rgb_color.red || 0.0; 31392 # var greenFrac = rgb_color.green || 0.0; 31393 # var blueFrac = rgb_color.blue || 0.0; 31394 # var red = Math.floor(redFrac * 255); 31395 # var green = Math.floor(greenFrac * 255); 31396 # var blue = Math.floor(blueFrac * 255); 31397 # 31398 # if (!('alpha' in rgb_color)) { 31399 # return rgbToCssColor_(red, green, blue); 31400 # } 31401 # 31402 # var alphaFrac = rgb_color.alpha.value || 0.0; 31403 # var rgbParams = [red, green, blue].join(','); 31404 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 31405 # }; 31406 # 31407 # var rgbToCssColor_ = function(red, green, blue) { 31408 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 31409 # var hexString = rgbNumber.toString(16); 31410 # var missingZeros = 6 - hexString.length; 31411 # var resultBuilder = ['#']; 31412 # for (var i = 0; i < missingZeros; i++) { 31413 # resultBuilder.push('0'); 31414 # } 31415 # resultBuilder.push(hexString); 31416 # return resultBuilder.join(''); 31417 # }; 31418 # 31419 # // ... 31420 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 31421 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 31422 # the final pixel color is defined by the equation: 31423 # 31424 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 31425 # 31426 # This means that a value of 1.0 corresponds to a solid color, whereas 31427 # a value of 0.0 corresponds to a completely transparent color. This 31428 # uses a wrapper message rather than a simple float scalar so that it is 31429 # possible to distinguish between a default value and the value being unset. 31430 # If omitted, this color object is to be rendered as a solid color 31431 # (as if the alpha value had been explicitly given with a value of 1.0). 31432 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 31433 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 31434 }, 31435 "firstBandColor": { # Represents a color in the RGBA color space. This representation is designed # The first color that is alternating. (Required) 31436 # for simplicity of conversion to/from color representations in various 31437 # languages over compactness; for example, the fields of this representation 31438 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 31439 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 31440 # method in iOS; and, with just a little work, it can be easily formatted into 31441 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 31442 # 31443 # Example (Java): 31444 # 31445 # import com.google.type.Color; 31446 # 31447 # // ... 31448 # public static java.awt.Color fromProto(Color protocolor) { 31449 # float alpha = protocolor.hasAlpha() 31450 # ? protocolor.getAlpha().getValue() 31451 # : 1.0; 31452 # 31453 # return new java.awt.Color( 31454 # protocolor.getRed(), 31455 # protocolor.getGreen(), 31456 # protocolor.getBlue(), 31457 # alpha); 31458 # } 31459 # 31460 # public static Color toProto(java.awt.Color color) { 31461 # float red = (float) color.getRed(); 31462 # float green = (float) color.getGreen(); 31463 # float blue = (float) color.getBlue(); 31464 # float denominator = 255.0; 31465 # Color.Builder resultBuilder = 31466 # Color 31467 # .newBuilder() 31468 # .setRed(red / denominator) 31469 # .setGreen(green / denominator) 31470 # .setBlue(blue / denominator); 31471 # int alpha = color.getAlpha(); 31472 # if (alpha != 255) { 31473 # result.setAlpha( 31474 # FloatValue 31475 # .newBuilder() 31476 # .setValue(((float) alpha) / denominator) 31477 # .build()); 31478 # } 31479 # return resultBuilder.build(); 31480 # } 31481 # // ... 31482 # 31483 # Example (iOS / Obj-C): 31484 # 31485 # // ... 31486 # static UIColor* fromProto(Color* protocolor) { 31487 # float red = [protocolor red]; 31488 # float green = [protocolor green]; 31489 # float blue = [protocolor blue]; 31490 # FloatValue* alpha_wrapper = [protocolor alpha]; 31491 # float alpha = 1.0; 31492 # if (alpha_wrapper != nil) { 31493 # alpha = [alpha_wrapper value]; 31494 # } 31495 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 31496 # } 31497 # 31498 # static Color* toProto(UIColor* color) { 31499 # CGFloat red, green, blue, alpha; 31500 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 31501 # return nil; 31502 # } 31503 # Color* result = [Color alloc] init]; 31504 # [result setRed:red]; 31505 # [result setGreen:green]; 31506 # [result setBlue:blue]; 31507 # if (alpha <= 0.9999) { 31508 # [result setAlpha:floatWrapperWithValue(alpha)]; 31509 # } 31510 # [result autorelease]; 31511 # return result; 31512 # } 31513 # // ... 31514 # 31515 # Example (JavaScript): 31516 # 31517 # // ... 31518 # 31519 # var protoToCssColor = function(rgb_color) { 31520 # var redFrac = rgb_color.red || 0.0; 31521 # var greenFrac = rgb_color.green || 0.0; 31522 # var blueFrac = rgb_color.blue || 0.0; 31523 # var red = Math.floor(redFrac * 255); 31524 # var green = Math.floor(greenFrac * 255); 31525 # var blue = Math.floor(blueFrac * 255); 31526 # 31527 # if (!('alpha' in rgb_color)) { 31528 # return rgbToCssColor_(red, green, blue); 31529 # } 31530 # 31531 # var alphaFrac = rgb_color.alpha.value || 0.0; 31532 # var rgbParams = [red, green, blue].join(','); 31533 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 31534 # }; 31535 # 31536 # var rgbToCssColor_ = function(red, green, blue) { 31537 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 31538 # var hexString = rgbNumber.toString(16); 31539 # var missingZeros = 6 - hexString.length; 31540 # var resultBuilder = ['#']; 31541 # for (var i = 0; i < missingZeros; i++) { 31542 # resultBuilder.push('0'); 31543 # } 31544 # resultBuilder.push(hexString); 31545 # return resultBuilder.join(''); 31546 # }; 31547 # 31548 # // ... 31549 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 31550 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 31551 # the final pixel color is defined by the equation: 31552 # 31553 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 31554 # 31555 # This means that a value of 1.0 corresponds to a solid color, whereas 31556 # a value of 0.0 corresponds to a completely transparent color. This 31557 # uses a wrapper message rather than a simple float scalar so that it is 31558 # possible to distinguish between a default value and the value being unset. 31559 # If omitted, this color object is to be rendered as a solid color 31560 # (as if the alpha value had been explicitly given with a value of 1.0). 31561 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 31562 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 31563 }, 31564 }, 31565 "rowProperties": { # Properties referring a single dimension (either row or column). If both # Properties for row bands. These properties will be applied on a row-by-row 31566 # basis throughout all the rows in the range. At least one of 31567 # row_properties or column_properties must be specified. 31568 # BandedRange.row_properties and BandedRange.column_properties are 31569 # set, the fill colors are applied to cells according to the following rules: 31570 # 31571 # * header_color and footer_color take priority over band colors. 31572 # * first_band_color takes priority over second_band_color. 31573 # * row_properties takes priority over column_properties. 31574 # 31575 # For example, the first row color takes priority over the first column 31576 # color, but the first column color takes priority over the second row color. 31577 # Similarly, the row header takes priority over the column header in the 31578 # top left cell, but the column header takes priority over the first row 31579 # color if the row header is not set. 31580 "secondBandColor": { # Represents a color in the RGBA color space. This representation is designed # The second color that is alternating. (Required) 31581 # for simplicity of conversion to/from color representations in various 31582 # languages over compactness; for example, the fields of this representation 31583 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 31584 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 31585 # method in iOS; and, with just a little work, it can be easily formatted into 31586 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 31587 # 31588 # Example (Java): 31589 # 31590 # import com.google.type.Color; 31591 # 31592 # // ... 31593 # public static java.awt.Color fromProto(Color protocolor) { 31594 # float alpha = protocolor.hasAlpha() 31595 # ? protocolor.getAlpha().getValue() 31596 # : 1.0; 31597 # 31598 # return new java.awt.Color( 31599 # protocolor.getRed(), 31600 # protocolor.getGreen(), 31601 # protocolor.getBlue(), 31602 # alpha); 31603 # } 31604 # 31605 # public static Color toProto(java.awt.Color color) { 31606 # float red = (float) color.getRed(); 31607 # float green = (float) color.getGreen(); 31608 # float blue = (float) color.getBlue(); 31609 # float denominator = 255.0; 31610 # Color.Builder resultBuilder = 31611 # Color 31612 # .newBuilder() 31613 # .setRed(red / denominator) 31614 # .setGreen(green / denominator) 31615 # .setBlue(blue / denominator); 31616 # int alpha = color.getAlpha(); 31617 # if (alpha != 255) { 31618 # result.setAlpha( 31619 # FloatValue 31620 # .newBuilder() 31621 # .setValue(((float) alpha) / denominator) 31622 # .build()); 31623 # } 31624 # return resultBuilder.build(); 31625 # } 31626 # // ... 31627 # 31628 # Example (iOS / Obj-C): 31629 # 31630 # // ... 31631 # static UIColor* fromProto(Color* protocolor) { 31632 # float red = [protocolor red]; 31633 # float green = [protocolor green]; 31634 # float blue = [protocolor blue]; 31635 # FloatValue* alpha_wrapper = [protocolor alpha]; 31636 # float alpha = 1.0; 31637 # if (alpha_wrapper != nil) { 31638 # alpha = [alpha_wrapper value]; 31639 # } 31640 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 31641 # } 31642 # 31643 # static Color* toProto(UIColor* color) { 31644 # CGFloat red, green, blue, alpha; 31645 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 31646 # return nil; 31647 # } 31648 # Color* result = [Color alloc] init]; 31649 # [result setRed:red]; 31650 # [result setGreen:green]; 31651 # [result setBlue:blue]; 31652 # if (alpha <= 0.9999) { 31653 # [result setAlpha:floatWrapperWithValue(alpha)]; 31654 # } 31655 # [result autorelease]; 31656 # return result; 31657 # } 31658 # // ... 31659 # 31660 # Example (JavaScript): 31661 # 31662 # // ... 31663 # 31664 # var protoToCssColor = function(rgb_color) { 31665 # var redFrac = rgb_color.red || 0.0; 31666 # var greenFrac = rgb_color.green || 0.0; 31667 # var blueFrac = rgb_color.blue || 0.0; 31668 # var red = Math.floor(redFrac * 255); 31669 # var green = Math.floor(greenFrac * 255); 31670 # var blue = Math.floor(blueFrac * 255); 31671 # 31672 # if (!('alpha' in rgb_color)) { 31673 # return rgbToCssColor_(red, green, blue); 31674 # } 31675 # 31676 # var alphaFrac = rgb_color.alpha.value || 0.0; 31677 # var rgbParams = [red, green, blue].join(','); 31678 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 31679 # }; 31680 # 31681 # var rgbToCssColor_ = function(red, green, blue) { 31682 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 31683 # var hexString = rgbNumber.toString(16); 31684 # var missingZeros = 6 - hexString.length; 31685 # var resultBuilder = ['#']; 31686 # for (var i = 0; i < missingZeros; i++) { 31687 # resultBuilder.push('0'); 31688 # } 31689 # resultBuilder.push(hexString); 31690 # return resultBuilder.join(''); 31691 # }; 31692 # 31693 # // ... 31694 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 31695 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 31696 # the final pixel color is defined by the equation: 31697 # 31698 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 31699 # 31700 # This means that a value of 1.0 corresponds to a solid color, whereas 31701 # a value of 0.0 corresponds to a completely transparent color. This 31702 # uses a wrapper message rather than a simple float scalar so that it is 31703 # possible to distinguish between a default value and the value being unset. 31704 # If omitted, this color object is to be rendered as a solid color 31705 # (as if the alpha value had been explicitly given with a value of 1.0). 31706 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 31707 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 31708 }, 31709 "headerColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the first row or column. If this field is set, the first 31710 # row or column will be filled with this color and the colors will 31711 # alternate between first_band_color and second_band_color starting 31712 # from the second row or column. Otherwise, the first row or column will be 31713 # filled with first_band_color and the colors will proceed to alternate 31714 # as they normally would. 31715 # for simplicity of conversion to/from color representations in various 31716 # languages over compactness; for example, the fields of this representation 31717 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 31718 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 31719 # method in iOS; and, with just a little work, it can be easily formatted into 31720 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 31721 # 31722 # Example (Java): 31723 # 31724 # import com.google.type.Color; 31725 # 31726 # // ... 31727 # public static java.awt.Color fromProto(Color protocolor) { 31728 # float alpha = protocolor.hasAlpha() 31729 # ? protocolor.getAlpha().getValue() 31730 # : 1.0; 31731 # 31732 # return new java.awt.Color( 31733 # protocolor.getRed(), 31734 # protocolor.getGreen(), 31735 # protocolor.getBlue(), 31736 # alpha); 31737 # } 31738 # 31739 # public static Color toProto(java.awt.Color color) { 31740 # float red = (float) color.getRed(); 31741 # float green = (float) color.getGreen(); 31742 # float blue = (float) color.getBlue(); 31743 # float denominator = 255.0; 31744 # Color.Builder resultBuilder = 31745 # Color 31746 # .newBuilder() 31747 # .setRed(red / denominator) 31748 # .setGreen(green / denominator) 31749 # .setBlue(blue / denominator); 31750 # int alpha = color.getAlpha(); 31751 # if (alpha != 255) { 31752 # result.setAlpha( 31753 # FloatValue 31754 # .newBuilder() 31755 # .setValue(((float) alpha) / denominator) 31756 # .build()); 31757 # } 31758 # return resultBuilder.build(); 31759 # } 31760 # // ... 31761 # 31762 # Example (iOS / Obj-C): 31763 # 31764 # // ... 31765 # static UIColor* fromProto(Color* protocolor) { 31766 # float red = [protocolor red]; 31767 # float green = [protocolor green]; 31768 # float blue = [protocolor blue]; 31769 # FloatValue* alpha_wrapper = [protocolor alpha]; 31770 # float alpha = 1.0; 31771 # if (alpha_wrapper != nil) { 31772 # alpha = [alpha_wrapper value]; 31773 # } 31774 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 31775 # } 31776 # 31777 # static Color* toProto(UIColor* color) { 31778 # CGFloat red, green, blue, alpha; 31779 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 31780 # return nil; 31781 # } 31782 # Color* result = [Color alloc] init]; 31783 # [result setRed:red]; 31784 # [result setGreen:green]; 31785 # [result setBlue:blue]; 31786 # if (alpha <= 0.9999) { 31787 # [result setAlpha:floatWrapperWithValue(alpha)]; 31788 # } 31789 # [result autorelease]; 31790 # return result; 31791 # } 31792 # // ... 31793 # 31794 # Example (JavaScript): 31795 # 31796 # // ... 31797 # 31798 # var protoToCssColor = function(rgb_color) { 31799 # var redFrac = rgb_color.red || 0.0; 31800 # var greenFrac = rgb_color.green || 0.0; 31801 # var blueFrac = rgb_color.blue || 0.0; 31802 # var red = Math.floor(redFrac * 255); 31803 # var green = Math.floor(greenFrac * 255); 31804 # var blue = Math.floor(blueFrac * 255); 31805 # 31806 # if (!('alpha' in rgb_color)) { 31807 # return rgbToCssColor_(red, green, blue); 31808 # } 31809 # 31810 # var alphaFrac = rgb_color.alpha.value || 0.0; 31811 # var rgbParams = [red, green, blue].join(','); 31812 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 31813 # }; 31814 # 31815 # var rgbToCssColor_ = function(red, green, blue) { 31816 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 31817 # var hexString = rgbNumber.toString(16); 31818 # var missingZeros = 6 - hexString.length; 31819 # var resultBuilder = ['#']; 31820 # for (var i = 0; i < missingZeros; i++) { 31821 # resultBuilder.push('0'); 31822 # } 31823 # resultBuilder.push(hexString); 31824 # return resultBuilder.join(''); 31825 # }; 31826 # 31827 # // ... 31828 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 31829 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 31830 # the final pixel color is defined by the equation: 31831 # 31832 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 31833 # 31834 # This means that a value of 1.0 corresponds to a solid color, whereas 31835 # a value of 0.0 corresponds to a completely transparent color. This 31836 # uses a wrapper message rather than a simple float scalar so that it is 31837 # possible to distinguish between a default value and the value being unset. 31838 # If omitted, this color object is to be rendered as a solid color 31839 # (as if the alpha value had been explicitly given with a value of 1.0). 31840 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 31841 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 31842 }, 31843 "footerColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the last row or column. If this field is not set, the last 31844 # row or column will be filled with either first_band_color or 31845 # second_band_color, depending on the color of the previous row or 31846 # column. 31847 # for simplicity of conversion to/from color representations in various 31848 # languages over compactness; for example, the fields of this representation 31849 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 31850 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 31851 # method in iOS; and, with just a little work, it can be easily formatted into 31852 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 31853 # 31854 # Example (Java): 31855 # 31856 # import com.google.type.Color; 31857 # 31858 # // ... 31859 # public static java.awt.Color fromProto(Color protocolor) { 31860 # float alpha = protocolor.hasAlpha() 31861 # ? protocolor.getAlpha().getValue() 31862 # : 1.0; 31863 # 31864 # return new java.awt.Color( 31865 # protocolor.getRed(), 31866 # protocolor.getGreen(), 31867 # protocolor.getBlue(), 31868 # alpha); 31869 # } 31870 # 31871 # public static Color toProto(java.awt.Color color) { 31872 # float red = (float) color.getRed(); 31873 # float green = (float) color.getGreen(); 31874 # float blue = (float) color.getBlue(); 31875 # float denominator = 255.0; 31876 # Color.Builder resultBuilder = 31877 # Color 31878 # .newBuilder() 31879 # .setRed(red / denominator) 31880 # .setGreen(green / denominator) 31881 # .setBlue(blue / denominator); 31882 # int alpha = color.getAlpha(); 31883 # if (alpha != 255) { 31884 # result.setAlpha( 31885 # FloatValue 31886 # .newBuilder() 31887 # .setValue(((float) alpha) / denominator) 31888 # .build()); 31889 # } 31890 # return resultBuilder.build(); 31891 # } 31892 # // ... 31893 # 31894 # Example (iOS / Obj-C): 31895 # 31896 # // ... 31897 # static UIColor* fromProto(Color* protocolor) { 31898 # float red = [protocolor red]; 31899 # float green = [protocolor green]; 31900 # float blue = [protocolor blue]; 31901 # FloatValue* alpha_wrapper = [protocolor alpha]; 31902 # float alpha = 1.0; 31903 # if (alpha_wrapper != nil) { 31904 # alpha = [alpha_wrapper value]; 31905 # } 31906 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 31907 # } 31908 # 31909 # static Color* toProto(UIColor* color) { 31910 # CGFloat red, green, blue, alpha; 31911 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 31912 # return nil; 31913 # } 31914 # Color* result = [Color alloc] init]; 31915 # [result setRed:red]; 31916 # [result setGreen:green]; 31917 # [result setBlue:blue]; 31918 # if (alpha <= 0.9999) { 31919 # [result setAlpha:floatWrapperWithValue(alpha)]; 31920 # } 31921 # [result autorelease]; 31922 # return result; 31923 # } 31924 # // ... 31925 # 31926 # Example (JavaScript): 31927 # 31928 # // ... 31929 # 31930 # var protoToCssColor = function(rgb_color) { 31931 # var redFrac = rgb_color.red || 0.0; 31932 # var greenFrac = rgb_color.green || 0.0; 31933 # var blueFrac = rgb_color.blue || 0.0; 31934 # var red = Math.floor(redFrac * 255); 31935 # var green = Math.floor(greenFrac * 255); 31936 # var blue = Math.floor(blueFrac * 255); 31937 # 31938 # if (!('alpha' in rgb_color)) { 31939 # return rgbToCssColor_(red, green, blue); 31940 # } 31941 # 31942 # var alphaFrac = rgb_color.alpha.value || 0.0; 31943 # var rgbParams = [red, green, blue].join(','); 31944 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 31945 # }; 31946 # 31947 # var rgbToCssColor_ = function(red, green, blue) { 31948 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 31949 # var hexString = rgbNumber.toString(16); 31950 # var missingZeros = 6 - hexString.length; 31951 # var resultBuilder = ['#']; 31952 # for (var i = 0; i < missingZeros; i++) { 31953 # resultBuilder.push('0'); 31954 # } 31955 # resultBuilder.push(hexString); 31956 # return resultBuilder.join(''); 31957 # }; 31958 # 31959 # // ... 31960 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 31961 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 31962 # the final pixel color is defined by the equation: 31963 # 31964 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 31965 # 31966 # This means that a value of 1.0 corresponds to a solid color, whereas 31967 # a value of 0.0 corresponds to a completely transparent color. This 31968 # uses a wrapper message rather than a simple float scalar so that it is 31969 # possible to distinguish between a default value and the value being unset. 31970 # If omitted, this color object is to be rendered as a solid color 31971 # (as if the alpha value had been explicitly given with a value of 1.0). 31972 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 31973 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 31974 }, 31975 "firstBandColor": { # Represents a color in the RGBA color space. This representation is designed # The first color that is alternating. (Required) 31976 # for simplicity of conversion to/from color representations in various 31977 # languages over compactness; for example, the fields of this representation 31978 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 31979 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 31980 # method in iOS; and, with just a little work, it can be easily formatted into 31981 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 31982 # 31983 # Example (Java): 31984 # 31985 # import com.google.type.Color; 31986 # 31987 # // ... 31988 # public static java.awt.Color fromProto(Color protocolor) { 31989 # float alpha = protocolor.hasAlpha() 31990 # ? protocolor.getAlpha().getValue() 31991 # : 1.0; 31992 # 31993 # return new java.awt.Color( 31994 # protocolor.getRed(), 31995 # protocolor.getGreen(), 31996 # protocolor.getBlue(), 31997 # alpha); 31998 # } 31999 # 32000 # public static Color toProto(java.awt.Color color) { 32001 # float red = (float) color.getRed(); 32002 # float green = (float) color.getGreen(); 32003 # float blue = (float) color.getBlue(); 32004 # float denominator = 255.0; 32005 # Color.Builder resultBuilder = 32006 # Color 32007 # .newBuilder() 32008 # .setRed(red / denominator) 32009 # .setGreen(green / denominator) 32010 # .setBlue(blue / denominator); 32011 # int alpha = color.getAlpha(); 32012 # if (alpha != 255) { 32013 # result.setAlpha( 32014 # FloatValue 32015 # .newBuilder() 32016 # .setValue(((float) alpha) / denominator) 32017 # .build()); 32018 # } 32019 # return resultBuilder.build(); 32020 # } 32021 # // ... 32022 # 32023 # Example (iOS / Obj-C): 32024 # 32025 # // ... 32026 # static UIColor* fromProto(Color* protocolor) { 32027 # float red = [protocolor red]; 32028 # float green = [protocolor green]; 32029 # float blue = [protocolor blue]; 32030 # FloatValue* alpha_wrapper = [protocolor alpha]; 32031 # float alpha = 1.0; 32032 # if (alpha_wrapper != nil) { 32033 # alpha = [alpha_wrapper value]; 32034 # } 32035 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 32036 # } 32037 # 32038 # static Color* toProto(UIColor* color) { 32039 # CGFloat red, green, blue, alpha; 32040 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 32041 # return nil; 32042 # } 32043 # Color* result = [Color alloc] init]; 32044 # [result setRed:red]; 32045 # [result setGreen:green]; 32046 # [result setBlue:blue]; 32047 # if (alpha <= 0.9999) { 32048 # [result setAlpha:floatWrapperWithValue(alpha)]; 32049 # } 32050 # [result autorelease]; 32051 # return result; 32052 # } 32053 # // ... 32054 # 32055 # Example (JavaScript): 32056 # 32057 # // ... 32058 # 32059 # var protoToCssColor = function(rgb_color) { 32060 # var redFrac = rgb_color.red || 0.0; 32061 # var greenFrac = rgb_color.green || 0.0; 32062 # var blueFrac = rgb_color.blue || 0.0; 32063 # var red = Math.floor(redFrac * 255); 32064 # var green = Math.floor(greenFrac * 255); 32065 # var blue = Math.floor(blueFrac * 255); 32066 # 32067 # if (!('alpha' in rgb_color)) { 32068 # return rgbToCssColor_(red, green, blue); 32069 # } 32070 # 32071 # var alphaFrac = rgb_color.alpha.value || 0.0; 32072 # var rgbParams = [red, green, blue].join(','); 32073 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 32074 # }; 32075 # 32076 # var rgbToCssColor_ = function(red, green, blue) { 32077 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 32078 # var hexString = rgbNumber.toString(16); 32079 # var missingZeros = 6 - hexString.length; 32080 # var resultBuilder = ['#']; 32081 # for (var i = 0; i < missingZeros; i++) { 32082 # resultBuilder.push('0'); 32083 # } 32084 # resultBuilder.push(hexString); 32085 # return resultBuilder.join(''); 32086 # }; 32087 # 32088 # // ... 32089 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 32090 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 32091 # the final pixel color is defined by the equation: 32092 # 32093 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 32094 # 32095 # This means that a value of 1.0 corresponds to a solid color, whereas 32096 # a value of 0.0 corresponds to a completely transparent color. This 32097 # uses a wrapper message rather than a simple float scalar so that it is 32098 # possible to distinguish between a default value and the value being unset. 32099 # If omitted, this color object is to be rendered as a solid color 32100 # (as if the alpha value had been explicitly given with a value of 1.0). 32101 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 32102 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 32103 }, 32104 }, 32105 "bandedRangeId": 42, # The id of the banded range. 32106 }, 32107 ], 32108 "merges": [ # The ranges that are merged together. 32109 { # A range on a sheet. 32110 # All indexes are zero-based. 32111 # Indexes are half open, e.g the start index is inclusive 32112 # and the end index is exclusive -- [start_index, end_index). 32113 # Missing indexes indicate the range is unbounded on that side. 32114 # 32115 # For example, if `"Sheet1"` is sheet ID 0, then: 32116 # 32117 # `Sheet1!A1:A1 == sheet_id: 0, 32118 # start_row_index: 0, end_row_index: 1, 32119 # start_column_index: 0, end_column_index: 1` 32120 # 32121 # `Sheet1!A3:B4 == sheet_id: 0, 32122 # start_row_index: 2, end_row_index: 4, 32123 # start_column_index: 0, end_column_index: 2` 32124 # 32125 # `Sheet1!A:B == sheet_id: 0, 32126 # start_column_index: 0, end_column_index: 2` 32127 # 32128 # `Sheet1!A5:B == sheet_id: 0, 32129 # start_row_index: 4, 32130 # start_column_index: 0, end_column_index: 2` 32131 # 32132 # `Sheet1 == sheet_id:0` 32133 # 32134 # The start index must always be less than or equal to the end index. 32135 # If the start index equals the end index, then the range is empty. 32136 # Empty ranges are typically not meaningful and are usually rendered in the 32137 # UI as `#REF!`. 32138 "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded. 32139 "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded. 32140 "sheetId": 42, # The sheet this range is on. 32141 "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded. 32142 "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded. 32143 }, 32144 ], 32145 "basicFilter": { # The default filter associated with a sheet. # The filter on this sheet, if any. 32146 "range": { # A range on a sheet. # The range the filter covers. 32147 # All indexes are zero-based. 32148 # Indexes are half open, e.g the start index is inclusive 32149 # and the end index is exclusive -- [start_index, end_index). 32150 # Missing indexes indicate the range is unbounded on that side. 32151 # 32152 # For example, if `"Sheet1"` is sheet ID 0, then: 32153 # 32154 # `Sheet1!A1:A1 == sheet_id: 0, 32155 # start_row_index: 0, end_row_index: 1, 32156 # start_column_index: 0, end_column_index: 1` 32157 # 32158 # `Sheet1!A3:B4 == sheet_id: 0, 32159 # start_row_index: 2, end_row_index: 4, 32160 # start_column_index: 0, end_column_index: 2` 32161 # 32162 # `Sheet1!A:B == sheet_id: 0, 32163 # start_column_index: 0, end_column_index: 2` 32164 # 32165 # `Sheet1!A5:B == sheet_id: 0, 32166 # start_row_index: 4, 32167 # start_column_index: 0, end_column_index: 2` 32168 # 32169 # `Sheet1 == sheet_id:0` 32170 # 32171 # The start index must always be less than or equal to the end index. 32172 # If the start index equals the end index, then the range is empty. 32173 # Empty ranges are typically not meaningful and are usually rendered in the 32174 # UI as `#REF!`. 32175 "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded. 32176 "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded. 32177 "sheetId": 42, # The sheet this range is on. 32178 "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded. 32179 "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded. 32180 }, 32181 "sortSpecs": [ # The sort order per column. Later specifications are used when values 32182 # are equal in the earlier specifications. 32183 { # A sort order associated with a specific column or row. 32184 "sortOrder": "A String", # The order data should be sorted. 32185 "dimensionIndex": 42, # The dimension the sort should be applied to. 32186 }, 32187 ], 32188 "criteria": { # The criteria for showing/hiding values per column. 32189 # The map's key is the column index, and the value is the criteria for 32190 # that column. 32191 "a_key": { # Criteria for showing/hiding rows in a filter or filter view. 32192 "hiddenValues": [ # Values that should be hidden. 32193 "A String", 32194 ], 32195 "condition": { # A condition that can evaluate to true or false. # A condition that must be true for values to be shown. 32196 # (This does not override hiddenValues -- if a value is listed there, 32197 # it will still be hidden.) 32198 # BooleanConditions are used by conditional formatting, 32199 # data validation, and the criteria in filters. 32200 "values": [ # The values of the condition. The number of supported values depends 32201 # on the condition type. Some support zero values, 32202 # others one or two values, 32203 # and ConditionType.ONE_OF_LIST supports an arbitrary number of values. 32204 { # The value of the condition. 32205 "relativeDate": "A String", # A relative date (based on the current date). 32206 # Valid only if the type is 32207 # DATE_BEFORE, 32208 # DATE_AFTER, 32209 # DATE_ON_OR_BEFORE or 32210 # DATE_ON_OR_AFTER. 32211 # 32212 # Relative dates are not supported in data validation. 32213 # They are supported only in conditional formatting and 32214 # conditional filters. 32215 "userEnteredValue": "A String", # A value the condition is based on. 32216 # The value will be parsed as if the user typed into a cell. 32217 # Formulas are supported (and must begin with an `=`). 32218 }, 32219 ], 32220 "type": "A String", # The type of condition. 32221 }, 32222 }, 32223 }, 32224 }, 32225 "charts": [ # The specifications of every chart on this sheet. 32226 { # A chart embedded in a sheet. 32227 "chartId": 42, # The ID of the chart. 32228 "position": { # The position of an embedded object such as a chart. # The position of the chart. 32229 "newSheet": True or False, # If true, the embedded object will be put on a new sheet whose ID 32230 # is chosen for you. Used only when writing. 32231 "sheetId": 42, # The sheet this is on. Set only if the embedded object 32232 # is on its own sheet. Must be non-negative. 32233 "overlayPosition": { # The location an object is overlaid on top of a grid. # The position at which the object is overlaid on top of a grid. 32234 "anchorCell": { # A coordinate in a sheet. # The cell the object is anchored to. 32235 # All indexes are zero-based. 32236 "rowIndex": 42, # The row index of the coordinate. 32237 "columnIndex": 42, # The column index of the coordinate. 32238 "sheetId": 42, # The sheet this coordinate is on. 32239 }, 32240 "offsetYPixels": 42, # The vertical offset, in pixels, that the object is offset 32241 # from the anchor cell. 32242 "widthPixels": 42, # The width of the object, in pixels. Defaults to 600. 32243 "offsetXPixels": 42, # The horizontal offset, in pixels, that the object is offset 32244 # from the anchor cell. 32245 "heightPixels": 42, # The height of the object, in pixels. Defaults to 371. 32246 }, 32247 }, 32248 "spec": { # The specifications of a chart. # The specification of the chart. 32249 "hiddenDimensionStrategy": "A String", # Determines how the charts will use hidden rows or columns. 32250 "pieChart": { # A <a href="/chart/interactive/docs/gallery/piechart">pie chart</a>. # A pie chart specification. 32251 "series": { # The data included in a domain or series. # The data that covers the one and only series of the pie chart. 32252 "sourceRange": { # Source ranges for a chart. # The source ranges of the data. 32253 "sources": [ # The ranges of data for a series or domain. 32254 # Exactly one dimension must have a length of 1, 32255 # and all sources in the list must have the same dimension 32256 # with length 1. 32257 # The domain (if it exists) & all series must have the same number 32258 # of source ranges. If using more than one source range, then the source 32259 # range at a given offset must be contiguous across the domain and series. 32260 # 32261 # For example, these are valid configurations: 32262 # 32263 # domain sources: A1:A5 32264 # series1 sources: B1:B5 32265 # series2 sources: D6:D10 32266 # 32267 # domain sources: A1:A5, C10:C12 32268 # series1 sources: B1:B5, D10:D12 32269 # series2 sources: C1:C5, E10:E12 32270 { # A range on a sheet. 32271 # All indexes are zero-based. 32272 # Indexes are half open, e.g the start index is inclusive 32273 # and the end index is exclusive -- [start_index, end_index). 32274 # Missing indexes indicate the range is unbounded on that side. 32275 # 32276 # For example, if `"Sheet1"` is sheet ID 0, then: 32277 # 32278 # `Sheet1!A1:A1 == sheet_id: 0, 32279 # start_row_index: 0, end_row_index: 1, 32280 # start_column_index: 0, end_column_index: 1` 32281 # 32282 # `Sheet1!A3:B4 == sheet_id: 0, 32283 # start_row_index: 2, end_row_index: 4, 32284 # start_column_index: 0, end_column_index: 2` 32285 # 32286 # `Sheet1!A:B == sheet_id: 0, 32287 # start_column_index: 0, end_column_index: 2` 32288 # 32289 # `Sheet1!A5:B == sheet_id: 0, 32290 # start_row_index: 4, 32291 # start_column_index: 0, end_column_index: 2` 32292 # 32293 # `Sheet1 == sheet_id:0` 32294 # 32295 # The start index must always be less than or equal to the end index. 32296 # If the start index equals the end index, then the range is empty. 32297 # Empty ranges are typically not meaningful and are usually rendered in the 32298 # UI as `#REF!`. 32299 "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded. 32300 "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded. 32301 "sheetId": 42, # The sheet this range is on. 32302 "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded. 32303 "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded. 32304 }, 32305 ], 32306 }, 32307 }, 32308 "domain": { # The data included in a domain or series. # The data that covers the domain of the pie chart. 32309 "sourceRange": { # Source ranges for a chart. # The source ranges of the data. 32310 "sources": [ # The ranges of data for a series or domain. 32311 # Exactly one dimension must have a length of 1, 32312 # and all sources in the list must have the same dimension 32313 # with length 1. 32314 # The domain (if it exists) & all series must have the same number 32315 # of source ranges. If using more than one source range, then the source 32316 # range at a given offset must be contiguous across the domain and series. 32317 # 32318 # For example, these are valid configurations: 32319 # 32320 # domain sources: A1:A5 32321 # series1 sources: B1:B5 32322 # series2 sources: D6:D10 32323 # 32324 # domain sources: A1:A5, C10:C12 32325 # series1 sources: B1:B5, D10:D12 32326 # series2 sources: C1:C5, E10:E12 32327 { # A range on a sheet. 32328 # All indexes are zero-based. 32329 # Indexes are half open, e.g the start index is inclusive 32330 # and the end index is exclusive -- [start_index, end_index). 32331 # Missing indexes indicate the range is unbounded on that side. 32332 # 32333 # For example, if `"Sheet1"` is sheet ID 0, then: 32334 # 32335 # `Sheet1!A1:A1 == sheet_id: 0, 32336 # start_row_index: 0, end_row_index: 1, 32337 # start_column_index: 0, end_column_index: 1` 32338 # 32339 # `Sheet1!A3:B4 == sheet_id: 0, 32340 # start_row_index: 2, end_row_index: 4, 32341 # start_column_index: 0, end_column_index: 2` 32342 # 32343 # `Sheet1!A:B == sheet_id: 0, 32344 # start_column_index: 0, end_column_index: 2` 32345 # 32346 # `Sheet1!A5:B == sheet_id: 0, 32347 # start_row_index: 4, 32348 # start_column_index: 0, end_column_index: 2` 32349 # 32350 # `Sheet1 == sheet_id:0` 32351 # 32352 # The start index must always be less than or equal to the end index. 32353 # If the start index equals the end index, then the range is empty. 32354 # Empty ranges are typically not meaningful and are usually rendered in the 32355 # UI as `#REF!`. 32356 "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded. 32357 "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded. 32358 "sheetId": 42, # The sheet this range is on. 32359 "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded. 32360 "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded. 32361 }, 32362 ], 32363 }, 32364 }, 32365 "threeDimensional": True or False, # True if the pie is three dimensional. 32366 "legendPosition": "A String", # Where the legend of the pie chart should be drawn. 32367 "pieHole": 3.14, # The size of the hole in the pie chart. 32368 }, 32369 "basicChart": { # The specification for a basic chart. See BasicChartType for the list # A basic chart specification, can be one of many kinds of charts. 32370 # See BasicChartType for the list of all 32371 # charts this supports. 32372 # of charts this supports. 32373 "headerCount": 42, # The number of rows or columns in the data that are "headers". 32374 # If not set, Google Sheets will guess how many rows are headers based 32375 # on the data. 32376 # 32377 # (Note that BasicChartAxis.title may override the axis title 32378 # inferred from the header values.) 32379 "series": [ # The data this chart is visualizing. 32380 { # A single series of data in a chart. 32381 # For example, if charting stock prices over time, multiple series may exist, 32382 # one for the "Open Price", "High Price", "Low Price" and "Close Price". 32383 "series": { # The data included in a domain or series. # The data being visualized in this chart series. 32384 "sourceRange": { # Source ranges for a chart. # The source ranges of the data. 32385 "sources": [ # The ranges of data for a series or domain. 32386 # Exactly one dimension must have a length of 1, 32387 # and all sources in the list must have the same dimension 32388 # with length 1. 32389 # The domain (if it exists) & all series must have the same number 32390 # of source ranges. If using more than one source range, then the source 32391 # range at a given offset must be contiguous across the domain and series. 32392 # 32393 # For example, these are valid configurations: 32394 # 32395 # domain sources: A1:A5 32396 # series1 sources: B1:B5 32397 # series2 sources: D6:D10 32398 # 32399 # domain sources: A1:A5, C10:C12 32400 # series1 sources: B1:B5, D10:D12 32401 # series2 sources: C1:C5, E10:E12 32402 { # A range on a sheet. 32403 # All indexes are zero-based. 32404 # Indexes are half open, e.g the start index is inclusive 32405 # and the end index is exclusive -- [start_index, end_index). 32406 # Missing indexes indicate the range is unbounded on that side. 32407 # 32408 # For example, if `"Sheet1"` is sheet ID 0, then: 32409 # 32410 # `Sheet1!A1:A1 == sheet_id: 0, 32411 # start_row_index: 0, end_row_index: 1, 32412 # start_column_index: 0, end_column_index: 1` 32413 # 32414 # `Sheet1!A3:B4 == sheet_id: 0, 32415 # start_row_index: 2, end_row_index: 4, 32416 # start_column_index: 0, end_column_index: 2` 32417 # 32418 # `Sheet1!A:B == sheet_id: 0, 32419 # start_column_index: 0, end_column_index: 2` 32420 # 32421 # `Sheet1!A5:B == sheet_id: 0, 32422 # start_row_index: 4, 32423 # start_column_index: 0, end_column_index: 2` 32424 # 32425 # `Sheet1 == sheet_id:0` 32426 # 32427 # The start index must always be less than or equal to the end index. 32428 # If the start index equals the end index, then the range is empty. 32429 # Empty ranges are typically not meaningful and are usually rendered in the 32430 # UI as `#REF!`. 32431 "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded. 32432 "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded. 32433 "sheetId": 42, # The sheet this range is on. 32434 "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded. 32435 "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded. 32436 }, 32437 ], 32438 }, 32439 }, 32440 "targetAxis": "A String", # The minor axis that will specify the range of values for this series. 32441 # For example, if charting stocks over time, the "Volume" series 32442 # may want to be pinned to the right with the prices pinned to the left, 32443 # because the scale of trading volume is different than the scale of 32444 # prices. 32445 # It is an error to specify an axis that isn't a valid minor axis 32446 # for the chart's type. 32447 "type": "A String", # The type of this series. Valid only if the 32448 # chartType is 32449 # COMBO. 32450 # Different types will change the way the series is visualized. 32451 # Only LINE, AREA, 32452 # and COLUMN are supported. 32453 }, 32454 ], 32455 "legendPosition": "A String", # The position of the chart legend. 32456 "domains": [ # The domain of data this is charting. 32457 # Only a single domain is supported. 32458 { # The domain of a chart. 32459 # For example, if charting stock prices over time, this would be the date. 32460 "domain": { # The data included in a domain or series. # The data of the domain. For example, if charting stock prices over time, 32461 # this is the data representing the dates. 32462 "sourceRange": { # Source ranges for a chart. # The source ranges of the data. 32463 "sources": [ # The ranges of data for a series or domain. 32464 # Exactly one dimension must have a length of 1, 32465 # and all sources in the list must have the same dimension 32466 # with length 1. 32467 # The domain (if it exists) & all series must have the same number 32468 # of source ranges. If using more than one source range, then the source 32469 # range at a given offset must be contiguous across the domain and series. 32470 # 32471 # For example, these are valid configurations: 32472 # 32473 # domain sources: A1:A5 32474 # series1 sources: B1:B5 32475 # series2 sources: D6:D10 32476 # 32477 # domain sources: A1:A5, C10:C12 32478 # series1 sources: B1:B5, D10:D12 32479 # series2 sources: C1:C5, E10:E12 32480 { # A range on a sheet. 32481 # All indexes are zero-based. 32482 # Indexes are half open, e.g the start index is inclusive 32483 # and the end index is exclusive -- [start_index, end_index). 32484 # Missing indexes indicate the range is unbounded on that side. 32485 # 32486 # For example, if `"Sheet1"` is sheet ID 0, then: 32487 # 32488 # `Sheet1!A1:A1 == sheet_id: 0, 32489 # start_row_index: 0, end_row_index: 1, 32490 # start_column_index: 0, end_column_index: 1` 32491 # 32492 # `Sheet1!A3:B4 == sheet_id: 0, 32493 # start_row_index: 2, end_row_index: 4, 32494 # start_column_index: 0, end_column_index: 2` 32495 # 32496 # `Sheet1!A:B == sheet_id: 0, 32497 # start_column_index: 0, end_column_index: 2` 32498 # 32499 # `Sheet1!A5:B == sheet_id: 0, 32500 # start_row_index: 4, 32501 # start_column_index: 0, end_column_index: 2` 32502 # 32503 # `Sheet1 == sheet_id:0` 32504 # 32505 # The start index must always be less than or equal to the end index. 32506 # If the start index equals the end index, then the range is empty. 32507 # Empty ranges are typically not meaningful and are usually rendered in the 32508 # UI as `#REF!`. 32509 "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded. 32510 "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded. 32511 "sheetId": 42, # The sheet this range is on. 32512 "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded. 32513 "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded. 32514 }, 32515 ], 32516 }, 32517 }, 32518 }, 32519 ], 32520 "chartType": "A String", # The type of the chart. 32521 "axis": [ # The axis on the chart. 32522 { # An axis of the chart. 32523 # A chart may not have more than one axis per 32524 # axis position. 32525 "position": "A String", # The position of this axis. 32526 "format": { # The format of a run of text in a cell. # The format of the title. 32527 # Only valid if the axis is not associated with the domain. 32528 # Absent values indicate that the field isn't specified. 32529 "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text. 32530 # for simplicity of conversion to/from color representations in various 32531 # languages over compactness; for example, the fields of this representation 32532 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 32533 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 32534 # method in iOS; and, with just a little work, it can be easily formatted into 32535 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 32536 # 32537 # Example (Java): 32538 # 32539 # import com.google.type.Color; 32540 # 32541 # // ... 32542 # public static java.awt.Color fromProto(Color protocolor) { 32543 # float alpha = protocolor.hasAlpha() 32544 # ? protocolor.getAlpha().getValue() 32545 # : 1.0; 32546 # 32547 # return new java.awt.Color( 32548 # protocolor.getRed(), 32549 # protocolor.getGreen(), 32550 # protocolor.getBlue(), 32551 # alpha); 32552 # } 32553 # 32554 # public static Color toProto(java.awt.Color color) { 32555 # float red = (float) color.getRed(); 32556 # float green = (float) color.getGreen(); 32557 # float blue = (float) color.getBlue(); 32558 # float denominator = 255.0; 32559 # Color.Builder resultBuilder = 32560 # Color 32561 # .newBuilder() 32562 # .setRed(red / denominator) 32563 # .setGreen(green / denominator) 32564 # .setBlue(blue / denominator); 32565 # int alpha = color.getAlpha(); 32566 # if (alpha != 255) { 32567 # result.setAlpha( 32568 # FloatValue 32569 # .newBuilder() 32570 # .setValue(((float) alpha) / denominator) 32571 # .build()); 32572 # } 32573 # return resultBuilder.build(); 32574 # } 32575 # // ... 32576 # 32577 # Example (iOS / Obj-C): 32578 # 32579 # // ... 32580 # static UIColor* fromProto(Color* protocolor) { 32581 # float red = [protocolor red]; 32582 # float green = [protocolor green]; 32583 # float blue = [protocolor blue]; 32584 # FloatValue* alpha_wrapper = [protocolor alpha]; 32585 # float alpha = 1.0; 32586 # if (alpha_wrapper != nil) { 32587 # alpha = [alpha_wrapper value]; 32588 # } 32589 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 32590 # } 32591 # 32592 # static Color* toProto(UIColor* color) { 32593 # CGFloat red, green, blue, alpha; 32594 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 32595 # return nil; 32596 # } 32597 # Color* result = [Color alloc] init]; 32598 # [result setRed:red]; 32599 # [result setGreen:green]; 32600 # [result setBlue:blue]; 32601 # if (alpha <= 0.9999) { 32602 # [result setAlpha:floatWrapperWithValue(alpha)]; 32603 # } 32604 # [result autorelease]; 32605 # return result; 32606 # } 32607 # // ... 32608 # 32609 # Example (JavaScript): 32610 # 32611 # // ... 32612 # 32613 # var protoToCssColor = function(rgb_color) { 32614 # var redFrac = rgb_color.red || 0.0; 32615 # var greenFrac = rgb_color.green || 0.0; 32616 # var blueFrac = rgb_color.blue || 0.0; 32617 # var red = Math.floor(redFrac * 255); 32618 # var green = Math.floor(greenFrac * 255); 32619 # var blue = Math.floor(blueFrac * 255); 32620 # 32621 # if (!('alpha' in rgb_color)) { 32622 # return rgbToCssColor_(red, green, blue); 32623 # } 32624 # 32625 # var alphaFrac = rgb_color.alpha.value || 0.0; 32626 # var rgbParams = [red, green, blue].join(','); 32627 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 32628 # }; 32629 # 32630 # var rgbToCssColor_ = function(red, green, blue) { 32631 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 32632 # var hexString = rgbNumber.toString(16); 32633 # var missingZeros = 6 - hexString.length; 32634 # var resultBuilder = ['#']; 32635 # for (var i = 0; i < missingZeros; i++) { 32636 # resultBuilder.push('0'); 32637 # } 32638 # resultBuilder.push(hexString); 32639 # return resultBuilder.join(''); 32640 # }; 32641 # 32642 # // ... 32643 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 32644 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 32645 # the final pixel color is defined by the equation: 32646 # 32647 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 32648 # 32649 # This means that a value of 1.0 corresponds to a solid color, whereas 32650 # a value of 0.0 corresponds to a completely transparent color. This 32651 # uses a wrapper message rather than a simple float scalar so that it is 32652 # possible to distinguish between a default value and the value being unset. 32653 # If omitted, this color object is to be rendered as a solid color 32654 # (as if the alpha value had been explicitly given with a value of 1.0). 32655 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 32656 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 32657 }, 32658 "bold": True or False, # True if the text is bold. 32659 "strikethrough": True or False, # True if the text has a strikethrough. 32660 "fontFamily": "A String", # The font family. 32661 "fontSize": 42, # The size of the font. 32662 "italic": True or False, # True if the text is italicized. 32663 "underline": True or False, # True if the text is underlined. 32664 }, 32665 "title": "A String", # The title of this axis. If set, this overrides any title inferred 32666 # from headers of the data. 32667 }, 32668 ], 32669 }, 32670 "title": "A String", # The title of the chart. 32671 }, 32672 }, 32673 ], 32674 "filterViews": [ # The filter views in this sheet. 32675 { # A filter view. 32676 "title": "A String", # The name of the filter view. 32677 "namedRangeId": "A String", # The named range this filter view is backed by, if any. 32678 # 32679 # When writing, only one of range or named_range_id 32680 # may be set. 32681 "filterViewId": 42, # The ID of the filter view. 32682 "range": { # A range on a sheet. # The range this filter view covers. 32683 # 32684 # When writing, only one of range or named_range_id 32685 # may be set. 32686 # All indexes are zero-based. 32687 # Indexes are half open, e.g the start index is inclusive 32688 # and the end index is exclusive -- [start_index, end_index). 32689 # Missing indexes indicate the range is unbounded on that side. 32690 # 32691 # For example, if `"Sheet1"` is sheet ID 0, then: 32692 # 32693 # `Sheet1!A1:A1 == sheet_id: 0, 32694 # start_row_index: 0, end_row_index: 1, 32695 # start_column_index: 0, end_column_index: 1` 32696 # 32697 # `Sheet1!A3:B4 == sheet_id: 0, 32698 # start_row_index: 2, end_row_index: 4, 32699 # start_column_index: 0, end_column_index: 2` 32700 # 32701 # `Sheet1!A:B == sheet_id: 0, 32702 # start_column_index: 0, end_column_index: 2` 32703 # 32704 # `Sheet1!A5:B == sheet_id: 0, 32705 # start_row_index: 4, 32706 # start_column_index: 0, end_column_index: 2` 32707 # 32708 # `Sheet1 == sheet_id:0` 32709 # 32710 # The start index must always be less than or equal to the end index. 32711 # If the start index equals the end index, then the range is empty. 32712 # Empty ranges are typically not meaningful and are usually rendered in the 32713 # UI as `#REF!`. 32714 "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded. 32715 "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded. 32716 "sheetId": 42, # The sheet this range is on. 32717 "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded. 32718 "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded. 32719 }, 32720 "sortSpecs": [ # The sort order per column. Later specifications are used when values 32721 # are equal in the earlier specifications. 32722 { # A sort order associated with a specific column or row. 32723 "sortOrder": "A String", # The order data should be sorted. 32724 "dimensionIndex": 42, # The dimension the sort should be applied to. 32725 }, 32726 ], 32727 "criteria": { # The criteria for showing/hiding values per column. 32728 # The map's key is the column index, and the value is the criteria for 32729 # that column. 32730 "a_key": { # Criteria for showing/hiding rows in a filter or filter view. 32731 "hiddenValues": [ # Values that should be hidden. 32732 "A String", 32733 ], 32734 "condition": { # A condition that can evaluate to true or false. # A condition that must be true for values to be shown. 32735 # (This does not override hiddenValues -- if a value is listed there, 32736 # it will still be hidden.) 32737 # BooleanConditions are used by conditional formatting, 32738 # data validation, and the criteria in filters. 32739 "values": [ # The values of the condition. The number of supported values depends 32740 # on the condition type. Some support zero values, 32741 # others one or two values, 32742 # and ConditionType.ONE_OF_LIST supports an arbitrary number of values. 32743 { # The value of the condition. 32744 "relativeDate": "A String", # A relative date (based on the current date). 32745 # Valid only if the type is 32746 # DATE_BEFORE, 32747 # DATE_AFTER, 32748 # DATE_ON_OR_BEFORE or 32749 # DATE_ON_OR_AFTER. 32750 # 32751 # Relative dates are not supported in data validation. 32752 # They are supported only in conditional formatting and 32753 # conditional filters. 32754 "userEnteredValue": "A String", # A value the condition is based on. 32755 # The value will be parsed as if the user typed into a cell. 32756 # Formulas are supported (and must begin with an `=`). 32757 }, 32758 ], 32759 "type": "A String", # The type of condition. 32760 }, 32761 }, 32762 }, 32763 }, 32764 ], 32765 "protectedRanges": [ # The protected ranges in this sheet. 32766 { # A protected range. 32767 "unprotectedRanges": [ # The list of unprotected ranges within a protected sheet. 32768 # Unprotected ranges are only supported on protected sheets. 32769 { # A range on a sheet. 32770 # All indexes are zero-based. 32771 # Indexes are half open, e.g the start index is inclusive 32772 # and the end index is exclusive -- [start_index, end_index). 32773 # Missing indexes indicate the range is unbounded on that side. 32774 # 32775 # For example, if `"Sheet1"` is sheet ID 0, then: 32776 # 32777 # `Sheet1!A1:A1 == sheet_id: 0, 32778 # start_row_index: 0, end_row_index: 1, 32779 # start_column_index: 0, end_column_index: 1` 32780 # 32781 # `Sheet1!A3:B4 == sheet_id: 0, 32782 # start_row_index: 2, end_row_index: 4, 32783 # start_column_index: 0, end_column_index: 2` 32784 # 32785 # `Sheet1!A:B == sheet_id: 0, 32786 # start_column_index: 0, end_column_index: 2` 32787 # 32788 # `Sheet1!A5:B == sheet_id: 0, 32789 # start_row_index: 4, 32790 # start_column_index: 0, end_column_index: 2` 32791 # 32792 # `Sheet1 == sheet_id:0` 32793 # 32794 # The start index must always be less than or equal to the end index. 32795 # If the start index equals the end index, then the range is empty. 32796 # Empty ranges are typically not meaningful and are usually rendered in the 32797 # UI as `#REF!`. 32798 "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded. 32799 "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded. 32800 "sheetId": 42, # The sheet this range is on. 32801 "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded. 32802 "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded. 32803 }, 32804 ], 32805 "requestingUserCanEdit": True or False, # True if the user who requested this protected range can edit the 32806 # protected area. 32807 # This field is read-only. 32808 "description": "A String", # The description of this protected range. 32809 "namedRangeId": "A String", # The named range this protected range is backed by, if any. 32810 # 32811 # When writing, only one of range or named_range_id 32812 # may be set. 32813 "editors": { # The editors of a protected range. # The users and groups with edit access to the protected range. 32814 # This field is only visible to users with edit access to the protected 32815 # range and the document. 32816 # Editors are not supported with warning_only protection. 32817 "domainUsersCanEdit": True or False, # True if anyone in the document's domain has edit access to the protected 32818 # range. Domain protection is only supported on documents within a domain. 32819 "users": [ # The email addresses of users with edit access to the protected range. 32820 "A String", 32821 ], 32822 "groups": [ # The email addresses of groups with edit access to the protected range. 32823 "A String", 32824 ], 32825 }, 32826 "protectedRangeId": 42, # The ID of the protected range. 32827 # This field is read-only. 32828 "warningOnly": True or False, # True if this protected range will show a warning when editing. 32829 # Warning-based protection means that every user can edit data in the 32830 # protected range, except editing will prompt a warning asking the user 32831 # to confirm the edit. 32832 # 32833 # When writing: if this field is true, then editors is ignored. 32834 # Additionally, if this field is changed from true to false and the 32835 # `editors` field is not set (nor included in the field mask), then 32836 # the editors will be set to all the editors in the document. 32837 "range": { # A range on a sheet. # The range that is being protected. 32838 # The range may be fully unbounded, in which case this is considered 32839 # a protected sheet. 32840 # 32841 # When writing, only one of range or named_range_id 32842 # may be set. 32843 # All indexes are zero-based. 32844 # Indexes are half open, e.g the start index is inclusive 32845 # and the end index is exclusive -- [start_index, end_index). 32846 # Missing indexes indicate the range is unbounded on that side. 32847 # 32848 # For example, if `"Sheet1"` is sheet ID 0, then: 32849 # 32850 # `Sheet1!A1:A1 == sheet_id: 0, 32851 # start_row_index: 0, end_row_index: 1, 32852 # start_column_index: 0, end_column_index: 1` 32853 # 32854 # `Sheet1!A3:B4 == sheet_id: 0, 32855 # start_row_index: 2, end_row_index: 4, 32856 # start_column_index: 0, end_column_index: 2` 32857 # 32858 # `Sheet1!A:B == sheet_id: 0, 32859 # start_column_index: 0, end_column_index: 2` 32860 # 32861 # `Sheet1!A5:B == sheet_id: 0, 32862 # start_row_index: 4, 32863 # start_column_index: 0, end_column_index: 2` 32864 # 32865 # `Sheet1 == sheet_id:0` 32866 # 32867 # The start index must always be less than or equal to the end index. 32868 # If the start index equals the end index, then the range is empty. 32869 # Empty ranges are typically not meaningful and are usually rendered in the 32870 # UI as `#REF!`. 32871 "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded. 32872 "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded. 32873 "sheetId": 42, # The sheet this range is on. 32874 "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded. 32875 "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded. 32876 }, 32877 }, 32878 ], 32879 "data": [ # Data in the grid, if this is a grid sheet. 32880 # The number of GridData objects returned is dependent on the number of 32881 # ranges requested on this sheet. For example, if this is representing 32882 # `Sheet1`, and the spreadsheet was requested with ranges 32883 # `Sheet1!A1:C10` and `Sheet1!D15:E20`, then the first GridData will have a 32884 # startRow/startColumn of `0`, 32885 # while the second one will have `startRow 14` (zero-based row 15), 32886 # and `startColumn 3` (zero-based column D). 32887 { # Data in the grid, as well as metadata about the dimensions. 32888 "rowMetadata": [ # Metadata about the requested rows in the grid, starting with the row 32889 # in start_row. 32890 { # Properties about a dimension. 32891 "pixelSize": 42, # The height (if a row) or width (if a column) of the dimension in pixels. 32892 "hiddenByUser": True or False, # True if this dimension is explicitly hidden. 32893 "hiddenByFilter": True or False, # True if this dimension is being filtered. 32894 # This field is read-only. 32895 }, 32896 ], 32897 "startColumn": 42, # The first column this GridData refers to, zero-based. 32898 "rowData": [ # The data in the grid, one entry per row, 32899 # starting with the row in startRow. 32900 # The values in RowData will correspond to columns starting 32901 # at start_column. 32902 { # Data about each cell in a row. 32903 "values": [ # The values in the row, one per column. 32904 { # Data about a specific cell. 32905 "pivotTable": { # A pivot table. # A pivot table anchored at this cell. The size of pivot table itself 32906 # is computed dynamically based on its data, grouping, filters, values, 32907 # etc. Only the top-left cell of the pivot table contains the pivot table 32908 # definition. The other cells will contain the calculated values of the 32909 # results of the pivot in their effective_value fields. 32910 "valueLayout": "A String", # Whether values should be listed horizontally (as columns) 32911 # or vertically (as rows). 32912 "rows": [ # Each row grouping in the pivot table. 32913 { # A single grouping (either row or column) in a pivot table. 32914 "showTotals": True or False, # True if the pivot table should include the totals for this grouping. 32915 "valueMetadata": [ # Metadata about values in the grouping. 32916 { # Metadata about a value in a pivot grouping. 32917 "collapsed": True or False, # True if the data corresponding to the value is collapsed. 32918 "value": { # The kinds of value that a cell in a spreadsheet can have. # The calculated value the metadata corresponds to. 32919 # (Note that formulaValue is not valid, 32920 # because the values will be calculated.) 32921 "stringValue": "A String", # Represents a string value. 32922 # Leading single quotes are not included. For example, if the user typed 32923 # `'123` into the UI, this would be represented as a `stringValue` of 32924 # `"123"`. 32925 "boolValue": True or False, # Represents a boolean value. 32926 "errorValue": { # An error in a cell. # Represents an error. 32927 # This field is read-only. 32928 "message": "A String", # A message with more information about the error 32929 # (in the spreadsheet's locale). 32930 "type": "A String", # The type of error. 32931 }, 32932 "formulaValue": "A String", # Represents a formula. 32933 "numberValue": 3.14, # Represents a double value. 32934 # Note: Dates, Times and DateTimes are represented as doubles in 32935 # "serial number" format. 32936 }, 32937 }, 32938 ], 32939 "valueBucket": { # Information about which values in a pivot group should be used for sorting. # The bucket of the opposite pivot group to sort by. 32940 # If not specified, sorting is alphabetical by this group's values. 32941 "buckets": [ # Determines the bucket from which values are chosen to sort. 32942 # 32943 # For example, in a pivot table with one row group & two column groups, 32944 # the row group can list up to two values. The first value corresponds 32945 # to a value within the first column group, and the second value 32946 # corresponds to a value in the second column group. If no values 32947 # are listed, this would indicate that the row should be sorted according 32948 # to the "Grand Total" over the column groups. If a single value is listed, 32949 # this would correspond to using the "Total" of that bucket. 32950 { # The kinds of value that a cell in a spreadsheet can have. 32951 "stringValue": "A String", # Represents a string value. 32952 # Leading single quotes are not included. For example, if the user typed 32953 # `'123` into the UI, this would be represented as a `stringValue` of 32954 # `"123"`. 32955 "boolValue": True or False, # Represents a boolean value. 32956 "errorValue": { # An error in a cell. # Represents an error. 32957 # This field is read-only. 32958 "message": "A String", # A message with more information about the error 32959 # (in the spreadsheet's locale). 32960 "type": "A String", # The type of error. 32961 }, 32962 "formulaValue": "A String", # Represents a formula. 32963 "numberValue": 3.14, # Represents a double value. 32964 # Note: Dates, Times and DateTimes are represented as doubles in 32965 # "serial number" format. 32966 }, 32967 ], 32968 "valuesIndex": 42, # The offset in the PivotTable.values list which the values in this 32969 # grouping should be sorted by. 32970 }, 32971 "sortOrder": "A String", # The order the values in this group should be sorted. 32972 "sourceColumnOffset": 42, # The column offset of the source range that this grouping is based on. 32973 # 32974 # For example, if the source was `C10:E15`, a `sourceColumnOffset` of `0` 32975 # means this group refers to column `C`, whereas the offset `1` would refer 32976 # to column `D`. 32977 }, 32978 ], 32979 "source": { # A range on a sheet. # The range the pivot table is reading data from. 32980 # All indexes are zero-based. 32981 # Indexes are half open, e.g the start index is inclusive 32982 # and the end index is exclusive -- [start_index, end_index). 32983 # Missing indexes indicate the range is unbounded on that side. 32984 # 32985 # For example, if `"Sheet1"` is sheet ID 0, then: 32986 # 32987 # `Sheet1!A1:A1 == sheet_id: 0, 32988 # start_row_index: 0, end_row_index: 1, 32989 # start_column_index: 0, end_column_index: 1` 32990 # 32991 # `Sheet1!A3:B4 == sheet_id: 0, 32992 # start_row_index: 2, end_row_index: 4, 32993 # start_column_index: 0, end_column_index: 2` 32994 # 32995 # `Sheet1!A:B == sheet_id: 0, 32996 # start_column_index: 0, end_column_index: 2` 32997 # 32998 # `Sheet1!A5:B == sheet_id: 0, 32999 # start_row_index: 4, 33000 # start_column_index: 0, end_column_index: 2` 33001 # 33002 # `Sheet1 == sheet_id:0` 33003 # 33004 # The start index must always be less than or equal to the end index. 33005 # If the start index equals the end index, then the range is empty. 33006 # Empty ranges are typically not meaningful and are usually rendered in the 33007 # UI as `#REF!`. 33008 "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded. 33009 "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded. 33010 "sheetId": 42, # The sheet this range is on. 33011 "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded. 33012 "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded. 33013 }, 33014 "values": [ # A list of values to include in the pivot table. 33015 { # The definition of how a value in a pivot table should be calculated. 33016 "formula": "A String", # A custom formula to calculate the value. The formula must start 33017 # with an `=` character. 33018 "sourceColumnOffset": 42, # The column offset of the source range that this value reads from. 33019 # 33020 # For example, if the source was `C10:E15`, a `sourceColumnOffset` of `0` 33021 # means this value refers to column `C`, whereas the offset `1` would 33022 # refer to column `D`. 33023 "summarizeFunction": "A String", # A function to summarize the value. 33024 # If formula is set, the only supported values are 33025 # SUM and 33026 # CUSTOM. 33027 # If sourceColumnOffset is set, then `CUSTOM` 33028 # is not supported. 33029 "name": "A String", # A name to use for the value. This is only used if formula was set. 33030 # Otherwise, the column name is used. 33031 }, 33032 ], 33033 "criteria": { # An optional mapping of filters per source column offset. 33034 # 33035 # The filters will be applied before aggregating data into the pivot table. 33036 # The map's key is the column offset of the source range that you want to 33037 # filter, and the value is the criteria for that column. 33038 # 33039 # For example, if the source was `C10:E15`, a key of `0` will have the filter 33040 # for column `C`, whereas the key `1` is for column `D`. 33041 "a_key": { # Criteria for showing/hiding rows in a pivot table. 33042 "visibleValues": [ # Values that should be included. Values not listed here are excluded. 33043 "A String", 33044 ], 33045 }, 33046 }, 33047 "columns": [ # Each column grouping in the pivot table. 33048 { # A single grouping (either row or column) in a pivot table. 33049 "showTotals": True or False, # True if the pivot table should include the totals for this grouping. 33050 "valueMetadata": [ # Metadata about values in the grouping. 33051 { # Metadata about a value in a pivot grouping. 33052 "collapsed": True or False, # True if the data corresponding to the value is collapsed. 33053 "value": { # The kinds of value that a cell in a spreadsheet can have. # The calculated value the metadata corresponds to. 33054 # (Note that formulaValue is not valid, 33055 # because the values will be calculated.) 33056 "stringValue": "A String", # Represents a string value. 33057 # Leading single quotes are not included. For example, if the user typed 33058 # `'123` into the UI, this would be represented as a `stringValue` of 33059 # `"123"`. 33060 "boolValue": True or False, # Represents a boolean value. 33061 "errorValue": { # An error in a cell. # Represents an error. 33062 # This field is read-only. 33063 "message": "A String", # A message with more information about the error 33064 # (in the spreadsheet's locale). 33065 "type": "A String", # The type of error. 33066 }, 33067 "formulaValue": "A String", # Represents a formula. 33068 "numberValue": 3.14, # Represents a double value. 33069 # Note: Dates, Times and DateTimes are represented as doubles in 33070 # "serial number" format. 33071 }, 33072 }, 33073 ], 33074 "valueBucket": { # Information about which values in a pivot group should be used for sorting. # The bucket of the opposite pivot group to sort by. 33075 # If not specified, sorting is alphabetical by this group's values. 33076 "buckets": [ # Determines the bucket from which values are chosen to sort. 33077 # 33078 # For example, in a pivot table with one row group & two column groups, 33079 # the row group can list up to two values. The first value corresponds 33080 # to a value within the first column group, and the second value 33081 # corresponds to a value in the second column group. If no values 33082 # are listed, this would indicate that the row should be sorted according 33083 # to the "Grand Total" over the column groups. If a single value is listed, 33084 # this would correspond to using the "Total" of that bucket. 33085 { # The kinds of value that a cell in a spreadsheet can have. 33086 "stringValue": "A String", # Represents a string value. 33087 # Leading single quotes are not included. For example, if the user typed 33088 # `'123` into the UI, this would be represented as a `stringValue` of 33089 # `"123"`. 33090 "boolValue": True or False, # Represents a boolean value. 33091 "errorValue": { # An error in a cell. # Represents an error. 33092 # This field is read-only. 33093 "message": "A String", # A message with more information about the error 33094 # (in the spreadsheet's locale). 33095 "type": "A String", # The type of error. 33096 }, 33097 "formulaValue": "A String", # Represents a formula. 33098 "numberValue": 3.14, # Represents a double value. 33099 # Note: Dates, Times and DateTimes are represented as doubles in 33100 # "serial number" format. 33101 }, 33102 ], 33103 "valuesIndex": 42, # The offset in the PivotTable.values list which the values in this 33104 # grouping should be sorted by. 33105 }, 33106 "sortOrder": "A String", # The order the values in this group should be sorted. 33107 "sourceColumnOffset": 42, # The column offset of the source range that this grouping is based on. 33108 # 33109 # For example, if the source was `C10:E15`, a `sourceColumnOffset` of `0` 33110 # means this group refers to column `C`, whereas the offset `1` would refer 33111 # to column `D`. 33112 }, 33113 ], 33114 }, 33115 "hyperlink": "A String", # A hyperlink this cell points to, if any. 33116 # This field is read-only. (To set it, use a `=HYPERLINK` formula 33117 # in the userEnteredValue.formulaValue 33118 # field.) 33119 "effectiveValue": { # The kinds of value that a cell in a spreadsheet can have. # The effective value of the cell. For cells with formulas, this will be 33120 # the calculated value. For cells with literals, this will be 33121 # the same as the user_entered_value. 33122 # This field is read-only. 33123 "stringValue": "A String", # Represents a string value. 33124 # Leading single quotes are not included. For example, if the user typed 33125 # `'123` into the UI, this would be represented as a `stringValue` of 33126 # `"123"`. 33127 "boolValue": True or False, # Represents a boolean value. 33128 "errorValue": { # An error in a cell. # Represents an error. 33129 # This field is read-only. 33130 "message": "A String", # A message with more information about the error 33131 # (in the spreadsheet's locale). 33132 "type": "A String", # The type of error. 33133 }, 33134 "formulaValue": "A String", # Represents a formula. 33135 "numberValue": 3.14, # Represents a double value. 33136 # Note: Dates, Times and DateTimes are represented as doubles in 33137 # "serial number" format. 33138 }, 33139 "formattedValue": "A String", # The formatted value of the cell. 33140 # This is the value as it's shown to the user. 33141 # This field is read-only. 33142 "userEnteredValue": { # The kinds of value that a cell in a spreadsheet can have. # The value the user entered in the cell. e.g, `1234`, `'Hello'`, or `=NOW()` 33143 # Note: Dates, Times and DateTimes are represented as doubles in 33144 # serial number format. 33145 "stringValue": "A String", # Represents a string value. 33146 # Leading single quotes are not included. For example, if the user typed 33147 # `'123` into the UI, this would be represented as a `stringValue` of 33148 # `"123"`. 33149 "boolValue": True or False, # Represents a boolean value. 33150 "errorValue": { # An error in a cell. # Represents an error. 33151 # This field is read-only. 33152 "message": "A String", # A message with more information about the error 33153 # (in the spreadsheet's locale). 33154 "type": "A String", # The type of error. 33155 }, 33156 "formulaValue": "A String", # Represents a formula. 33157 "numberValue": 3.14, # Represents a double value. 33158 # Note: Dates, Times and DateTimes are represented as doubles in 33159 # "serial number" format. 33160 }, 33161 "note": "A String", # Any note on the cell. 33162 "effectiveFormat": { # The format of a cell. # The effective format being used by the cell. 33163 # This includes the results of applying any conditional formatting and, 33164 # if the cell contains a formula, the computed number format. 33165 # If the effective format is the default format, effective format will 33166 # not be written. 33167 # This field is read-only. 33168 "numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user. 33169 "pattern": "A String", # Pattern string used for formatting. If not set, a default pattern based on 33170 # the user's locale will be used if necessary for the given type. 33171 # See the [Date and Number Formats guide](/sheets/api/guides/formats) for more 33172 # information about the supported patterns. 33173 "type": "A String", # The type of the number format. 33174 # When writing, this field must be set. 33175 }, 33176 "textDirection": "A String", # The direction of the text in the cell. 33177 "padding": { # The amount of padding around the cell, in pixels. # The padding of the cell. 33178 # When updating padding, every field must be specified. 33179 "top": 42, # The top padding of the cell. 33180 "right": 42, # The right padding of the cell. 33181 "bottom": 42, # The bottom padding of the cell. 33182 "left": 42, # The left padding of the cell. 33183 }, 33184 "verticalAlignment": "A String", # The vertical alignment of the value in the cell. 33185 "backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell. 33186 # for simplicity of conversion to/from color representations in various 33187 # languages over compactness; for example, the fields of this representation 33188 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 33189 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 33190 # method in iOS; and, with just a little work, it can be easily formatted into 33191 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 33192 # 33193 # Example (Java): 33194 # 33195 # import com.google.type.Color; 33196 # 33197 # // ... 33198 # public static java.awt.Color fromProto(Color protocolor) { 33199 # float alpha = protocolor.hasAlpha() 33200 # ? protocolor.getAlpha().getValue() 33201 # : 1.0; 33202 # 33203 # return new java.awt.Color( 33204 # protocolor.getRed(), 33205 # protocolor.getGreen(), 33206 # protocolor.getBlue(), 33207 # alpha); 33208 # } 33209 # 33210 # public static Color toProto(java.awt.Color color) { 33211 # float red = (float) color.getRed(); 33212 # float green = (float) color.getGreen(); 33213 # float blue = (float) color.getBlue(); 33214 # float denominator = 255.0; 33215 # Color.Builder resultBuilder = 33216 # Color 33217 # .newBuilder() 33218 # .setRed(red / denominator) 33219 # .setGreen(green / denominator) 33220 # .setBlue(blue / denominator); 33221 # int alpha = color.getAlpha(); 33222 # if (alpha != 255) { 33223 # result.setAlpha( 33224 # FloatValue 33225 # .newBuilder() 33226 # .setValue(((float) alpha) / denominator) 33227 # .build()); 33228 # } 33229 # return resultBuilder.build(); 33230 # } 33231 # // ... 33232 # 33233 # Example (iOS / Obj-C): 33234 # 33235 # // ... 33236 # static UIColor* fromProto(Color* protocolor) { 33237 # float red = [protocolor red]; 33238 # float green = [protocolor green]; 33239 # float blue = [protocolor blue]; 33240 # FloatValue* alpha_wrapper = [protocolor alpha]; 33241 # float alpha = 1.0; 33242 # if (alpha_wrapper != nil) { 33243 # alpha = [alpha_wrapper value]; 33244 # } 33245 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 33246 # } 33247 # 33248 # static Color* toProto(UIColor* color) { 33249 # CGFloat red, green, blue, alpha; 33250 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 33251 # return nil; 33252 # } 33253 # Color* result = [Color alloc] init]; 33254 # [result setRed:red]; 33255 # [result setGreen:green]; 33256 # [result setBlue:blue]; 33257 # if (alpha <= 0.9999) { 33258 # [result setAlpha:floatWrapperWithValue(alpha)]; 33259 # } 33260 # [result autorelease]; 33261 # return result; 33262 # } 33263 # // ... 33264 # 33265 # Example (JavaScript): 33266 # 33267 # // ... 33268 # 33269 # var protoToCssColor = function(rgb_color) { 33270 # var redFrac = rgb_color.red || 0.0; 33271 # var greenFrac = rgb_color.green || 0.0; 33272 # var blueFrac = rgb_color.blue || 0.0; 33273 # var red = Math.floor(redFrac * 255); 33274 # var green = Math.floor(greenFrac * 255); 33275 # var blue = Math.floor(blueFrac * 255); 33276 # 33277 # if (!('alpha' in rgb_color)) { 33278 # return rgbToCssColor_(red, green, blue); 33279 # } 33280 # 33281 # var alphaFrac = rgb_color.alpha.value || 0.0; 33282 # var rgbParams = [red, green, blue].join(','); 33283 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 33284 # }; 33285 # 33286 # var rgbToCssColor_ = function(red, green, blue) { 33287 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 33288 # var hexString = rgbNumber.toString(16); 33289 # var missingZeros = 6 - hexString.length; 33290 # var resultBuilder = ['#']; 33291 # for (var i = 0; i < missingZeros; i++) { 33292 # resultBuilder.push('0'); 33293 # } 33294 # resultBuilder.push(hexString); 33295 # return resultBuilder.join(''); 33296 # }; 33297 # 33298 # // ... 33299 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 33300 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 33301 # the final pixel color is defined by the equation: 33302 # 33303 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 33304 # 33305 # This means that a value of 1.0 corresponds to a solid color, whereas 33306 # a value of 0.0 corresponds to a completely transparent color. This 33307 # uses a wrapper message rather than a simple float scalar so that it is 33308 # possible to distinguish between a default value and the value being unset. 33309 # If omitted, this color object is to be rendered as a solid color 33310 # (as if the alpha value had been explicitly given with a value of 1.0). 33311 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 33312 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 33313 }, 33314 "horizontalAlignment": "A String", # The horizontal alignment of the value in the cell. 33315 "textFormat": { # The format of a run of text in a cell. # The format of the text in the cell (unless overridden by a format run). 33316 # Absent values indicate that the field isn't specified. 33317 "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text. 33318 # for simplicity of conversion to/from color representations in various 33319 # languages over compactness; for example, the fields of this representation 33320 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 33321 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 33322 # method in iOS; and, with just a little work, it can be easily formatted into 33323 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 33324 # 33325 # Example (Java): 33326 # 33327 # import com.google.type.Color; 33328 # 33329 # // ... 33330 # public static java.awt.Color fromProto(Color protocolor) { 33331 # float alpha = protocolor.hasAlpha() 33332 # ? protocolor.getAlpha().getValue() 33333 # : 1.0; 33334 # 33335 # return new java.awt.Color( 33336 # protocolor.getRed(), 33337 # protocolor.getGreen(), 33338 # protocolor.getBlue(), 33339 # alpha); 33340 # } 33341 # 33342 # public static Color toProto(java.awt.Color color) { 33343 # float red = (float) color.getRed(); 33344 # float green = (float) color.getGreen(); 33345 # float blue = (float) color.getBlue(); 33346 # float denominator = 255.0; 33347 # Color.Builder resultBuilder = 33348 # Color 33349 # .newBuilder() 33350 # .setRed(red / denominator) 33351 # .setGreen(green / denominator) 33352 # .setBlue(blue / denominator); 33353 # int alpha = color.getAlpha(); 33354 # if (alpha != 255) { 33355 # result.setAlpha( 33356 # FloatValue 33357 # .newBuilder() 33358 # .setValue(((float) alpha) / denominator) 33359 # .build()); 33360 # } 33361 # return resultBuilder.build(); 33362 # } 33363 # // ... 33364 # 33365 # Example (iOS / Obj-C): 33366 # 33367 # // ... 33368 # static UIColor* fromProto(Color* protocolor) { 33369 # float red = [protocolor red]; 33370 # float green = [protocolor green]; 33371 # float blue = [protocolor blue]; 33372 # FloatValue* alpha_wrapper = [protocolor alpha]; 33373 # float alpha = 1.0; 33374 # if (alpha_wrapper != nil) { 33375 # alpha = [alpha_wrapper value]; 33376 # } 33377 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 33378 # } 33379 # 33380 # static Color* toProto(UIColor* color) { 33381 # CGFloat red, green, blue, alpha; 33382 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 33383 # return nil; 33384 # } 33385 # Color* result = [Color alloc] init]; 33386 # [result setRed:red]; 33387 # [result setGreen:green]; 33388 # [result setBlue:blue]; 33389 # if (alpha <= 0.9999) { 33390 # [result setAlpha:floatWrapperWithValue(alpha)]; 33391 # } 33392 # [result autorelease]; 33393 # return result; 33394 # } 33395 # // ... 33396 # 33397 # Example (JavaScript): 33398 # 33399 # // ... 33400 # 33401 # var protoToCssColor = function(rgb_color) { 33402 # var redFrac = rgb_color.red || 0.0; 33403 # var greenFrac = rgb_color.green || 0.0; 33404 # var blueFrac = rgb_color.blue || 0.0; 33405 # var red = Math.floor(redFrac * 255); 33406 # var green = Math.floor(greenFrac * 255); 33407 # var blue = Math.floor(blueFrac * 255); 33408 # 33409 # if (!('alpha' in rgb_color)) { 33410 # return rgbToCssColor_(red, green, blue); 33411 # } 33412 # 33413 # var alphaFrac = rgb_color.alpha.value || 0.0; 33414 # var rgbParams = [red, green, blue].join(','); 33415 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 33416 # }; 33417 # 33418 # var rgbToCssColor_ = function(red, green, blue) { 33419 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 33420 # var hexString = rgbNumber.toString(16); 33421 # var missingZeros = 6 - hexString.length; 33422 # var resultBuilder = ['#']; 33423 # for (var i = 0; i < missingZeros; i++) { 33424 # resultBuilder.push('0'); 33425 # } 33426 # resultBuilder.push(hexString); 33427 # return resultBuilder.join(''); 33428 # }; 33429 # 33430 # // ... 33431 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 33432 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 33433 # the final pixel color is defined by the equation: 33434 # 33435 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 33436 # 33437 # This means that a value of 1.0 corresponds to a solid color, whereas 33438 # a value of 0.0 corresponds to a completely transparent color. This 33439 # uses a wrapper message rather than a simple float scalar so that it is 33440 # possible to distinguish between a default value and the value being unset. 33441 # If omitted, this color object is to be rendered as a solid color 33442 # (as if the alpha value had been explicitly given with a value of 1.0). 33443 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 33444 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 33445 }, 33446 "bold": True or False, # True if the text is bold. 33447 "strikethrough": True or False, # True if the text has a strikethrough. 33448 "fontFamily": "A String", # The font family. 33449 "fontSize": 42, # The size of the font. 33450 "italic": True or False, # True if the text is italicized. 33451 "underline": True or False, # True if the text is underlined. 33452 }, 33453 "textRotation": { # The rotation applied to text in a cell. # The rotation applied to text in a cell 33454 "angle": 42, # The angle between the standard orientation and the desired orientation. 33455 # Measured in degrees. Valid values are between -90 and 90. Positive 33456 # angles are angled upwards, negative are angled downwards. 33457 # 33458 # Note: For LTR text direction positive angles are in the counterclockwise 33459 # direction, whereas for RTL they are in the clockwise direction 33460 "vertical": True or False, # If true, text reads top to bottom, but the orientation of individual 33461 # characters is unchanged. 33462 # For example: 33463 # 33464 # | V | 33465 # | e | 33466 # | r | 33467 # | t | 33468 # | i | 33469 # | c | 33470 # | a | 33471 # | l | 33472 }, 33473 "hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell. 33474 "borders": { # The borders of the cell. # The borders of the cell. 33475 "top": { # A border along a cell. # The top border of the cell. 33476 "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border. 33477 # for simplicity of conversion to/from color representations in various 33478 # languages over compactness; for example, the fields of this representation 33479 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 33480 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 33481 # method in iOS; and, with just a little work, it can be easily formatted into 33482 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 33483 # 33484 # Example (Java): 33485 # 33486 # import com.google.type.Color; 33487 # 33488 # // ... 33489 # public static java.awt.Color fromProto(Color protocolor) { 33490 # float alpha = protocolor.hasAlpha() 33491 # ? protocolor.getAlpha().getValue() 33492 # : 1.0; 33493 # 33494 # return new java.awt.Color( 33495 # protocolor.getRed(), 33496 # protocolor.getGreen(), 33497 # protocolor.getBlue(), 33498 # alpha); 33499 # } 33500 # 33501 # public static Color toProto(java.awt.Color color) { 33502 # float red = (float) color.getRed(); 33503 # float green = (float) color.getGreen(); 33504 # float blue = (float) color.getBlue(); 33505 # float denominator = 255.0; 33506 # Color.Builder resultBuilder = 33507 # Color 33508 # .newBuilder() 33509 # .setRed(red / denominator) 33510 # .setGreen(green / denominator) 33511 # .setBlue(blue / denominator); 33512 # int alpha = color.getAlpha(); 33513 # if (alpha != 255) { 33514 # result.setAlpha( 33515 # FloatValue 33516 # .newBuilder() 33517 # .setValue(((float) alpha) / denominator) 33518 # .build()); 33519 # } 33520 # return resultBuilder.build(); 33521 # } 33522 # // ... 33523 # 33524 # Example (iOS / Obj-C): 33525 # 33526 # // ... 33527 # static UIColor* fromProto(Color* protocolor) { 33528 # float red = [protocolor red]; 33529 # float green = [protocolor green]; 33530 # float blue = [protocolor blue]; 33531 # FloatValue* alpha_wrapper = [protocolor alpha]; 33532 # float alpha = 1.0; 33533 # if (alpha_wrapper != nil) { 33534 # alpha = [alpha_wrapper value]; 33535 # } 33536 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 33537 # } 33538 # 33539 # static Color* toProto(UIColor* color) { 33540 # CGFloat red, green, blue, alpha; 33541 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 33542 # return nil; 33543 # } 33544 # Color* result = [Color alloc] init]; 33545 # [result setRed:red]; 33546 # [result setGreen:green]; 33547 # [result setBlue:blue]; 33548 # if (alpha <= 0.9999) { 33549 # [result setAlpha:floatWrapperWithValue(alpha)]; 33550 # } 33551 # [result autorelease]; 33552 # return result; 33553 # } 33554 # // ... 33555 # 33556 # Example (JavaScript): 33557 # 33558 # // ... 33559 # 33560 # var protoToCssColor = function(rgb_color) { 33561 # var redFrac = rgb_color.red || 0.0; 33562 # var greenFrac = rgb_color.green || 0.0; 33563 # var blueFrac = rgb_color.blue || 0.0; 33564 # var red = Math.floor(redFrac * 255); 33565 # var green = Math.floor(greenFrac * 255); 33566 # var blue = Math.floor(blueFrac * 255); 33567 # 33568 # if (!('alpha' in rgb_color)) { 33569 # return rgbToCssColor_(red, green, blue); 33570 # } 33571 # 33572 # var alphaFrac = rgb_color.alpha.value || 0.0; 33573 # var rgbParams = [red, green, blue].join(','); 33574 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 33575 # }; 33576 # 33577 # var rgbToCssColor_ = function(red, green, blue) { 33578 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 33579 # var hexString = rgbNumber.toString(16); 33580 # var missingZeros = 6 - hexString.length; 33581 # var resultBuilder = ['#']; 33582 # for (var i = 0; i < missingZeros; i++) { 33583 # resultBuilder.push('0'); 33584 # } 33585 # resultBuilder.push(hexString); 33586 # return resultBuilder.join(''); 33587 # }; 33588 # 33589 # // ... 33590 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 33591 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 33592 # the final pixel color is defined by the equation: 33593 # 33594 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 33595 # 33596 # This means that a value of 1.0 corresponds to a solid color, whereas 33597 # a value of 0.0 corresponds to a completely transparent color. This 33598 # uses a wrapper message rather than a simple float scalar so that it is 33599 # possible to distinguish between a default value and the value being unset. 33600 # If omitted, this color object is to be rendered as a solid color 33601 # (as if the alpha value had been explicitly given with a value of 1.0). 33602 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 33603 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 33604 }, 33605 "width": 42, # The width of the border, in pixels. 33606 # Deprecated; the width is determined by the "style" field. 33607 "style": "A String", # The style of the border. 33608 }, 33609 "right": { # A border along a cell. # The right border of the cell. 33610 "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border. 33611 # for simplicity of conversion to/from color representations in various 33612 # languages over compactness; for example, the fields of this representation 33613 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 33614 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 33615 # method in iOS; and, with just a little work, it can be easily formatted into 33616 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 33617 # 33618 # Example (Java): 33619 # 33620 # import com.google.type.Color; 33621 # 33622 # // ... 33623 # public static java.awt.Color fromProto(Color protocolor) { 33624 # float alpha = protocolor.hasAlpha() 33625 # ? protocolor.getAlpha().getValue() 33626 # : 1.0; 33627 # 33628 # return new java.awt.Color( 33629 # protocolor.getRed(), 33630 # protocolor.getGreen(), 33631 # protocolor.getBlue(), 33632 # alpha); 33633 # } 33634 # 33635 # public static Color toProto(java.awt.Color color) { 33636 # float red = (float) color.getRed(); 33637 # float green = (float) color.getGreen(); 33638 # float blue = (float) color.getBlue(); 33639 # float denominator = 255.0; 33640 # Color.Builder resultBuilder = 33641 # Color 33642 # .newBuilder() 33643 # .setRed(red / denominator) 33644 # .setGreen(green / denominator) 33645 # .setBlue(blue / denominator); 33646 # int alpha = color.getAlpha(); 33647 # if (alpha != 255) { 33648 # result.setAlpha( 33649 # FloatValue 33650 # .newBuilder() 33651 # .setValue(((float) alpha) / denominator) 33652 # .build()); 33653 # } 33654 # return resultBuilder.build(); 33655 # } 33656 # // ... 33657 # 33658 # Example (iOS / Obj-C): 33659 # 33660 # // ... 33661 # static UIColor* fromProto(Color* protocolor) { 33662 # float red = [protocolor red]; 33663 # float green = [protocolor green]; 33664 # float blue = [protocolor blue]; 33665 # FloatValue* alpha_wrapper = [protocolor alpha]; 33666 # float alpha = 1.0; 33667 # if (alpha_wrapper != nil) { 33668 # alpha = [alpha_wrapper value]; 33669 # } 33670 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 33671 # } 33672 # 33673 # static Color* toProto(UIColor* color) { 33674 # CGFloat red, green, blue, alpha; 33675 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 33676 # return nil; 33677 # } 33678 # Color* result = [Color alloc] init]; 33679 # [result setRed:red]; 33680 # [result setGreen:green]; 33681 # [result setBlue:blue]; 33682 # if (alpha <= 0.9999) { 33683 # [result setAlpha:floatWrapperWithValue(alpha)]; 33684 # } 33685 # [result autorelease]; 33686 # return result; 33687 # } 33688 # // ... 33689 # 33690 # Example (JavaScript): 33691 # 33692 # // ... 33693 # 33694 # var protoToCssColor = function(rgb_color) { 33695 # var redFrac = rgb_color.red || 0.0; 33696 # var greenFrac = rgb_color.green || 0.0; 33697 # var blueFrac = rgb_color.blue || 0.0; 33698 # var red = Math.floor(redFrac * 255); 33699 # var green = Math.floor(greenFrac * 255); 33700 # var blue = Math.floor(blueFrac * 255); 33701 # 33702 # if (!('alpha' in rgb_color)) { 33703 # return rgbToCssColor_(red, green, blue); 33704 # } 33705 # 33706 # var alphaFrac = rgb_color.alpha.value || 0.0; 33707 # var rgbParams = [red, green, blue].join(','); 33708 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 33709 # }; 33710 # 33711 # var rgbToCssColor_ = function(red, green, blue) { 33712 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 33713 # var hexString = rgbNumber.toString(16); 33714 # var missingZeros = 6 - hexString.length; 33715 # var resultBuilder = ['#']; 33716 # for (var i = 0; i < missingZeros; i++) { 33717 # resultBuilder.push('0'); 33718 # } 33719 # resultBuilder.push(hexString); 33720 # return resultBuilder.join(''); 33721 # }; 33722 # 33723 # // ... 33724 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 33725 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 33726 # the final pixel color is defined by the equation: 33727 # 33728 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 33729 # 33730 # This means that a value of 1.0 corresponds to a solid color, whereas 33731 # a value of 0.0 corresponds to a completely transparent color. This 33732 # uses a wrapper message rather than a simple float scalar so that it is 33733 # possible to distinguish between a default value and the value being unset. 33734 # If omitted, this color object is to be rendered as a solid color 33735 # (as if the alpha value had been explicitly given with a value of 1.0). 33736 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 33737 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 33738 }, 33739 "width": 42, # The width of the border, in pixels. 33740 # Deprecated; the width is determined by the "style" field. 33741 "style": "A String", # The style of the border. 33742 }, 33743 "bottom": { # A border along a cell. # The bottom border of the cell. 33744 "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border. 33745 # for simplicity of conversion to/from color representations in various 33746 # languages over compactness; for example, the fields of this representation 33747 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 33748 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 33749 # method in iOS; and, with just a little work, it can be easily formatted into 33750 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 33751 # 33752 # Example (Java): 33753 # 33754 # import com.google.type.Color; 33755 # 33756 # // ... 33757 # public static java.awt.Color fromProto(Color protocolor) { 33758 # float alpha = protocolor.hasAlpha() 33759 # ? protocolor.getAlpha().getValue() 33760 # : 1.0; 33761 # 33762 # return new java.awt.Color( 33763 # protocolor.getRed(), 33764 # protocolor.getGreen(), 33765 # protocolor.getBlue(), 33766 # alpha); 33767 # } 33768 # 33769 # public static Color toProto(java.awt.Color color) { 33770 # float red = (float) color.getRed(); 33771 # float green = (float) color.getGreen(); 33772 # float blue = (float) color.getBlue(); 33773 # float denominator = 255.0; 33774 # Color.Builder resultBuilder = 33775 # Color 33776 # .newBuilder() 33777 # .setRed(red / denominator) 33778 # .setGreen(green / denominator) 33779 # .setBlue(blue / denominator); 33780 # int alpha = color.getAlpha(); 33781 # if (alpha != 255) { 33782 # result.setAlpha( 33783 # FloatValue 33784 # .newBuilder() 33785 # .setValue(((float) alpha) / denominator) 33786 # .build()); 33787 # } 33788 # return resultBuilder.build(); 33789 # } 33790 # // ... 33791 # 33792 # Example (iOS / Obj-C): 33793 # 33794 # // ... 33795 # static UIColor* fromProto(Color* protocolor) { 33796 # float red = [protocolor red]; 33797 # float green = [protocolor green]; 33798 # float blue = [protocolor blue]; 33799 # FloatValue* alpha_wrapper = [protocolor alpha]; 33800 # float alpha = 1.0; 33801 # if (alpha_wrapper != nil) { 33802 # alpha = [alpha_wrapper value]; 33803 # } 33804 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 33805 # } 33806 # 33807 # static Color* toProto(UIColor* color) { 33808 # CGFloat red, green, blue, alpha; 33809 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 33810 # return nil; 33811 # } 33812 # Color* result = [Color alloc] init]; 33813 # [result setRed:red]; 33814 # [result setGreen:green]; 33815 # [result setBlue:blue]; 33816 # if (alpha <= 0.9999) { 33817 # [result setAlpha:floatWrapperWithValue(alpha)]; 33818 # } 33819 # [result autorelease]; 33820 # return result; 33821 # } 33822 # // ... 33823 # 33824 # Example (JavaScript): 33825 # 33826 # // ... 33827 # 33828 # var protoToCssColor = function(rgb_color) { 33829 # var redFrac = rgb_color.red || 0.0; 33830 # var greenFrac = rgb_color.green || 0.0; 33831 # var blueFrac = rgb_color.blue || 0.0; 33832 # var red = Math.floor(redFrac * 255); 33833 # var green = Math.floor(greenFrac * 255); 33834 # var blue = Math.floor(blueFrac * 255); 33835 # 33836 # if (!('alpha' in rgb_color)) { 33837 # return rgbToCssColor_(red, green, blue); 33838 # } 33839 # 33840 # var alphaFrac = rgb_color.alpha.value || 0.0; 33841 # var rgbParams = [red, green, blue].join(','); 33842 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 33843 # }; 33844 # 33845 # var rgbToCssColor_ = function(red, green, blue) { 33846 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 33847 # var hexString = rgbNumber.toString(16); 33848 # var missingZeros = 6 - hexString.length; 33849 # var resultBuilder = ['#']; 33850 # for (var i = 0; i < missingZeros; i++) { 33851 # resultBuilder.push('0'); 33852 # } 33853 # resultBuilder.push(hexString); 33854 # return resultBuilder.join(''); 33855 # }; 33856 # 33857 # // ... 33858 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 33859 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 33860 # the final pixel color is defined by the equation: 33861 # 33862 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 33863 # 33864 # This means that a value of 1.0 corresponds to a solid color, whereas 33865 # a value of 0.0 corresponds to a completely transparent color. This 33866 # uses a wrapper message rather than a simple float scalar so that it is 33867 # possible to distinguish between a default value and the value being unset. 33868 # If omitted, this color object is to be rendered as a solid color 33869 # (as if the alpha value had been explicitly given with a value of 1.0). 33870 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 33871 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 33872 }, 33873 "width": 42, # The width of the border, in pixels. 33874 # Deprecated; the width is determined by the "style" field. 33875 "style": "A String", # The style of the border. 33876 }, 33877 "left": { # A border along a cell. # The left border of the cell. 33878 "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border. 33879 # for simplicity of conversion to/from color representations in various 33880 # languages over compactness; for example, the fields of this representation 33881 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 33882 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 33883 # method in iOS; and, with just a little work, it can be easily formatted into 33884 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 33885 # 33886 # Example (Java): 33887 # 33888 # import com.google.type.Color; 33889 # 33890 # // ... 33891 # public static java.awt.Color fromProto(Color protocolor) { 33892 # float alpha = protocolor.hasAlpha() 33893 # ? protocolor.getAlpha().getValue() 33894 # : 1.0; 33895 # 33896 # return new java.awt.Color( 33897 # protocolor.getRed(), 33898 # protocolor.getGreen(), 33899 # protocolor.getBlue(), 33900 # alpha); 33901 # } 33902 # 33903 # public static Color toProto(java.awt.Color color) { 33904 # float red = (float) color.getRed(); 33905 # float green = (float) color.getGreen(); 33906 # float blue = (float) color.getBlue(); 33907 # float denominator = 255.0; 33908 # Color.Builder resultBuilder = 33909 # Color 33910 # .newBuilder() 33911 # .setRed(red / denominator) 33912 # .setGreen(green / denominator) 33913 # .setBlue(blue / denominator); 33914 # int alpha = color.getAlpha(); 33915 # if (alpha != 255) { 33916 # result.setAlpha( 33917 # FloatValue 33918 # .newBuilder() 33919 # .setValue(((float) alpha) / denominator) 33920 # .build()); 33921 # } 33922 # return resultBuilder.build(); 33923 # } 33924 # // ... 33925 # 33926 # Example (iOS / Obj-C): 33927 # 33928 # // ... 33929 # static UIColor* fromProto(Color* protocolor) { 33930 # float red = [protocolor red]; 33931 # float green = [protocolor green]; 33932 # float blue = [protocolor blue]; 33933 # FloatValue* alpha_wrapper = [protocolor alpha]; 33934 # float alpha = 1.0; 33935 # if (alpha_wrapper != nil) { 33936 # alpha = [alpha_wrapper value]; 33937 # } 33938 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 33939 # } 33940 # 33941 # static Color* toProto(UIColor* color) { 33942 # CGFloat red, green, blue, alpha; 33943 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 33944 # return nil; 33945 # } 33946 # Color* result = [Color alloc] init]; 33947 # [result setRed:red]; 33948 # [result setGreen:green]; 33949 # [result setBlue:blue]; 33950 # if (alpha <= 0.9999) { 33951 # [result setAlpha:floatWrapperWithValue(alpha)]; 33952 # } 33953 # [result autorelease]; 33954 # return result; 33955 # } 33956 # // ... 33957 # 33958 # Example (JavaScript): 33959 # 33960 # // ... 33961 # 33962 # var protoToCssColor = function(rgb_color) { 33963 # var redFrac = rgb_color.red || 0.0; 33964 # var greenFrac = rgb_color.green || 0.0; 33965 # var blueFrac = rgb_color.blue || 0.0; 33966 # var red = Math.floor(redFrac * 255); 33967 # var green = Math.floor(greenFrac * 255); 33968 # var blue = Math.floor(blueFrac * 255); 33969 # 33970 # if (!('alpha' in rgb_color)) { 33971 # return rgbToCssColor_(red, green, blue); 33972 # } 33973 # 33974 # var alphaFrac = rgb_color.alpha.value || 0.0; 33975 # var rgbParams = [red, green, blue].join(','); 33976 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 33977 # }; 33978 # 33979 # var rgbToCssColor_ = function(red, green, blue) { 33980 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 33981 # var hexString = rgbNumber.toString(16); 33982 # var missingZeros = 6 - hexString.length; 33983 # var resultBuilder = ['#']; 33984 # for (var i = 0; i < missingZeros; i++) { 33985 # resultBuilder.push('0'); 33986 # } 33987 # resultBuilder.push(hexString); 33988 # return resultBuilder.join(''); 33989 # }; 33990 # 33991 # // ... 33992 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 33993 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 33994 # the final pixel color is defined by the equation: 33995 # 33996 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 33997 # 33998 # This means that a value of 1.0 corresponds to a solid color, whereas 33999 # a value of 0.0 corresponds to a completely transparent color. This 34000 # uses a wrapper message rather than a simple float scalar so that it is 34001 # possible to distinguish between a default value and the value being unset. 34002 # If omitted, this color object is to be rendered as a solid color 34003 # (as if the alpha value had been explicitly given with a value of 1.0). 34004 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 34005 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 34006 }, 34007 "width": 42, # The width of the border, in pixels. 34008 # Deprecated; the width is determined by the "style" field. 34009 "style": "A String", # The style of the border. 34010 }, 34011 }, 34012 "wrapStrategy": "A String", # The wrap strategy for the value in the cell. 34013 }, 34014 "userEnteredFormat": { # The format of a cell. # The format the user entered for the cell. 34015 # 34016 # When writing, the new format will be merged with the existing format. 34017 "numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user. 34018 "pattern": "A String", # Pattern string used for formatting. If not set, a default pattern based on 34019 # the user's locale will be used if necessary for the given type. 34020 # See the [Date and Number Formats guide](/sheets/api/guides/formats) for more 34021 # information about the supported patterns. 34022 "type": "A String", # The type of the number format. 34023 # When writing, this field must be set. 34024 }, 34025 "textDirection": "A String", # The direction of the text in the cell. 34026 "padding": { # The amount of padding around the cell, in pixels. # The padding of the cell. 34027 # When updating padding, every field must be specified. 34028 "top": 42, # The top padding of the cell. 34029 "right": 42, # The right padding of the cell. 34030 "bottom": 42, # The bottom padding of the cell. 34031 "left": 42, # The left padding of the cell. 34032 }, 34033 "verticalAlignment": "A String", # The vertical alignment of the value in the cell. 34034 "backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell. 34035 # for simplicity of conversion to/from color representations in various 34036 # languages over compactness; for example, the fields of this representation 34037 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 34038 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 34039 # method in iOS; and, with just a little work, it can be easily formatted into 34040 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 34041 # 34042 # Example (Java): 34043 # 34044 # import com.google.type.Color; 34045 # 34046 # // ... 34047 # public static java.awt.Color fromProto(Color protocolor) { 34048 # float alpha = protocolor.hasAlpha() 34049 # ? protocolor.getAlpha().getValue() 34050 # : 1.0; 34051 # 34052 # return new java.awt.Color( 34053 # protocolor.getRed(), 34054 # protocolor.getGreen(), 34055 # protocolor.getBlue(), 34056 # alpha); 34057 # } 34058 # 34059 # public static Color toProto(java.awt.Color color) { 34060 # float red = (float) color.getRed(); 34061 # float green = (float) color.getGreen(); 34062 # float blue = (float) color.getBlue(); 34063 # float denominator = 255.0; 34064 # Color.Builder resultBuilder = 34065 # Color 34066 # .newBuilder() 34067 # .setRed(red / denominator) 34068 # .setGreen(green / denominator) 34069 # .setBlue(blue / denominator); 34070 # int alpha = color.getAlpha(); 34071 # if (alpha != 255) { 34072 # result.setAlpha( 34073 # FloatValue 34074 # .newBuilder() 34075 # .setValue(((float) alpha) / denominator) 34076 # .build()); 34077 # } 34078 # return resultBuilder.build(); 34079 # } 34080 # // ... 34081 # 34082 # Example (iOS / Obj-C): 34083 # 34084 # // ... 34085 # static UIColor* fromProto(Color* protocolor) { 34086 # float red = [protocolor red]; 34087 # float green = [protocolor green]; 34088 # float blue = [protocolor blue]; 34089 # FloatValue* alpha_wrapper = [protocolor alpha]; 34090 # float alpha = 1.0; 34091 # if (alpha_wrapper != nil) { 34092 # alpha = [alpha_wrapper value]; 34093 # } 34094 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 34095 # } 34096 # 34097 # static Color* toProto(UIColor* color) { 34098 # CGFloat red, green, blue, alpha; 34099 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 34100 # return nil; 34101 # } 34102 # Color* result = [Color alloc] init]; 34103 # [result setRed:red]; 34104 # [result setGreen:green]; 34105 # [result setBlue:blue]; 34106 # if (alpha <= 0.9999) { 34107 # [result setAlpha:floatWrapperWithValue(alpha)]; 34108 # } 34109 # [result autorelease]; 34110 # return result; 34111 # } 34112 # // ... 34113 # 34114 # Example (JavaScript): 34115 # 34116 # // ... 34117 # 34118 # var protoToCssColor = function(rgb_color) { 34119 # var redFrac = rgb_color.red || 0.0; 34120 # var greenFrac = rgb_color.green || 0.0; 34121 # var blueFrac = rgb_color.blue || 0.0; 34122 # var red = Math.floor(redFrac * 255); 34123 # var green = Math.floor(greenFrac * 255); 34124 # var blue = Math.floor(blueFrac * 255); 34125 # 34126 # if (!('alpha' in rgb_color)) { 34127 # return rgbToCssColor_(red, green, blue); 34128 # } 34129 # 34130 # var alphaFrac = rgb_color.alpha.value || 0.0; 34131 # var rgbParams = [red, green, blue].join(','); 34132 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 34133 # }; 34134 # 34135 # var rgbToCssColor_ = function(red, green, blue) { 34136 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 34137 # var hexString = rgbNumber.toString(16); 34138 # var missingZeros = 6 - hexString.length; 34139 # var resultBuilder = ['#']; 34140 # for (var i = 0; i < missingZeros; i++) { 34141 # resultBuilder.push('0'); 34142 # } 34143 # resultBuilder.push(hexString); 34144 # return resultBuilder.join(''); 34145 # }; 34146 # 34147 # // ... 34148 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 34149 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 34150 # the final pixel color is defined by the equation: 34151 # 34152 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 34153 # 34154 # This means that a value of 1.0 corresponds to a solid color, whereas 34155 # a value of 0.0 corresponds to a completely transparent color. This 34156 # uses a wrapper message rather than a simple float scalar so that it is 34157 # possible to distinguish between a default value and the value being unset. 34158 # If omitted, this color object is to be rendered as a solid color 34159 # (as if the alpha value had been explicitly given with a value of 1.0). 34160 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 34161 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 34162 }, 34163 "horizontalAlignment": "A String", # The horizontal alignment of the value in the cell. 34164 "textFormat": { # The format of a run of text in a cell. # The format of the text in the cell (unless overridden by a format run). 34165 # Absent values indicate that the field isn't specified. 34166 "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text. 34167 # for simplicity of conversion to/from color representations in various 34168 # languages over compactness; for example, the fields of this representation 34169 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 34170 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 34171 # method in iOS; and, with just a little work, it can be easily formatted into 34172 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 34173 # 34174 # Example (Java): 34175 # 34176 # import com.google.type.Color; 34177 # 34178 # // ... 34179 # public static java.awt.Color fromProto(Color protocolor) { 34180 # float alpha = protocolor.hasAlpha() 34181 # ? protocolor.getAlpha().getValue() 34182 # : 1.0; 34183 # 34184 # return new java.awt.Color( 34185 # protocolor.getRed(), 34186 # protocolor.getGreen(), 34187 # protocolor.getBlue(), 34188 # alpha); 34189 # } 34190 # 34191 # public static Color toProto(java.awt.Color color) { 34192 # float red = (float) color.getRed(); 34193 # float green = (float) color.getGreen(); 34194 # float blue = (float) color.getBlue(); 34195 # float denominator = 255.0; 34196 # Color.Builder resultBuilder = 34197 # Color 34198 # .newBuilder() 34199 # .setRed(red / denominator) 34200 # .setGreen(green / denominator) 34201 # .setBlue(blue / denominator); 34202 # int alpha = color.getAlpha(); 34203 # if (alpha != 255) { 34204 # result.setAlpha( 34205 # FloatValue 34206 # .newBuilder() 34207 # .setValue(((float) alpha) / denominator) 34208 # .build()); 34209 # } 34210 # return resultBuilder.build(); 34211 # } 34212 # // ... 34213 # 34214 # Example (iOS / Obj-C): 34215 # 34216 # // ... 34217 # static UIColor* fromProto(Color* protocolor) { 34218 # float red = [protocolor red]; 34219 # float green = [protocolor green]; 34220 # float blue = [protocolor blue]; 34221 # FloatValue* alpha_wrapper = [protocolor alpha]; 34222 # float alpha = 1.0; 34223 # if (alpha_wrapper != nil) { 34224 # alpha = [alpha_wrapper value]; 34225 # } 34226 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 34227 # } 34228 # 34229 # static Color* toProto(UIColor* color) { 34230 # CGFloat red, green, blue, alpha; 34231 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 34232 # return nil; 34233 # } 34234 # Color* result = [Color alloc] init]; 34235 # [result setRed:red]; 34236 # [result setGreen:green]; 34237 # [result setBlue:blue]; 34238 # if (alpha <= 0.9999) { 34239 # [result setAlpha:floatWrapperWithValue(alpha)]; 34240 # } 34241 # [result autorelease]; 34242 # return result; 34243 # } 34244 # // ... 34245 # 34246 # Example (JavaScript): 34247 # 34248 # // ... 34249 # 34250 # var protoToCssColor = function(rgb_color) { 34251 # var redFrac = rgb_color.red || 0.0; 34252 # var greenFrac = rgb_color.green || 0.0; 34253 # var blueFrac = rgb_color.blue || 0.0; 34254 # var red = Math.floor(redFrac * 255); 34255 # var green = Math.floor(greenFrac * 255); 34256 # var blue = Math.floor(blueFrac * 255); 34257 # 34258 # if (!('alpha' in rgb_color)) { 34259 # return rgbToCssColor_(red, green, blue); 34260 # } 34261 # 34262 # var alphaFrac = rgb_color.alpha.value || 0.0; 34263 # var rgbParams = [red, green, blue].join(','); 34264 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 34265 # }; 34266 # 34267 # var rgbToCssColor_ = function(red, green, blue) { 34268 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 34269 # var hexString = rgbNumber.toString(16); 34270 # var missingZeros = 6 - hexString.length; 34271 # var resultBuilder = ['#']; 34272 # for (var i = 0; i < missingZeros; i++) { 34273 # resultBuilder.push('0'); 34274 # } 34275 # resultBuilder.push(hexString); 34276 # return resultBuilder.join(''); 34277 # }; 34278 # 34279 # // ... 34280 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 34281 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 34282 # the final pixel color is defined by the equation: 34283 # 34284 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 34285 # 34286 # This means that a value of 1.0 corresponds to a solid color, whereas 34287 # a value of 0.0 corresponds to a completely transparent color. This 34288 # uses a wrapper message rather than a simple float scalar so that it is 34289 # possible to distinguish between a default value and the value being unset. 34290 # If omitted, this color object is to be rendered as a solid color 34291 # (as if the alpha value had been explicitly given with a value of 1.0). 34292 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 34293 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 34294 }, 34295 "bold": True or False, # True if the text is bold. 34296 "strikethrough": True or False, # True if the text has a strikethrough. 34297 "fontFamily": "A String", # The font family. 34298 "fontSize": 42, # The size of the font. 34299 "italic": True or False, # True if the text is italicized. 34300 "underline": True or False, # True if the text is underlined. 34301 }, 34302 "textRotation": { # The rotation applied to text in a cell. # The rotation applied to text in a cell 34303 "angle": 42, # The angle between the standard orientation and the desired orientation. 34304 # Measured in degrees. Valid values are between -90 and 90. Positive 34305 # angles are angled upwards, negative are angled downwards. 34306 # 34307 # Note: For LTR text direction positive angles are in the counterclockwise 34308 # direction, whereas for RTL they are in the clockwise direction 34309 "vertical": True or False, # If true, text reads top to bottom, but the orientation of individual 34310 # characters is unchanged. 34311 # For example: 34312 # 34313 # | V | 34314 # | e | 34315 # | r | 34316 # | t | 34317 # | i | 34318 # | c | 34319 # | a | 34320 # | l | 34321 }, 34322 "hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell. 34323 "borders": { # The borders of the cell. # The borders of the cell. 34324 "top": { # A border along a cell. # The top border of the cell. 34325 "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border. 34326 # for simplicity of conversion to/from color representations in various 34327 # languages over compactness; for example, the fields of this representation 34328 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 34329 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 34330 # method in iOS; and, with just a little work, it can be easily formatted into 34331 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 34332 # 34333 # Example (Java): 34334 # 34335 # import com.google.type.Color; 34336 # 34337 # // ... 34338 # public static java.awt.Color fromProto(Color protocolor) { 34339 # float alpha = protocolor.hasAlpha() 34340 # ? protocolor.getAlpha().getValue() 34341 # : 1.0; 34342 # 34343 # return new java.awt.Color( 34344 # protocolor.getRed(), 34345 # protocolor.getGreen(), 34346 # protocolor.getBlue(), 34347 # alpha); 34348 # } 34349 # 34350 # public static Color toProto(java.awt.Color color) { 34351 # float red = (float) color.getRed(); 34352 # float green = (float) color.getGreen(); 34353 # float blue = (float) color.getBlue(); 34354 # float denominator = 255.0; 34355 # Color.Builder resultBuilder = 34356 # Color 34357 # .newBuilder() 34358 # .setRed(red / denominator) 34359 # .setGreen(green / denominator) 34360 # .setBlue(blue / denominator); 34361 # int alpha = color.getAlpha(); 34362 # if (alpha != 255) { 34363 # result.setAlpha( 34364 # FloatValue 34365 # .newBuilder() 34366 # .setValue(((float) alpha) / denominator) 34367 # .build()); 34368 # } 34369 # return resultBuilder.build(); 34370 # } 34371 # // ... 34372 # 34373 # Example (iOS / Obj-C): 34374 # 34375 # // ... 34376 # static UIColor* fromProto(Color* protocolor) { 34377 # float red = [protocolor red]; 34378 # float green = [protocolor green]; 34379 # float blue = [protocolor blue]; 34380 # FloatValue* alpha_wrapper = [protocolor alpha]; 34381 # float alpha = 1.0; 34382 # if (alpha_wrapper != nil) { 34383 # alpha = [alpha_wrapper value]; 34384 # } 34385 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 34386 # } 34387 # 34388 # static Color* toProto(UIColor* color) { 34389 # CGFloat red, green, blue, alpha; 34390 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 34391 # return nil; 34392 # } 34393 # Color* result = [Color alloc] init]; 34394 # [result setRed:red]; 34395 # [result setGreen:green]; 34396 # [result setBlue:blue]; 34397 # if (alpha <= 0.9999) { 34398 # [result setAlpha:floatWrapperWithValue(alpha)]; 34399 # } 34400 # [result autorelease]; 34401 # return result; 34402 # } 34403 # // ... 34404 # 34405 # Example (JavaScript): 34406 # 34407 # // ... 34408 # 34409 # var protoToCssColor = function(rgb_color) { 34410 # var redFrac = rgb_color.red || 0.0; 34411 # var greenFrac = rgb_color.green || 0.0; 34412 # var blueFrac = rgb_color.blue || 0.0; 34413 # var red = Math.floor(redFrac * 255); 34414 # var green = Math.floor(greenFrac * 255); 34415 # var blue = Math.floor(blueFrac * 255); 34416 # 34417 # if (!('alpha' in rgb_color)) { 34418 # return rgbToCssColor_(red, green, blue); 34419 # } 34420 # 34421 # var alphaFrac = rgb_color.alpha.value || 0.0; 34422 # var rgbParams = [red, green, blue].join(','); 34423 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 34424 # }; 34425 # 34426 # var rgbToCssColor_ = function(red, green, blue) { 34427 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 34428 # var hexString = rgbNumber.toString(16); 34429 # var missingZeros = 6 - hexString.length; 34430 # var resultBuilder = ['#']; 34431 # for (var i = 0; i < missingZeros; i++) { 34432 # resultBuilder.push('0'); 34433 # } 34434 # resultBuilder.push(hexString); 34435 # return resultBuilder.join(''); 34436 # }; 34437 # 34438 # // ... 34439 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 34440 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 34441 # the final pixel color is defined by the equation: 34442 # 34443 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 34444 # 34445 # This means that a value of 1.0 corresponds to a solid color, whereas 34446 # a value of 0.0 corresponds to a completely transparent color. This 34447 # uses a wrapper message rather than a simple float scalar so that it is 34448 # possible to distinguish between a default value and the value being unset. 34449 # If omitted, this color object is to be rendered as a solid color 34450 # (as if the alpha value had been explicitly given with a value of 1.0). 34451 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 34452 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 34453 }, 34454 "width": 42, # The width of the border, in pixels. 34455 # Deprecated; the width is determined by the "style" field. 34456 "style": "A String", # The style of the border. 34457 }, 34458 "right": { # A border along a cell. # The right border of the cell. 34459 "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border. 34460 # for simplicity of conversion to/from color representations in various 34461 # languages over compactness; for example, the fields of this representation 34462 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 34463 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 34464 # method in iOS; and, with just a little work, it can be easily formatted into 34465 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 34466 # 34467 # Example (Java): 34468 # 34469 # import com.google.type.Color; 34470 # 34471 # // ... 34472 # public static java.awt.Color fromProto(Color protocolor) { 34473 # float alpha = protocolor.hasAlpha() 34474 # ? protocolor.getAlpha().getValue() 34475 # : 1.0; 34476 # 34477 # return new java.awt.Color( 34478 # protocolor.getRed(), 34479 # protocolor.getGreen(), 34480 # protocolor.getBlue(), 34481 # alpha); 34482 # } 34483 # 34484 # public static Color toProto(java.awt.Color color) { 34485 # float red = (float) color.getRed(); 34486 # float green = (float) color.getGreen(); 34487 # float blue = (float) color.getBlue(); 34488 # float denominator = 255.0; 34489 # Color.Builder resultBuilder = 34490 # Color 34491 # .newBuilder() 34492 # .setRed(red / denominator) 34493 # .setGreen(green / denominator) 34494 # .setBlue(blue / denominator); 34495 # int alpha = color.getAlpha(); 34496 # if (alpha != 255) { 34497 # result.setAlpha( 34498 # FloatValue 34499 # .newBuilder() 34500 # .setValue(((float) alpha) / denominator) 34501 # .build()); 34502 # } 34503 # return resultBuilder.build(); 34504 # } 34505 # // ... 34506 # 34507 # Example (iOS / Obj-C): 34508 # 34509 # // ... 34510 # static UIColor* fromProto(Color* protocolor) { 34511 # float red = [protocolor red]; 34512 # float green = [protocolor green]; 34513 # float blue = [protocolor blue]; 34514 # FloatValue* alpha_wrapper = [protocolor alpha]; 34515 # float alpha = 1.0; 34516 # if (alpha_wrapper != nil) { 34517 # alpha = [alpha_wrapper value]; 34518 # } 34519 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 34520 # } 34521 # 34522 # static Color* toProto(UIColor* color) { 34523 # CGFloat red, green, blue, alpha; 34524 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 34525 # return nil; 34526 # } 34527 # Color* result = [Color alloc] init]; 34528 # [result setRed:red]; 34529 # [result setGreen:green]; 34530 # [result setBlue:blue]; 34531 # if (alpha <= 0.9999) { 34532 # [result setAlpha:floatWrapperWithValue(alpha)]; 34533 # } 34534 # [result autorelease]; 34535 # return result; 34536 # } 34537 # // ... 34538 # 34539 # Example (JavaScript): 34540 # 34541 # // ... 34542 # 34543 # var protoToCssColor = function(rgb_color) { 34544 # var redFrac = rgb_color.red || 0.0; 34545 # var greenFrac = rgb_color.green || 0.0; 34546 # var blueFrac = rgb_color.blue || 0.0; 34547 # var red = Math.floor(redFrac * 255); 34548 # var green = Math.floor(greenFrac * 255); 34549 # var blue = Math.floor(blueFrac * 255); 34550 # 34551 # if (!('alpha' in rgb_color)) { 34552 # return rgbToCssColor_(red, green, blue); 34553 # } 34554 # 34555 # var alphaFrac = rgb_color.alpha.value || 0.0; 34556 # var rgbParams = [red, green, blue].join(','); 34557 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 34558 # }; 34559 # 34560 # var rgbToCssColor_ = function(red, green, blue) { 34561 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 34562 # var hexString = rgbNumber.toString(16); 34563 # var missingZeros = 6 - hexString.length; 34564 # var resultBuilder = ['#']; 34565 # for (var i = 0; i < missingZeros; i++) { 34566 # resultBuilder.push('0'); 34567 # } 34568 # resultBuilder.push(hexString); 34569 # return resultBuilder.join(''); 34570 # }; 34571 # 34572 # // ... 34573 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 34574 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 34575 # the final pixel color is defined by the equation: 34576 # 34577 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 34578 # 34579 # This means that a value of 1.0 corresponds to a solid color, whereas 34580 # a value of 0.0 corresponds to a completely transparent color. This 34581 # uses a wrapper message rather than a simple float scalar so that it is 34582 # possible to distinguish between a default value and the value being unset. 34583 # If omitted, this color object is to be rendered as a solid color 34584 # (as if the alpha value had been explicitly given with a value of 1.0). 34585 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 34586 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 34587 }, 34588 "width": 42, # The width of the border, in pixels. 34589 # Deprecated; the width is determined by the "style" field. 34590 "style": "A String", # The style of the border. 34591 }, 34592 "bottom": { # A border along a cell. # The bottom border of the cell. 34593 "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border. 34594 # for simplicity of conversion to/from color representations in various 34595 # languages over compactness; for example, the fields of this representation 34596 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 34597 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 34598 # method in iOS; and, with just a little work, it can be easily formatted into 34599 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 34600 # 34601 # Example (Java): 34602 # 34603 # import com.google.type.Color; 34604 # 34605 # // ... 34606 # public static java.awt.Color fromProto(Color protocolor) { 34607 # float alpha = protocolor.hasAlpha() 34608 # ? protocolor.getAlpha().getValue() 34609 # : 1.0; 34610 # 34611 # return new java.awt.Color( 34612 # protocolor.getRed(), 34613 # protocolor.getGreen(), 34614 # protocolor.getBlue(), 34615 # alpha); 34616 # } 34617 # 34618 # public static Color toProto(java.awt.Color color) { 34619 # float red = (float) color.getRed(); 34620 # float green = (float) color.getGreen(); 34621 # float blue = (float) color.getBlue(); 34622 # float denominator = 255.0; 34623 # Color.Builder resultBuilder = 34624 # Color 34625 # .newBuilder() 34626 # .setRed(red / denominator) 34627 # .setGreen(green / denominator) 34628 # .setBlue(blue / denominator); 34629 # int alpha = color.getAlpha(); 34630 # if (alpha != 255) { 34631 # result.setAlpha( 34632 # FloatValue 34633 # .newBuilder() 34634 # .setValue(((float) alpha) / denominator) 34635 # .build()); 34636 # } 34637 # return resultBuilder.build(); 34638 # } 34639 # // ... 34640 # 34641 # Example (iOS / Obj-C): 34642 # 34643 # // ... 34644 # static UIColor* fromProto(Color* protocolor) { 34645 # float red = [protocolor red]; 34646 # float green = [protocolor green]; 34647 # float blue = [protocolor blue]; 34648 # FloatValue* alpha_wrapper = [protocolor alpha]; 34649 # float alpha = 1.0; 34650 # if (alpha_wrapper != nil) { 34651 # alpha = [alpha_wrapper value]; 34652 # } 34653 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 34654 # } 34655 # 34656 # static Color* toProto(UIColor* color) { 34657 # CGFloat red, green, blue, alpha; 34658 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 34659 # return nil; 34660 # } 34661 # Color* result = [Color alloc] init]; 34662 # [result setRed:red]; 34663 # [result setGreen:green]; 34664 # [result setBlue:blue]; 34665 # if (alpha <= 0.9999) { 34666 # [result setAlpha:floatWrapperWithValue(alpha)]; 34667 # } 34668 # [result autorelease]; 34669 # return result; 34670 # } 34671 # // ... 34672 # 34673 # Example (JavaScript): 34674 # 34675 # // ... 34676 # 34677 # var protoToCssColor = function(rgb_color) { 34678 # var redFrac = rgb_color.red || 0.0; 34679 # var greenFrac = rgb_color.green || 0.0; 34680 # var blueFrac = rgb_color.blue || 0.0; 34681 # var red = Math.floor(redFrac * 255); 34682 # var green = Math.floor(greenFrac * 255); 34683 # var blue = Math.floor(blueFrac * 255); 34684 # 34685 # if (!('alpha' in rgb_color)) { 34686 # return rgbToCssColor_(red, green, blue); 34687 # } 34688 # 34689 # var alphaFrac = rgb_color.alpha.value || 0.0; 34690 # var rgbParams = [red, green, blue].join(','); 34691 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 34692 # }; 34693 # 34694 # var rgbToCssColor_ = function(red, green, blue) { 34695 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 34696 # var hexString = rgbNumber.toString(16); 34697 # var missingZeros = 6 - hexString.length; 34698 # var resultBuilder = ['#']; 34699 # for (var i = 0; i < missingZeros; i++) { 34700 # resultBuilder.push('0'); 34701 # } 34702 # resultBuilder.push(hexString); 34703 # return resultBuilder.join(''); 34704 # }; 34705 # 34706 # // ... 34707 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 34708 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 34709 # the final pixel color is defined by the equation: 34710 # 34711 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 34712 # 34713 # This means that a value of 1.0 corresponds to a solid color, whereas 34714 # a value of 0.0 corresponds to a completely transparent color. This 34715 # uses a wrapper message rather than a simple float scalar so that it is 34716 # possible to distinguish between a default value and the value being unset. 34717 # If omitted, this color object is to be rendered as a solid color 34718 # (as if the alpha value had been explicitly given with a value of 1.0). 34719 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 34720 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 34721 }, 34722 "width": 42, # The width of the border, in pixels. 34723 # Deprecated; the width is determined by the "style" field. 34724 "style": "A String", # The style of the border. 34725 }, 34726 "left": { # A border along a cell. # The left border of the cell. 34727 "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border. 34728 # for simplicity of conversion to/from color representations in various 34729 # languages over compactness; for example, the fields of this representation 34730 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 34731 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 34732 # method in iOS; and, with just a little work, it can be easily formatted into 34733 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 34734 # 34735 # Example (Java): 34736 # 34737 # import com.google.type.Color; 34738 # 34739 # // ... 34740 # public static java.awt.Color fromProto(Color protocolor) { 34741 # float alpha = protocolor.hasAlpha() 34742 # ? protocolor.getAlpha().getValue() 34743 # : 1.0; 34744 # 34745 # return new java.awt.Color( 34746 # protocolor.getRed(), 34747 # protocolor.getGreen(), 34748 # protocolor.getBlue(), 34749 # alpha); 34750 # } 34751 # 34752 # public static Color toProto(java.awt.Color color) { 34753 # float red = (float) color.getRed(); 34754 # float green = (float) color.getGreen(); 34755 # float blue = (float) color.getBlue(); 34756 # float denominator = 255.0; 34757 # Color.Builder resultBuilder = 34758 # Color 34759 # .newBuilder() 34760 # .setRed(red / denominator) 34761 # .setGreen(green / denominator) 34762 # .setBlue(blue / denominator); 34763 # int alpha = color.getAlpha(); 34764 # if (alpha != 255) { 34765 # result.setAlpha( 34766 # FloatValue 34767 # .newBuilder() 34768 # .setValue(((float) alpha) / denominator) 34769 # .build()); 34770 # } 34771 # return resultBuilder.build(); 34772 # } 34773 # // ... 34774 # 34775 # Example (iOS / Obj-C): 34776 # 34777 # // ... 34778 # static UIColor* fromProto(Color* protocolor) { 34779 # float red = [protocolor red]; 34780 # float green = [protocolor green]; 34781 # float blue = [protocolor blue]; 34782 # FloatValue* alpha_wrapper = [protocolor alpha]; 34783 # float alpha = 1.0; 34784 # if (alpha_wrapper != nil) { 34785 # alpha = [alpha_wrapper value]; 34786 # } 34787 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 34788 # } 34789 # 34790 # static Color* toProto(UIColor* color) { 34791 # CGFloat red, green, blue, alpha; 34792 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 34793 # return nil; 34794 # } 34795 # Color* result = [Color alloc] init]; 34796 # [result setRed:red]; 34797 # [result setGreen:green]; 34798 # [result setBlue:blue]; 34799 # if (alpha <= 0.9999) { 34800 # [result setAlpha:floatWrapperWithValue(alpha)]; 34801 # } 34802 # [result autorelease]; 34803 # return result; 34804 # } 34805 # // ... 34806 # 34807 # Example (JavaScript): 34808 # 34809 # // ... 34810 # 34811 # var protoToCssColor = function(rgb_color) { 34812 # var redFrac = rgb_color.red || 0.0; 34813 # var greenFrac = rgb_color.green || 0.0; 34814 # var blueFrac = rgb_color.blue || 0.0; 34815 # var red = Math.floor(redFrac * 255); 34816 # var green = Math.floor(greenFrac * 255); 34817 # var blue = Math.floor(blueFrac * 255); 34818 # 34819 # if (!('alpha' in rgb_color)) { 34820 # return rgbToCssColor_(red, green, blue); 34821 # } 34822 # 34823 # var alphaFrac = rgb_color.alpha.value || 0.0; 34824 # var rgbParams = [red, green, blue].join(','); 34825 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 34826 # }; 34827 # 34828 # var rgbToCssColor_ = function(red, green, blue) { 34829 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 34830 # var hexString = rgbNumber.toString(16); 34831 # var missingZeros = 6 - hexString.length; 34832 # var resultBuilder = ['#']; 34833 # for (var i = 0; i < missingZeros; i++) { 34834 # resultBuilder.push('0'); 34835 # } 34836 # resultBuilder.push(hexString); 34837 # return resultBuilder.join(''); 34838 # }; 34839 # 34840 # // ... 34841 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 34842 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 34843 # the final pixel color is defined by the equation: 34844 # 34845 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 34846 # 34847 # This means that a value of 1.0 corresponds to a solid color, whereas 34848 # a value of 0.0 corresponds to a completely transparent color. This 34849 # uses a wrapper message rather than a simple float scalar so that it is 34850 # possible to distinguish between a default value and the value being unset. 34851 # If omitted, this color object is to be rendered as a solid color 34852 # (as if the alpha value had been explicitly given with a value of 1.0). 34853 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 34854 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 34855 }, 34856 "width": 42, # The width of the border, in pixels. 34857 # Deprecated; the width is determined by the "style" field. 34858 "style": "A String", # The style of the border. 34859 }, 34860 }, 34861 "wrapStrategy": "A String", # The wrap strategy for the value in the cell. 34862 }, 34863 "dataValidation": { # A data validation rule. # A data validation rule on the cell, if any. 34864 # 34865 # When writing, the new data validation rule will overwrite any prior rule. 34866 "showCustomUi": True or False, # True if the UI should be customized based on the kind of condition. 34867 # If true, "List" conditions will show a dropdown. 34868 "strict": True or False, # True if invalid data should be rejected. 34869 "inputMessage": "A String", # A message to show the user when adding data to the cell. 34870 "condition": { # A condition that can evaluate to true or false. # The condition that data in the cell must match. 34871 # BooleanConditions are used by conditional formatting, 34872 # data validation, and the criteria in filters. 34873 "values": [ # The values of the condition. The number of supported values depends 34874 # on the condition type. Some support zero values, 34875 # others one or two values, 34876 # and ConditionType.ONE_OF_LIST supports an arbitrary number of values. 34877 { # The value of the condition. 34878 "relativeDate": "A String", # A relative date (based on the current date). 34879 # Valid only if the type is 34880 # DATE_BEFORE, 34881 # DATE_AFTER, 34882 # DATE_ON_OR_BEFORE or 34883 # DATE_ON_OR_AFTER. 34884 # 34885 # Relative dates are not supported in data validation. 34886 # They are supported only in conditional formatting and 34887 # conditional filters. 34888 "userEnteredValue": "A String", # A value the condition is based on. 34889 # The value will be parsed as if the user typed into a cell. 34890 # Formulas are supported (and must begin with an `=`). 34891 }, 34892 ], 34893 "type": "A String", # The type of condition. 34894 }, 34895 }, 34896 "textFormatRuns": [ # Runs of rich text applied to subsections of the cell. Runs are only valid 34897 # on user entered strings, not formulas, bools, or numbers. 34898 # Runs start at specific indexes in the text and continue until the next 34899 # run. Properties of a run will continue unless explicitly changed 34900 # in a subsequent run (and properties of the first run will continue 34901 # the properties of the cell unless explicitly changed). 34902 # 34903 # When writing, the new runs will overwrite any prior runs. When writing a 34904 # new user_entered_value, previous runs will be erased. 34905 { # A run of a text format. The format of this run continues until the start 34906 # index of the next run. 34907 # When updating, all fields must be set. 34908 "startIndex": 42, # The character index where this run starts. 34909 "format": { # The format of a run of text in a cell. # The format of this run. Absent values inherit the cell's format. 34910 # Absent values indicate that the field isn't specified. 34911 "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text. 34912 # for simplicity of conversion to/from color representations in various 34913 # languages over compactness; for example, the fields of this representation 34914 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 34915 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 34916 # method in iOS; and, with just a little work, it can be easily formatted into 34917 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 34918 # 34919 # Example (Java): 34920 # 34921 # import com.google.type.Color; 34922 # 34923 # // ... 34924 # public static java.awt.Color fromProto(Color protocolor) { 34925 # float alpha = protocolor.hasAlpha() 34926 # ? protocolor.getAlpha().getValue() 34927 # : 1.0; 34928 # 34929 # return new java.awt.Color( 34930 # protocolor.getRed(), 34931 # protocolor.getGreen(), 34932 # protocolor.getBlue(), 34933 # alpha); 34934 # } 34935 # 34936 # public static Color toProto(java.awt.Color color) { 34937 # float red = (float) color.getRed(); 34938 # float green = (float) color.getGreen(); 34939 # float blue = (float) color.getBlue(); 34940 # float denominator = 255.0; 34941 # Color.Builder resultBuilder = 34942 # Color 34943 # .newBuilder() 34944 # .setRed(red / denominator) 34945 # .setGreen(green / denominator) 34946 # .setBlue(blue / denominator); 34947 # int alpha = color.getAlpha(); 34948 # if (alpha != 255) { 34949 # result.setAlpha( 34950 # FloatValue 34951 # .newBuilder() 34952 # .setValue(((float) alpha) / denominator) 34953 # .build()); 34954 # } 34955 # return resultBuilder.build(); 34956 # } 34957 # // ... 34958 # 34959 # Example (iOS / Obj-C): 34960 # 34961 # // ... 34962 # static UIColor* fromProto(Color* protocolor) { 34963 # float red = [protocolor red]; 34964 # float green = [protocolor green]; 34965 # float blue = [protocolor blue]; 34966 # FloatValue* alpha_wrapper = [protocolor alpha]; 34967 # float alpha = 1.0; 34968 # if (alpha_wrapper != nil) { 34969 # alpha = [alpha_wrapper value]; 34970 # } 34971 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 34972 # } 34973 # 34974 # static Color* toProto(UIColor* color) { 34975 # CGFloat red, green, blue, alpha; 34976 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 34977 # return nil; 34978 # } 34979 # Color* result = [Color alloc] init]; 34980 # [result setRed:red]; 34981 # [result setGreen:green]; 34982 # [result setBlue:blue]; 34983 # if (alpha <= 0.9999) { 34984 # [result setAlpha:floatWrapperWithValue(alpha)]; 34985 # } 34986 # [result autorelease]; 34987 # return result; 34988 # } 34989 # // ... 34990 # 34991 # Example (JavaScript): 34992 # 34993 # // ... 34994 # 34995 # var protoToCssColor = function(rgb_color) { 34996 # var redFrac = rgb_color.red || 0.0; 34997 # var greenFrac = rgb_color.green || 0.0; 34998 # var blueFrac = rgb_color.blue || 0.0; 34999 # var red = Math.floor(redFrac * 255); 35000 # var green = Math.floor(greenFrac * 255); 35001 # var blue = Math.floor(blueFrac * 255); 35002 # 35003 # if (!('alpha' in rgb_color)) { 35004 # return rgbToCssColor_(red, green, blue); 35005 # } 35006 # 35007 # var alphaFrac = rgb_color.alpha.value || 0.0; 35008 # var rgbParams = [red, green, blue].join(','); 35009 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 35010 # }; 35011 # 35012 # var rgbToCssColor_ = function(red, green, blue) { 35013 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 35014 # var hexString = rgbNumber.toString(16); 35015 # var missingZeros = 6 - hexString.length; 35016 # var resultBuilder = ['#']; 35017 # for (var i = 0; i < missingZeros; i++) { 35018 # resultBuilder.push('0'); 35019 # } 35020 # resultBuilder.push(hexString); 35021 # return resultBuilder.join(''); 35022 # }; 35023 # 35024 # // ... 35025 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 35026 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 35027 # the final pixel color is defined by the equation: 35028 # 35029 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 35030 # 35031 # This means that a value of 1.0 corresponds to a solid color, whereas 35032 # a value of 0.0 corresponds to a completely transparent color. This 35033 # uses a wrapper message rather than a simple float scalar so that it is 35034 # possible to distinguish between a default value and the value being unset. 35035 # If omitted, this color object is to be rendered as a solid color 35036 # (as if the alpha value had been explicitly given with a value of 1.0). 35037 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 35038 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 35039 }, 35040 "bold": True or False, # True if the text is bold. 35041 "strikethrough": True or False, # True if the text has a strikethrough. 35042 "fontFamily": "A String", # The font family. 35043 "fontSize": 42, # The size of the font. 35044 "italic": True or False, # True if the text is italicized. 35045 "underline": True or False, # True if the text is underlined. 35046 }, 35047 }, 35048 ], 35049 }, 35050 ], 35051 }, 35052 ], 35053 "startRow": 42, # The first row this GridData refers to, zero-based. 35054 "columnMetadata": [ # Metadata about the requested columns in the grid, starting with the column 35055 # in start_column. 35056 { # Properties about a dimension. 35057 "pixelSize": 42, # The height (if a row) or width (if a column) of the dimension in pixels. 35058 "hiddenByUser": True or False, # True if this dimension is explicitly hidden. 35059 "hiddenByFilter": True or False, # True if this dimension is being filtered. 35060 # This field is read-only. 35061 }, 35062 ], 35063 }, 35064 ], 35065 "properties": { # Properties of a sheet. # The properties of the sheet. 35066 "sheetType": "A String", # The type of sheet. Defaults to GRID. 35067 # This field cannot be changed once set. 35068 "index": 42, # The index of the sheet within the spreadsheet. 35069 # When adding or updating sheet properties, if this field 35070 # is excluded then the sheet will be added or moved to the end 35071 # of the sheet list. When updating sheet indices or inserting 35072 # sheets, movement is considered in "before the move" indexes. 35073 # For example, if there were 3 sheets (S1, S2, S3) in order to 35074 # move S1 ahead of S2 the index would have to be set to 2. A sheet 35075 # index update request will be ignored if the requested index is 35076 # identical to the sheets current index or if the requested new 35077 # index is equal to the current sheet index + 1. 35078 "title": "A String", # The name of the sheet. 35079 "gridProperties": { # Properties of a grid. # Additional properties of the sheet if this sheet is a grid. 35080 # (If the sheet is an object sheet, containing a chart or image, then 35081 # this field will be absent.) 35082 # When writing it is an error to set any grid properties on non-grid sheets. 35083 "columnCount": 42, # The number of columns in the grid. 35084 "frozenRowCount": 42, # The number of rows that are frozen in the grid. 35085 "frozenColumnCount": 42, # The number of columns that are frozen in the grid. 35086 "hideGridlines": True or False, # True if the grid isn't showing gridlines in the UI. 35087 "rowCount": 42, # The number of rows in the grid. 35088 }, 35089 "rightToLeft": True or False, # True if the sheet is an RTL sheet instead of an LTR sheet. 35090 "tabColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the tab in the UI. 35091 # for simplicity of conversion to/from color representations in various 35092 # languages over compactness; for example, the fields of this representation 35093 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 35094 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 35095 # method in iOS; and, with just a little work, it can be easily formatted into 35096 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 35097 # 35098 # Example (Java): 35099 # 35100 # import com.google.type.Color; 35101 # 35102 # // ... 35103 # public static java.awt.Color fromProto(Color protocolor) { 35104 # float alpha = protocolor.hasAlpha() 35105 # ? protocolor.getAlpha().getValue() 35106 # : 1.0; 35107 # 35108 # return new java.awt.Color( 35109 # protocolor.getRed(), 35110 # protocolor.getGreen(), 35111 # protocolor.getBlue(), 35112 # alpha); 35113 # } 35114 # 35115 # public static Color toProto(java.awt.Color color) { 35116 # float red = (float) color.getRed(); 35117 # float green = (float) color.getGreen(); 35118 # float blue = (float) color.getBlue(); 35119 # float denominator = 255.0; 35120 # Color.Builder resultBuilder = 35121 # Color 35122 # .newBuilder() 35123 # .setRed(red / denominator) 35124 # .setGreen(green / denominator) 35125 # .setBlue(blue / denominator); 35126 # int alpha = color.getAlpha(); 35127 # if (alpha != 255) { 35128 # result.setAlpha( 35129 # FloatValue 35130 # .newBuilder() 35131 # .setValue(((float) alpha) / denominator) 35132 # .build()); 35133 # } 35134 # return resultBuilder.build(); 35135 # } 35136 # // ... 35137 # 35138 # Example (iOS / Obj-C): 35139 # 35140 # // ... 35141 # static UIColor* fromProto(Color* protocolor) { 35142 # float red = [protocolor red]; 35143 # float green = [protocolor green]; 35144 # float blue = [protocolor blue]; 35145 # FloatValue* alpha_wrapper = [protocolor alpha]; 35146 # float alpha = 1.0; 35147 # if (alpha_wrapper != nil) { 35148 # alpha = [alpha_wrapper value]; 35149 # } 35150 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 35151 # } 35152 # 35153 # static Color* toProto(UIColor* color) { 35154 # CGFloat red, green, blue, alpha; 35155 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 35156 # return nil; 35157 # } 35158 # Color* result = [Color alloc] init]; 35159 # [result setRed:red]; 35160 # [result setGreen:green]; 35161 # [result setBlue:blue]; 35162 # if (alpha <= 0.9999) { 35163 # [result setAlpha:floatWrapperWithValue(alpha)]; 35164 # } 35165 # [result autorelease]; 35166 # return result; 35167 # } 35168 # // ... 35169 # 35170 # Example (JavaScript): 35171 # 35172 # // ... 35173 # 35174 # var protoToCssColor = function(rgb_color) { 35175 # var redFrac = rgb_color.red || 0.0; 35176 # var greenFrac = rgb_color.green || 0.0; 35177 # var blueFrac = rgb_color.blue || 0.0; 35178 # var red = Math.floor(redFrac * 255); 35179 # var green = Math.floor(greenFrac * 255); 35180 # var blue = Math.floor(blueFrac * 255); 35181 # 35182 # if (!('alpha' in rgb_color)) { 35183 # return rgbToCssColor_(red, green, blue); 35184 # } 35185 # 35186 # var alphaFrac = rgb_color.alpha.value || 0.0; 35187 # var rgbParams = [red, green, blue].join(','); 35188 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 35189 # }; 35190 # 35191 # var rgbToCssColor_ = function(red, green, blue) { 35192 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 35193 # var hexString = rgbNumber.toString(16); 35194 # var missingZeros = 6 - hexString.length; 35195 # var resultBuilder = ['#']; 35196 # for (var i = 0; i < missingZeros; i++) { 35197 # resultBuilder.push('0'); 35198 # } 35199 # resultBuilder.push(hexString); 35200 # return resultBuilder.join(''); 35201 # }; 35202 # 35203 # // ... 35204 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 35205 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 35206 # the final pixel color is defined by the equation: 35207 # 35208 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 35209 # 35210 # This means that a value of 1.0 corresponds to a solid color, whereas 35211 # a value of 0.0 corresponds to a completely transparent color. This 35212 # uses a wrapper message rather than a simple float scalar so that it is 35213 # possible to distinguish between a default value and the value being unset. 35214 # If omitted, this color object is to be rendered as a solid color 35215 # (as if the alpha value had been explicitly given with a value of 1.0). 35216 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 35217 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 35218 }, 35219 "hidden": True or False, # True if the sheet is hidden in the UI, false if it's visible. 35220 "sheetId": 42, # The ID of the sheet. Must be non-negative. 35221 # This field cannot be changed once set. 35222 }, 35223 }, 35224 ], 35225 "spreadsheetUrl": "A String", # The url of the spreadsheet. 35226 # This field is read-only. 35227 } 35228 35229 x__xgafv: string, V1 error format. 35230 Allowed values 35231 1 - v1 error format 35232 2 - v2 error format 35233 35234 Returns: 35235 An object of the form: 35236 35237 { # Resource that represents a spreadsheet. 35238 "spreadsheetId": "A String", # The ID of the spreadsheet. 35239 # This field is read-only. 35240 "namedRanges": [ # The named ranges defined in a spreadsheet. 35241 { # A named range. 35242 "namedRangeId": "A String", # The ID of the named range. 35243 "range": { # A range on a sheet. # The range this represents. 35244 # All indexes are zero-based. 35245 # Indexes are half open, e.g the start index is inclusive 35246 # and the end index is exclusive -- [start_index, end_index). 35247 # Missing indexes indicate the range is unbounded on that side. 35248 # 35249 # For example, if `"Sheet1"` is sheet ID 0, then: 35250 # 35251 # `Sheet1!A1:A1 == sheet_id: 0, 35252 # start_row_index: 0, end_row_index: 1, 35253 # start_column_index: 0, end_column_index: 1` 35254 # 35255 # `Sheet1!A3:B4 == sheet_id: 0, 35256 # start_row_index: 2, end_row_index: 4, 35257 # start_column_index: 0, end_column_index: 2` 35258 # 35259 # `Sheet1!A:B == sheet_id: 0, 35260 # start_column_index: 0, end_column_index: 2` 35261 # 35262 # `Sheet1!A5:B == sheet_id: 0, 35263 # start_row_index: 4, 35264 # start_column_index: 0, end_column_index: 2` 35265 # 35266 # `Sheet1 == sheet_id:0` 35267 # 35268 # The start index must always be less than or equal to the end index. 35269 # If the start index equals the end index, then the range is empty. 35270 # Empty ranges are typically not meaningful and are usually rendered in the 35271 # UI as `#REF!`. 35272 "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded. 35273 "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded. 35274 "sheetId": 42, # The sheet this range is on. 35275 "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded. 35276 "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded. 35277 }, 35278 "name": "A String", # The name of the named range. 35279 }, 35280 ], 35281 "properties": { # Properties of a spreadsheet. # Overall properties of a spreadsheet. 35282 "title": "A String", # The title of the spreadsheet. 35283 "locale": "A String", # The locale of the spreadsheet in one of the following formats: 35284 # 35285 # * an ISO 639-1 language code such as `en` 35286 # 35287 # * an ISO 639-2 language code such as `fil`, if no 639-1 code exists 35288 # 35289 # * a combination of the ISO language code and country code, such as `en_US` 35290 # 35291 # Note: when updating this field, not all locales/languages are supported. 35292 "defaultFormat": { # The format of a cell. # The default format of all cells in the spreadsheet. 35293 # CellData.effectiveFormat will not be set if the 35294 # cell's format is equal to this default format. 35295 # This field is read-only. 35296 "numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user. 35297 "pattern": "A String", # Pattern string used for formatting. If not set, a default pattern based on 35298 # the user's locale will be used if necessary for the given type. 35299 # See the [Date and Number Formats guide](/sheets/api/guides/formats) for more 35300 # information about the supported patterns. 35301 "type": "A String", # The type of the number format. 35302 # When writing, this field must be set. 35303 }, 35304 "textDirection": "A String", # The direction of the text in the cell. 35305 "padding": { # The amount of padding around the cell, in pixels. # The padding of the cell. 35306 # When updating padding, every field must be specified. 35307 "top": 42, # The top padding of the cell. 35308 "right": 42, # The right padding of the cell. 35309 "bottom": 42, # The bottom padding of the cell. 35310 "left": 42, # The left padding of the cell. 35311 }, 35312 "verticalAlignment": "A String", # The vertical alignment of the value in the cell. 35313 "backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell. 35314 # for simplicity of conversion to/from color representations in various 35315 # languages over compactness; for example, the fields of this representation 35316 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 35317 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 35318 # method in iOS; and, with just a little work, it can be easily formatted into 35319 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 35320 # 35321 # Example (Java): 35322 # 35323 # import com.google.type.Color; 35324 # 35325 # // ... 35326 # public static java.awt.Color fromProto(Color protocolor) { 35327 # float alpha = protocolor.hasAlpha() 35328 # ? protocolor.getAlpha().getValue() 35329 # : 1.0; 35330 # 35331 # return new java.awt.Color( 35332 # protocolor.getRed(), 35333 # protocolor.getGreen(), 35334 # protocolor.getBlue(), 35335 # alpha); 35336 # } 35337 # 35338 # public static Color toProto(java.awt.Color color) { 35339 # float red = (float) color.getRed(); 35340 # float green = (float) color.getGreen(); 35341 # float blue = (float) color.getBlue(); 35342 # float denominator = 255.0; 35343 # Color.Builder resultBuilder = 35344 # Color 35345 # .newBuilder() 35346 # .setRed(red / denominator) 35347 # .setGreen(green / denominator) 35348 # .setBlue(blue / denominator); 35349 # int alpha = color.getAlpha(); 35350 # if (alpha != 255) { 35351 # result.setAlpha( 35352 # FloatValue 35353 # .newBuilder() 35354 # .setValue(((float) alpha) / denominator) 35355 # .build()); 35356 # } 35357 # return resultBuilder.build(); 35358 # } 35359 # // ... 35360 # 35361 # Example (iOS / Obj-C): 35362 # 35363 # // ... 35364 # static UIColor* fromProto(Color* protocolor) { 35365 # float red = [protocolor red]; 35366 # float green = [protocolor green]; 35367 # float blue = [protocolor blue]; 35368 # FloatValue* alpha_wrapper = [protocolor alpha]; 35369 # float alpha = 1.0; 35370 # if (alpha_wrapper != nil) { 35371 # alpha = [alpha_wrapper value]; 35372 # } 35373 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 35374 # } 35375 # 35376 # static Color* toProto(UIColor* color) { 35377 # CGFloat red, green, blue, alpha; 35378 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 35379 # return nil; 35380 # } 35381 # Color* result = [Color alloc] init]; 35382 # [result setRed:red]; 35383 # [result setGreen:green]; 35384 # [result setBlue:blue]; 35385 # if (alpha <= 0.9999) { 35386 # [result setAlpha:floatWrapperWithValue(alpha)]; 35387 # } 35388 # [result autorelease]; 35389 # return result; 35390 # } 35391 # // ... 35392 # 35393 # Example (JavaScript): 35394 # 35395 # // ... 35396 # 35397 # var protoToCssColor = function(rgb_color) { 35398 # var redFrac = rgb_color.red || 0.0; 35399 # var greenFrac = rgb_color.green || 0.0; 35400 # var blueFrac = rgb_color.blue || 0.0; 35401 # var red = Math.floor(redFrac * 255); 35402 # var green = Math.floor(greenFrac * 255); 35403 # var blue = Math.floor(blueFrac * 255); 35404 # 35405 # if (!('alpha' in rgb_color)) { 35406 # return rgbToCssColor_(red, green, blue); 35407 # } 35408 # 35409 # var alphaFrac = rgb_color.alpha.value || 0.0; 35410 # var rgbParams = [red, green, blue].join(','); 35411 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 35412 # }; 35413 # 35414 # var rgbToCssColor_ = function(red, green, blue) { 35415 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 35416 # var hexString = rgbNumber.toString(16); 35417 # var missingZeros = 6 - hexString.length; 35418 # var resultBuilder = ['#']; 35419 # for (var i = 0; i < missingZeros; i++) { 35420 # resultBuilder.push('0'); 35421 # } 35422 # resultBuilder.push(hexString); 35423 # return resultBuilder.join(''); 35424 # }; 35425 # 35426 # // ... 35427 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 35428 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 35429 # the final pixel color is defined by the equation: 35430 # 35431 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 35432 # 35433 # This means that a value of 1.0 corresponds to a solid color, whereas 35434 # a value of 0.0 corresponds to a completely transparent color. This 35435 # uses a wrapper message rather than a simple float scalar so that it is 35436 # possible to distinguish between a default value and the value being unset. 35437 # If omitted, this color object is to be rendered as a solid color 35438 # (as if the alpha value had been explicitly given with a value of 1.0). 35439 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 35440 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 35441 }, 35442 "horizontalAlignment": "A String", # The horizontal alignment of the value in the cell. 35443 "textFormat": { # The format of a run of text in a cell. # The format of the text in the cell (unless overridden by a format run). 35444 # Absent values indicate that the field isn't specified. 35445 "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text. 35446 # for simplicity of conversion to/from color representations in various 35447 # languages over compactness; for example, the fields of this representation 35448 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 35449 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 35450 # method in iOS; and, with just a little work, it can be easily formatted into 35451 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 35452 # 35453 # Example (Java): 35454 # 35455 # import com.google.type.Color; 35456 # 35457 # // ... 35458 # public static java.awt.Color fromProto(Color protocolor) { 35459 # float alpha = protocolor.hasAlpha() 35460 # ? protocolor.getAlpha().getValue() 35461 # : 1.0; 35462 # 35463 # return new java.awt.Color( 35464 # protocolor.getRed(), 35465 # protocolor.getGreen(), 35466 # protocolor.getBlue(), 35467 # alpha); 35468 # } 35469 # 35470 # public static Color toProto(java.awt.Color color) { 35471 # float red = (float) color.getRed(); 35472 # float green = (float) color.getGreen(); 35473 # float blue = (float) color.getBlue(); 35474 # float denominator = 255.0; 35475 # Color.Builder resultBuilder = 35476 # Color 35477 # .newBuilder() 35478 # .setRed(red / denominator) 35479 # .setGreen(green / denominator) 35480 # .setBlue(blue / denominator); 35481 # int alpha = color.getAlpha(); 35482 # if (alpha != 255) { 35483 # result.setAlpha( 35484 # FloatValue 35485 # .newBuilder() 35486 # .setValue(((float) alpha) / denominator) 35487 # .build()); 35488 # } 35489 # return resultBuilder.build(); 35490 # } 35491 # // ... 35492 # 35493 # Example (iOS / Obj-C): 35494 # 35495 # // ... 35496 # static UIColor* fromProto(Color* protocolor) { 35497 # float red = [protocolor red]; 35498 # float green = [protocolor green]; 35499 # float blue = [protocolor blue]; 35500 # FloatValue* alpha_wrapper = [protocolor alpha]; 35501 # float alpha = 1.0; 35502 # if (alpha_wrapper != nil) { 35503 # alpha = [alpha_wrapper value]; 35504 # } 35505 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 35506 # } 35507 # 35508 # static Color* toProto(UIColor* color) { 35509 # CGFloat red, green, blue, alpha; 35510 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 35511 # return nil; 35512 # } 35513 # Color* result = [Color alloc] init]; 35514 # [result setRed:red]; 35515 # [result setGreen:green]; 35516 # [result setBlue:blue]; 35517 # if (alpha <= 0.9999) { 35518 # [result setAlpha:floatWrapperWithValue(alpha)]; 35519 # } 35520 # [result autorelease]; 35521 # return result; 35522 # } 35523 # // ... 35524 # 35525 # Example (JavaScript): 35526 # 35527 # // ... 35528 # 35529 # var protoToCssColor = function(rgb_color) { 35530 # var redFrac = rgb_color.red || 0.0; 35531 # var greenFrac = rgb_color.green || 0.0; 35532 # var blueFrac = rgb_color.blue || 0.0; 35533 # var red = Math.floor(redFrac * 255); 35534 # var green = Math.floor(greenFrac * 255); 35535 # var blue = Math.floor(blueFrac * 255); 35536 # 35537 # if (!('alpha' in rgb_color)) { 35538 # return rgbToCssColor_(red, green, blue); 35539 # } 35540 # 35541 # var alphaFrac = rgb_color.alpha.value || 0.0; 35542 # var rgbParams = [red, green, blue].join(','); 35543 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 35544 # }; 35545 # 35546 # var rgbToCssColor_ = function(red, green, blue) { 35547 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 35548 # var hexString = rgbNumber.toString(16); 35549 # var missingZeros = 6 - hexString.length; 35550 # var resultBuilder = ['#']; 35551 # for (var i = 0; i < missingZeros; i++) { 35552 # resultBuilder.push('0'); 35553 # } 35554 # resultBuilder.push(hexString); 35555 # return resultBuilder.join(''); 35556 # }; 35557 # 35558 # // ... 35559 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 35560 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 35561 # the final pixel color is defined by the equation: 35562 # 35563 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 35564 # 35565 # This means that a value of 1.0 corresponds to a solid color, whereas 35566 # a value of 0.0 corresponds to a completely transparent color. This 35567 # uses a wrapper message rather than a simple float scalar so that it is 35568 # possible to distinguish between a default value and the value being unset. 35569 # If omitted, this color object is to be rendered as a solid color 35570 # (as if the alpha value had been explicitly given with a value of 1.0). 35571 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 35572 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 35573 }, 35574 "bold": True or False, # True if the text is bold. 35575 "strikethrough": True or False, # True if the text has a strikethrough. 35576 "fontFamily": "A String", # The font family. 35577 "fontSize": 42, # The size of the font. 35578 "italic": True or False, # True if the text is italicized. 35579 "underline": True or False, # True if the text is underlined. 35580 }, 35581 "textRotation": { # The rotation applied to text in a cell. # The rotation applied to text in a cell 35582 "angle": 42, # The angle between the standard orientation and the desired orientation. 35583 # Measured in degrees. Valid values are between -90 and 90. Positive 35584 # angles are angled upwards, negative are angled downwards. 35585 # 35586 # Note: For LTR text direction positive angles are in the counterclockwise 35587 # direction, whereas for RTL they are in the clockwise direction 35588 "vertical": True or False, # If true, text reads top to bottom, but the orientation of individual 35589 # characters is unchanged. 35590 # For example: 35591 # 35592 # | V | 35593 # | e | 35594 # | r | 35595 # | t | 35596 # | i | 35597 # | c | 35598 # | a | 35599 # | l | 35600 }, 35601 "hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell. 35602 "borders": { # The borders of the cell. # The borders of the cell. 35603 "top": { # A border along a cell. # The top border of the cell. 35604 "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border. 35605 # for simplicity of conversion to/from color representations in various 35606 # languages over compactness; for example, the fields of this representation 35607 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 35608 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 35609 # method in iOS; and, with just a little work, it can be easily formatted into 35610 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 35611 # 35612 # Example (Java): 35613 # 35614 # import com.google.type.Color; 35615 # 35616 # // ... 35617 # public static java.awt.Color fromProto(Color protocolor) { 35618 # float alpha = protocolor.hasAlpha() 35619 # ? protocolor.getAlpha().getValue() 35620 # : 1.0; 35621 # 35622 # return new java.awt.Color( 35623 # protocolor.getRed(), 35624 # protocolor.getGreen(), 35625 # protocolor.getBlue(), 35626 # alpha); 35627 # } 35628 # 35629 # public static Color toProto(java.awt.Color color) { 35630 # float red = (float) color.getRed(); 35631 # float green = (float) color.getGreen(); 35632 # float blue = (float) color.getBlue(); 35633 # float denominator = 255.0; 35634 # Color.Builder resultBuilder = 35635 # Color 35636 # .newBuilder() 35637 # .setRed(red / denominator) 35638 # .setGreen(green / denominator) 35639 # .setBlue(blue / denominator); 35640 # int alpha = color.getAlpha(); 35641 # if (alpha != 255) { 35642 # result.setAlpha( 35643 # FloatValue 35644 # .newBuilder() 35645 # .setValue(((float) alpha) / denominator) 35646 # .build()); 35647 # } 35648 # return resultBuilder.build(); 35649 # } 35650 # // ... 35651 # 35652 # Example (iOS / Obj-C): 35653 # 35654 # // ... 35655 # static UIColor* fromProto(Color* protocolor) { 35656 # float red = [protocolor red]; 35657 # float green = [protocolor green]; 35658 # float blue = [protocolor blue]; 35659 # FloatValue* alpha_wrapper = [protocolor alpha]; 35660 # float alpha = 1.0; 35661 # if (alpha_wrapper != nil) { 35662 # alpha = [alpha_wrapper value]; 35663 # } 35664 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 35665 # } 35666 # 35667 # static Color* toProto(UIColor* color) { 35668 # CGFloat red, green, blue, alpha; 35669 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 35670 # return nil; 35671 # } 35672 # Color* result = [Color alloc] init]; 35673 # [result setRed:red]; 35674 # [result setGreen:green]; 35675 # [result setBlue:blue]; 35676 # if (alpha <= 0.9999) { 35677 # [result setAlpha:floatWrapperWithValue(alpha)]; 35678 # } 35679 # [result autorelease]; 35680 # return result; 35681 # } 35682 # // ... 35683 # 35684 # Example (JavaScript): 35685 # 35686 # // ... 35687 # 35688 # var protoToCssColor = function(rgb_color) { 35689 # var redFrac = rgb_color.red || 0.0; 35690 # var greenFrac = rgb_color.green || 0.0; 35691 # var blueFrac = rgb_color.blue || 0.0; 35692 # var red = Math.floor(redFrac * 255); 35693 # var green = Math.floor(greenFrac * 255); 35694 # var blue = Math.floor(blueFrac * 255); 35695 # 35696 # if (!('alpha' in rgb_color)) { 35697 # return rgbToCssColor_(red, green, blue); 35698 # } 35699 # 35700 # var alphaFrac = rgb_color.alpha.value || 0.0; 35701 # var rgbParams = [red, green, blue].join(','); 35702 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 35703 # }; 35704 # 35705 # var rgbToCssColor_ = function(red, green, blue) { 35706 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 35707 # var hexString = rgbNumber.toString(16); 35708 # var missingZeros = 6 - hexString.length; 35709 # var resultBuilder = ['#']; 35710 # for (var i = 0; i < missingZeros; i++) { 35711 # resultBuilder.push('0'); 35712 # } 35713 # resultBuilder.push(hexString); 35714 # return resultBuilder.join(''); 35715 # }; 35716 # 35717 # // ... 35718 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 35719 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 35720 # the final pixel color is defined by the equation: 35721 # 35722 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 35723 # 35724 # This means that a value of 1.0 corresponds to a solid color, whereas 35725 # a value of 0.0 corresponds to a completely transparent color. This 35726 # uses a wrapper message rather than a simple float scalar so that it is 35727 # possible to distinguish between a default value and the value being unset. 35728 # If omitted, this color object is to be rendered as a solid color 35729 # (as if the alpha value had been explicitly given with a value of 1.0). 35730 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 35731 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 35732 }, 35733 "width": 42, # The width of the border, in pixels. 35734 # Deprecated; the width is determined by the "style" field. 35735 "style": "A String", # The style of the border. 35736 }, 35737 "right": { # A border along a cell. # The right border of the cell. 35738 "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border. 35739 # for simplicity of conversion to/from color representations in various 35740 # languages over compactness; for example, the fields of this representation 35741 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 35742 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 35743 # method in iOS; and, with just a little work, it can be easily formatted into 35744 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 35745 # 35746 # Example (Java): 35747 # 35748 # import com.google.type.Color; 35749 # 35750 # // ... 35751 # public static java.awt.Color fromProto(Color protocolor) { 35752 # float alpha = protocolor.hasAlpha() 35753 # ? protocolor.getAlpha().getValue() 35754 # : 1.0; 35755 # 35756 # return new java.awt.Color( 35757 # protocolor.getRed(), 35758 # protocolor.getGreen(), 35759 # protocolor.getBlue(), 35760 # alpha); 35761 # } 35762 # 35763 # public static Color toProto(java.awt.Color color) { 35764 # float red = (float) color.getRed(); 35765 # float green = (float) color.getGreen(); 35766 # float blue = (float) color.getBlue(); 35767 # float denominator = 255.0; 35768 # Color.Builder resultBuilder = 35769 # Color 35770 # .newBuilder() 35771 # .setRed(red / denominator) 35772 # .setGreen(green / denominator) 35773 # .setBlue(blue / denominator); 35774 # int alpha = color.getAlpha(); 35775 # if (alpha != 255) { 35776 # result.setAlpha( 35777 # FloatValue 35778 # .newBuilder() 35779 # .setValue(((float) alpha) / denominator) 35780 # .build()); 35781 # } 35782 # return resultBuilder.build(); 35783 # } 35784 # // ... 35785 # 35786 # Example (iOS / Obj-C): 35787 # 35788 # // ... 35789 # static UIColor* fromProto(Color* protocolor) { 35790 # float red = [protocolor red]; 35791 # float green = [protocolor green]; 35792 # float blue = [protocolor blue]; 35793 # FloatValue* alpha_wrapper = [protocolor alpha]; 35794 # float alpha = 1.0; 35795 # if (alpha_wrapper != nil) { 35796 # alpha = [alpha_wrapper value]; 35797 # } 35798 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 35799 # } 35800 # 35801 # static Color* toProto(UIColor* color) { 35802 # CGFloat red, green, blue, alpha; 35803 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 35804 # return nil; 35805 # } 35806 # Color* result = [Color alloc] init]; 35807 # [result setRed:red]; 35808 # [result setGreen:green]; 35809 # [result setBlue:blue]; 35810 # if (alpha <= 0.9999) { 35811 # [result setAlpha:floatWrapperWithValue(alpha)]; 35812 # } 35813 # [result autorelease]; 35814 # return result; 35815 # } 35816 # // ... 35817 # 35818 # Example (JavaScript): 35819 # 35820 # // ... 35821 # 35822 # var protoToCssColor = function(rgb_color) { 35823 # var redFrac = rgb_color.red || 0.0; 35824 # var greenFrac = rgb_color.green || 0.0; 35825 # var blueFrac = rgb_color.blue || 0.0; 35826 # var red = Math.floor(redFrac * 255); 35827 # var green = Math.floor(greenFrac * 255); 35828 # var blue = Math.floor(blueFrac * 255); 35829 # 35830 # if (!('alpha' in rgb_color)) { 35831 # return rgbToCssColor_(red, green, blue); 35832 # } 35833 # 35834 # var alphaFrac = rgb_color.alpha.value || 0.0; 35835 # var rgbParams = [red, green, blue].join(','); 35836 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 35837 # }; 35838 # 35839 # var rgbToCssColor_ = function(red, green, blue) { 35840 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 35841 # var hexString = rgbNumber.toString(16); 35842 # var missingZeros = 6 - hexString.length; 35843 # var resultBuilder = ['#']; 35844 # for (var i = 0; i < missingZeros; i++) { 35845 # resultBuilder.push('0'); 35846 # } 35847 # resultBuilder.push(hexString); 35848 # return resultBuilder.join(''); 35849 # }; 35850 # 35851 # // ... 35852 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 35853 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 35854 # the final pixel color is defined by the equation: 35855 # 35856 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 35857 # 35858 # This means that a value of 1.0 corresponds to a solid color, whereas 35859 # a value of 0.0 corresponds to a completely transparent color. This 35860 # uses a wrapper message rather than a simple float scalar so that it is 35861 # possible to distinguish between a default value and the value being unset. 35862 # If omitted, this color object is to be rendered as a solid color 35863 # (as if the alpha value had been explicitly given with a value of 1.0). 35864 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 35865 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 35866 }, 35867 "width": 42, # The width of the border, in pixels. 35868 # Deprecated; the width is determined by the "style" field. 35869 "style": "A String", # The style of the border. 35870 }, 35871 "bottom": { # A border along a cell. # The bottom border of the cell. 35872 "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border. 35873 # for simplicity of conversion to/from color representations in various 35874 # languages over compactness; for example, the fields of this representation 35875 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 35876 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 35877 # method in iOS; and, with just a little work, it can be easily formatted into 35878 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 35879 # 35880 # Example (Java): 35881 # 35882 # import com.google.type.Color; 35883 # 35884 # // ... 35885 # public static java.awt.Color fromProto(Color protocolor) { 35886 # float alpha = protocolor.hasAlpha() 35887 # ? protocolor.getAlpha().getValue() 35888 # : 1.0; 35889 # 35890 # return new java.awt.Color( 35891 # protocolor.getRed(), 35892 # protocolor.getGreen(), 35893 # protocolor.getBlue(), 35894 # alpha); 35895 # } 35896 # 35897 # public static Color toProto(java.awt.Color color) { 35898 # float red = (float) color.getRed(); 35899 # float green = (float) color.getGreen(); 35900 # float blue = (float) color.getBlue(); 35901 # float denominator = 255.0; 35902 # Color.Builder resultBuilder = 35903 # Color 35904 # .newBuilder() 35905 # .setRed(red / denominator) 35906 # .setGreen(green / denominator) 35907 # .setBlue(blue / denominator); 35908 # int alpha = color.getAlpha(); 35909 # if (alpha != 255) { 35910 # result.setAlpha( 35911 # FloatValue 35912 # .newBuilder() 35913 # .setValue(((float) alpha) / denominator) 35914 # .build()); 35915 # } 35916 # return resultBuilder.build(); 35917 # } 35918 # // ... 35919 # 35920 # Example (iOS / Obj-C): 35921 # 35922 # // ... 35923 # static UIColor* fromProto(Color* protocolor) { 35924 # float red = [protocolor red]; 35925 # float green = [protocolor green]; 35926 # float blue = [protocolor blue]; 35927 # FloatValue* alpha_wrapper = [protocolor alpha]; 35928 # float alpha = 1.0; 35929 # if (alpha_wrapper != nil) { 35930 # alpha = [alpha_wrapper value]; 35931 # } 35932 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 35933 # } 35934 # 35935 # static Color* toProto(UIColor* color) { 35936 # CGFloat red, green, blue, alpha; 35937 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 35938 # return nil; 35939 # } 35940 # Color* result = [Color alloc] init]; 35941 # [result setRed:red]; 35942 # [result setGreen:green]; 35943 # [result setBlue:blue]; 35944 # if (alpha <= 0.9999) { 35945 # [result setAlpha:floatWrapperWithValue(alpha)]; 35946 # } 35947 # [result autorelease]; 35948 # return result; 35949 # } 35950 # // ... 35951 # 35952 # Example (JavaScript): 35953 # 35954 # // ... 35955 # 35956 # var protoToCssColor = function(rgb_color) { 35957 # var redFrac = rgb_color.red || 0.0; 35958 # var greenFrac = rgb_color.green || 0.0; 35959 # var blueFrac = rgb_color.blue || 0.0; 35960 # var red = Math.floor(redFrac * 255); 35961 # var green = Math.floor(greenFrac * 255); 35962 # var blue = Math.floor(blueFrac * 255); 35963 # 35964 # if (!('alpha' in rgb_color)) { 35965 # return rgbToCssColor_(red, green, blue); 35966 # } 35967 # 35968 # var alphaFrac = rgb_color.alpha.value || 0.0; 35969 # var rgbParams = [red, green, blue].join(','); 35970 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 35971 # }; 35972 # 35973 # var rgbToCssColor_ = function(red, green, blue) { 35974 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 35975 # var hexString = rgbNumber.toString(16); 35976 # var missingZeros = 6 - hexString.length; 35977 # var resultBuilder = ['#']; 35978 # for (var i = 0; i < missingZeros; i++) { 35979 # resultBuilder.push('0'); 35980 # } 35981 # resultBuilder.push(hexString); 35982 # return resultBuilder.join(''); 35983 # }; 35984 # 35985 # // ... 35986 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 35987 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 35988 # the final pixel color is defined by the equation: 35989 # 35990 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 35991 # 35992 # This means that a value of 1.0 corresponds to a solid color, whereas 35993 # a value of 0.0 corresponds to a completely transparent color. This 35994 # uses a wrapper message rather than a simple float scalar so that it is 35995 # possible to distinguish between a default value and the value being unset. 35996 # If omitted, this color object is to be rendered as a solid color 35997 # (as if the alpha value had been explicitly given with a value of 1.0). 35998 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 35999 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 36000 }, 36001 "width": 42, # The width of the border, in pixels. 36002 # Deprecated; the width is determined by the "style" field. 36003 "style": "A String", # The style of the border. 36004 }, 36005 "left": { # A border along a cell. # The left border of the cell. 36006 "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border. 36007 # for simplicity of conversion to/from color representations in various 36008 # languages over compactness; for example, the fields of this representation 36009 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 36010 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 36011 # method in iOS; and, with just a little work, it can be easily formatted into 36012 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 36013 # 36014 # Example (Java): 36015 # 36016 # import com.google.type.Color; 36017 # 36018 # // ... 36019 # public static java.awt.Color fromProto(Color protocolor) { 36020 # float alpha = protocolor.hasAlpha() 36021 # ? protocolor.getAlpha().getValue() 36022 # : 1.0; 36023 # 36024 # return new java.awt.Color( 36025 # protocolor.getRed(), 36026 # protocolor.getGreen(), 36027 # protocolor.getBlue(), 36028 # alpha); 36029 # } 36030 # 36031 # public static Color toProto(java.awt.Color color) { 36032 # float red = (float) color.getRed(); 36033 # float green = (float) color.getGreen(); 36034 # float blue = (float) color.getBlue(); 36035 # float denominator = 255.0; 36036 # Color.Builder resultBuilder = 36037 # Color 36038 # .newBuilder() 36039 # .setRed(red / denominator) 36040 # .setGreen(green / denominator) 36041 # .setBlue(blue / denominator); 36042 # int alpha = color.getAlpha(); 36043 # if (alpha != 255) { 36044 # result.setAlpha( 36045 # FloatValue 36046 # .newBuilder() 36047 # .setValue(((float) alpha) / denominator) 36048 # .build()); 36049 # } 36050 # return resultBuilder.build(); 36051 # } 36052 # // ... 36053 # 36054 # Example (iOS / Obj-C): 36055 # 36056 # // ... 36057 # static UIColor* fromProto(Color* protocolor) { 36058 # float red = [protocolor red]; 36059 # float green = [protocolor green]; 36060 # float blue = [protocolor blue]; 36061 # FloatValue* alpha_wrapper = [protocolor alpha]; 36062 # float alpha = 1.0; 36063 # if (alpha_wrapper != nil) { 36064 # alpha = [alpha_wrapper value]; 36065 # } 36066 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 36067 # } 36068 # 36069 # static Color* toProto(UIColor* color) { 36070 # CGFloat red, green, blue, alpha; 36071 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 36072 # return nil; 36073 # } 36074 # Color* result = [Color alloc] init]; 36075 # [result setRed:red]; 36076 # [result setGreen:green]; 36077 # [result setBlue:blue]; 36078 # if (alpha <= 0.9999) { 36079 # [result setAlpha:floatWrapperWithValue(alpha)]; 36080 # } 36081 # [result autorelease]; 36082 # return result; 36083 # } 36084 # // ... 36085 # 36086 # Example (JavaScript): 36087 # 36088 # // ... 36089 # 36090 # var protoToCssColor = function(rgb_color) { 36091 # var redFrac = rgb_color.red || 0.0; 36092 # var greenFrac = rgb_color.green || 0.0; 36093 # var blueFrac = rgb_color.blue || 0.0; 36094 # var red = Math.floor(redFrac * 255); 36095 # var green = Math.floor(greenFrac * 255); 36096 # var blue = Math.floor(blueFrac * 255); 36097 # 36098 # if (!('alpha' in rgb_color)) { 36099 # return rgbToCssColor_(red, green, blue); 36100 # } 36101 # 36102 # var alphaFrac = rgb_color.alpha.value || 0.0; 36103 # var rgbParams = [red, green, blue].join(','); 36104 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 36105 # }; 36106 # 36107 # var rgbToCssColor_ = function(red, green, blue) { 36108 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 36109 # var hexString = rgbNumber.toString(16); 36110 # var missingZeros = 6 - hexString.length; 36111 # var resultBuilder = ['#']; 36112 # for (var i = 0; i < missingZeros; i++) { 36113 # resultBuilder.push('0'); 36114 # } 36115 # resultBuilder.push(hexString); 36116 # return resultBuilder.join(''); 36117 # }; 36118 # 36119 # // ... 36120 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 36121 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 36122 # the final pixel color is defined by the equation: 36123 # 36124 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 36125 # 36126 # This means that a value of 1.0 corresponds to a solid color, whereas 36127 # a value of 0.0 corresponds to a completely transparent color. This 36128 # uses a wrapper message rather than a simple float scalar so that it is 36129 # possible to distinguish between a default value and the value being unset. 36130 # If omitted, this color object is to be rendered as a solid color 36131 # (as if the alpha value had been explicitly given with a value of 1.0). 36132 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 36133 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 36134 }, 36135 "width": 42, # The width of the border, in pixels. 36136 # Deprecated; the width is determined by the "style" field. 36137 "style": "A String", # The style of the border. 36138 }, 36139 }, 36140 "wrapStrategy": "A String", # The wrap strategy for the value in the cell. 36141 }, 36142 "autoRecalc": "A String", # The amount of time to wait before volatile functions are recalculated. 36143 "iterativeCalculationSettings": { # Settings to control how circular dependencies are resolved with iterative # Determines whether and how circular references are resolved with iterative 36144 # calculation. Absence of this field means that circular references will 36145 # result in calculation errors. 36146 # calculation. 36147 "convergenceThreshold": 3.14, # When iterative calculation is enabled and successive results differ by 36148 # less than this threshold value, the calculation rounds stop. 36149 "maxIterations": 42, # When iterative calculation is enabled, the maximum number of calculation 36150 # rounds to perform. 36151 }, 36152 "timeZone": "A String", # The time zone of the spreadsheet, in CLDR format such as 36153 # `America/New_York`. If the time zone isn't recognized, this may 36154 # be a custom time zone such as `GMT-07:00`. 36155 }, 36156 "sheets": [ # The sheets that are part of a spreadsheet. 36157 { # A sheet in a spreadsheet. 36158 "conditionalFormats": [ # The conditional format rules in this sheet. 36159 { # A rule describing a conditional format. 36160 "ranges": [ # The ranges that will be formatted if the condition is true. 36161 # All the ranges must be on the same grid. 36162 { # A range on a sheet. 36163 # All indexes are zero-based. 36164 # Indexes are half open, e.g the start index is inclusive 36165 # and the end index is exclusive -- [start_index, end_index). 36166 # Missing indexes indicate the range is unbounded on that side. 36167 # 36168 # For example, if `"Sheet1"` is sheet ID 0, then: 36169 # 36170 # `Sheet1!A1:A1 == sheet_id: 0, 36171 # start_row_index: 0, end_row_index: 1, 36172 # start_column_index: 0, end_column_index: 1` 36173 # 36174 # `Sheet1!A3:B4 == sheet_id: 0, 36175 # start_row_index: 2, end_row_index: 4, 36176 # start_column_index: 0, end_column_index: 2` 36177 # 36178 # `Sheet1!A:B == sheet_id: 0, 36179 # start_column_index: 0, end_column_index: 2` 36180 # 36181 # `Sheet1!A5:B == sheet_id: 0, 36182 # start_row_index: 4, 36183 # start_column_index: 0, end_column_index: 2` 36184 # 36185 # `Sheet1 == sheet_id:0` 36186 # 36187 # The start index must always be less than or equal to the end index. 36188 # If the start index equals the end index, then the range is empty. 36189 # Empty ranges are typically not meaningful and are usually rendered in the 36190 # UI as `#REF!`. 36191 "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded. 36192 "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded. 36193 "sheetId": 42, # The sheet this range is on. 36194 "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded. 36195 "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded. 36196 }, 36197 ], 36198 "booleanRule": { # A rule that may or may not match, depending on the condition. # The formatting is either "on" or "off" according to the rule. 36199 "condition": { # A condition that can evaluate to true or false. # The condition of the rule. If the condition evaluates to true, 36200 # the format will be applied. 36201 # BooleanConditions are used by conditional formatting, 36202 # data validation, and the criteria in filters. 36203 "values": [ # The values of the condition. The number of supported values depends 36204 # on the condition type. Some support zero values, 36205 # others one or two values, 36206 # and ConditionType.ONE_OF_LIST supports an arbitrary number of values. 36207 { # The value of the condition. 36208 "relativeDate": "A String", # A relative date (based on the current date). 36209 # Valid only if the type is 36210 # DATE_BEFORE, 36211 # DATE_AFTER, 36212 # DATE_ON_OR_BEFORE or 36213 # DATE_ON_OR_AFTER. 36214 # 36215 # Relative dates are not supported in data validation. 36216 # They are supported only in conditional formatting and 36217 # conditional filters. 36218 "userEnteredValue": "A String", # A value the condition is based on. 36219 # The value will be parsed as if the user typed into a cell. 36220 # Formulas are supported (and must begin with an `=`). 36221 }, 36222 ], 36223 "type": "A String", # The type of condition. 36224 }, 36225 "format": { # The format of a cell. # The format to apply. 36226 # Conditional formatting can only apply a subset of formatting: 36227 # bold, italic, 36228 # strikethrough, 36229 # foreground color & 36230 # background color. 36231 "numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user. 36232 "pattern": "A String", # Pattern string used for formatting. If not set, a default pattern based on 36233 # the user's locale will be used if necessary for the given type. 36234 # See the [Date and Number Formats guide](/sheets/api/guides/formats) for more 36235 # information about the supported patterns. 36236 "type": "A String", # The type of the number format. 36237 # When writing, this field must be set. 36238 }, 36239 "textDirection": "A String", # The direction of the text in the cell. 36240 "padding": { # The amount of padding around the cell, in pixels. # The padding of the cell. 36241 # When updating padding, every field must be specified. 36242 "top": 42, # The top padding of the cell. 36243 "right": 42, # The right padding of the cell. 36244 "bottom": 42, # The bottom padding of the cell. 36245 "left": 42, # The left padding of the cell. 36246 }, 36247 "verticalAlignment": "A String", # The vertical alignment of the value in the cell. 36248 "backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell. 36249 # for simplicity of conversion to/from color representations in various 36250 # languages over compactness; for example, the fields of this representation 36251 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 36252 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 36253 # method in iOS; and, with just a little work, it can be easily formatted into 36254 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 36255 # 36256 # Example (Java): 36257 # 36258 # import com.google.type.Color; 36259 # 36260 # // ... 36261 # public static java.awt.Color fromProto(Color protocolor) { 36262 # float alpha = protocolor.hasAlpha() 36263 # ? protocolor.getAlpha().getValue() 36264 # : 1.0; 36265 # 36266 # return new java.awt.Color( 36267 # protocolor.getRed(), 36268 # protocolor.getGreen(), 36269 # protocolor.getBlue(), 36270 # alpha); 36271 # } 36272 # 36273 # public static Color toProto(java.awt.Color color) { 36274 # float red = (float) color.getRed(); 36275 # float green = (float) color.getGreen(); 36276 # float blue = (float) color.getBlue(); 36277 # float denominator = 255.0; 36278 # Color.Builder resultBuilder = 36279 # Color 36280 # .newBuilder() 36281 # .setRed(red / denominator) 36282 # .setGreen(green / denominator) 36283 # .setBlue(blue / denominator); 36284 # int alpha = color.getAlpha(); 36285 # if (alpha != 255) { 36286 # result.setAlpha( 36287 # FloatValue 36288 # .newBuilder() 36289 # .setValue(((float) alpha) / denominator) 36290 # .build()); 36291 # } 36292 # return resultBuilder.build(); 36293 # } 36294 # // ... 36295 # 36296 # Example (iOS / Obj-C): 36297 # 36298 # // ... 36299 # static UIColor* fromProto(Color* protocolor) { 36300 # float red = [protocolor red]; 36301 # float green = [protocolor green]; 36302 # float blue = [protocolor blue]; 36303 # FloatValue* alpha_wrapper = [protocolor alpha]; 36304 # float alpha = 1.0; 36305 # if (alpha_wrapper != nil) { 36306 # alpha = [alpha_wrapper value]; 36307 # } 36308 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 36309 # } 36310 # 36311 # static Color* toProto(UIColor* color) { 36312 # CGFloat red, green, blue, alpha; 36313 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 36314 # return nil; 36315 # } 36316 # Color* result = [Color alloc] init]; 36317 # [result setRed:red]; 36318 # [result setGreen:green]; 36319 # [result setBlue:blue]; 36320 # if (alpha <= 0.9999) { 36321 # [result setAlpha:floatWrapperWithValue(alpha)]; 36322 # } 36323 # [result autorelease]; 36324 # return result; 36325 # } 36326 # // ... 36327 # 36328 # Example (JavaScript): 36329 # 36330 # // ... 36331 # 36332 # var protoToCssColor = function(rgb_color) { 36333 # var redFrac = rgb_color.red || 0.0; 36334 # var greenFrac = rgb_color.green || 0.0; 36335 # var blueFrac = rgb_color.blue || 0.0; 36336 # var red = Math.floor(redFrac * 255); 36337 # var green = Math.floor(greenFrac * 255); 36338 # var blue = Math.floor(blueFrac * 255); 36339 # 36340 # if (!('alpha' in rgb_color)) { 36341 # return rgbToCssColor_(red, green, blue); 36342 # } 36343 # 36344 # var alphaFrac = rgb_color.alpha.value || 0.0; 36345 # var rgbParams = [red, green, blue].join(','); 36346 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 36347 # }; 36348 # 36349 # var rgbToCssColor_ = function(red, green, blue) { 36350 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 36351 # var hexString = rgbNumber.toString(16); 36352 # var missingZeros = 6 - hexString.length; 36353 # var resultBuilder = ['#']; 36354 # for (var i = 0; i < missingZeros; i++) { 36355 # resultBuilder.push('0'); 36356 # } 36357 # resultBuilder.push(hexString); 36358 # return resultBuilder.join(''); 36359 # }; 36360 # 36361 # // ... 36362 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 36363 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 36364 # the final pixel color is defined by the equation: 36365 # 36366 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 36367 # 36368 # This means that a value of 1.0 corresponds to a solid color, whereas 36369 # a value of 0.0 corresponds to a completely transparent color. This 36370 # uses a wrapper message rather than a simple float scalar so that it is 36371 # possible to distinguish between a default value and the value being unset. 36372 # If omitted, this color object is to be rendered as a solid color 36373 # (as if the alpha value had been explicitly given with a value of 1.0). 36374 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 36375 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 36376 }, 36377 "horizontalAlignment": "A String", # The horizontal alignment of the value in the cell. 36378 "textFormat": { # The format of a run of text in a cell. # The format of the text in the cell (unless overridden by a format run). 36379 # Absent values indicate that the field isn't specified. 36380 "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text. 36381 # for simplicity of conversion to/from color representations in various 36382 # languages over compactness; for example, the fields of this representation 36383 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 36384 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 36385 # method in iOS; and, with just a little work, it can be easily formatted into 36386 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 36387 # 36388 # Example (Java): 36389 # 36390 # import com.google.type.Color; 36391 # 36392 # // ... 36393 # public static java.awt.Color fromProto(Color protocolor) { 36394 # float alpha = protocolor.hasAlpha() 36395 # ? protocolor.getAlpha().getValue() 36396 # : 1.0; 36397 # 36398 # return new java.awt.Color( 36399 # protocolor.getRed(), 36400 # protocolor.getGreen(), 36401 # protocolor.getBlue(), 36402 # alpha); 36403 # } 36404 # 36405 # public static Color toProto(java.awt.Color color) { 36406 # float red = (float) color.getRed(); 36407 # float green = (float) color.getGreen(); 36408 # float blue = (float) color.getBlue(); 36409 # float denominator = 255.0; 36410 # Color.Builder resultBuilder = 36411 # Color 36412 # .newBuilder() 36413 # .setRed(red / denominator) 36414 # .setGreen(green / denominator) 36415 # .setBlue(blue / denominator); 36416 # int alpha = color.getAlpha(); 36417 # if (alpha != 255) { 36418 # result.setAlpha( 36419 # FloatValue 36420 # .newBuilder() 36421 # .setValue(((float) alpha) / denominator) 36422 # .build()); 36423 # } 36424 # return resultBuilder.build(); 36425 # } 36426 # // ... 36427 # 36428 # Example (iOS / Obj-C): 36429 # 36430 # // ... 36431 # static UIColor* fromProto(Color* protocolor) { 36432 # float red = [protocolor red]; 36433 # float green = [protocolor green]; 36434 # float blue = [protocolor blue]; 36435 # FloatValue* alpha_wrapper = [protocolor alpha]; 36436 # float alpha = 1.0; 36437 # if (alpha_wrapper != nil) { 36438 # alpha = [alpha_wrapper value]; 36439 # } 36440 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 36441 # } 36442 # 36443 # static Color* toProto(UIColor* color) { 36444 # CGFloat red, green, blue, alpha; 36445 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 36446 # return nil; 36447 # } 36448 # Color* result = [Color alloc] init]; 36449 # [result setRed:red]; 36450 # [result setGreen:green]; 36451 # [result setBlue:blue]; 36452 # if (alpha <= 0.9999) { 36453 # [result setAlpha:floatWrapperWithValue(alpha)]; 36454 # } 36455 # [result autorelease]; 36456 # return result; 36457 # } 36458 # // ... 36459 # 36460 # Example (JavaScript): 36461 # 36462 # // ... 36463 # 36464 # var protoToCssColor = function(rgb_color) { 36465 # var redFrac = rgb_color.red || 0.0; 36466 # var greenFrac = rgb_color.green || 0.0; 36467 # var blueFrac = rgb_color.blue || 0.0; 36468 # var red = Math.floor(redFrac * 255); 36469 # var green = Math.floor(greenFrac * 255); 36470 # var blue = Math.floor(blueFrac * 255); 36471 # 36472 # if (!('alpha' in rgb_color)) { 36473 # return rgbToCssColor_(red, green, blue); 36474 # } 36475 # 36476 # var alphaFrac = rgb_color.alpha.value || 0.0; 36477 # var rgbParams = [red, green, blue].join(','); 36478 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 36479 # }; 36480 # 36481 # var rgbToCssColor_ = function(red, green, blue) { 36482 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 36483 # var hexString = rgbNumber.toString(16); 36484 # var missingZeros = 6 - hexString.length; 36485 # var resultBuilder = ['#']; 36486 # for (var i = 0; i < missingZeros; i++) { 36487 # resultBuilder.push('0'); 36488 # } 36489 # resultBuilder.push(hexString); 36490 # return resultBuilder.join(''); 36491 # }; 36492 # 36493 # // ... 36494 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 36495 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 36496 # the final pixel color is defined by the equation: 36497 # 36498 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 36499 # 36500 # This means that a value of 1.0 corresponds to a solid color, whereas 36501 # a value of 0.0 corresponds to a completely transparent color. This 36502 # uses a wrapper message rather than a simple float scalar so that it is 36503 # possible to distinguish between a default value and the value being unset. 36504 # If omitted, this color object is to be rendered as a solid color 36505 # (as if the alpha value had been explicitly given with a value of 1.0). 36506 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 36507 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 36508 }, 36509 "bold": True or False, # True if the text is bold. 36510 "strikethrough": True or False, # True if the text has a strikethrough. 36511 "fontFamily": "A String", # The font family. 36512 "fontSize": 42, # The size of the font. 36513 "italic": True or False, # True if the text is italicized. 36514 "underline": True or False, # True if the text is underlined. 36515 }, 36516 "textRotation": { # The rotation applied to text in a cell. # The rotation applied to text in a cell 36517 "angle": 42, # The angle between the standard orientation and the desired orientation. 36518 # Measured in degrees. Valid values are between -90 and 90. Positive 36519 # angles are angled upwards, negative are angled downwards. 36520 # 36521 # Note: For LTR text direction positive angles are in the counterclockwise 36522 # direction, whereas for RTL they are in the clockwise direction 36523 "vertical": True or False, # If true, text reads top to bottom, but the orientation of individual 36524 # characters is unchanged. 36525 # For example: 36526 # 36527 # | V | 36528 # | e | 36529 # | r | 36530 # | t | 36531 # | i | 36532 # | c | 36533 # | a | 36534 # | l | 36535 }, 36536 "hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell. 36537 "borders": { # The borders of the cell. # The borders of the cell. 36538 "top": { # A border along a cell. # The top border of the cell. 36539 "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border. 36540 # for simplicity of conversion to/from color representations in various 36541 # languages over compactness; for example, the fields of this representation 36542 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 36543 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 36544 # method in iOS; and, with just a little work, it can be easily formatted into 36545 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 36546 # 36547 # Example (Java): 36548 # 36549 # import com.google.type.Color; 36550 # 36551 # // ... 36552 # public static java.awt.Color fromProto(Color protocolor) { 36553 # float alpha = protocolor.hasAlpha() 36554 # ? protocolor.getAlpha().getValue() 36555 # : 1.0; 36556 # 36557 # return new java.awt.Color( 36558 # protocolor.getRed(), 36559 # protocolor.getGreen(), 36560 # protocolor.getBlue(), 36561 # alpha); 36562 # } 36563 # 36564 # public static Color toProto(java.awt.Color color) { 36565 # float red = (float) color.getRed(); 36566 # float green = (float) color.getGreen(); 36567 # float blue = (float) color.getBlue(); 36568 # float denominator = 255.0; 36569 # Color.Builder resultBuilder = 36570 # Color 36571 # .newBuilder() 36572 # .setRed(red / denominator) 36573 # .setGreen(green / denominator) 36574 # .setBlue(blue / denominator); 36575 # int alpha = color.getAlpha(); 36576 # if (alpha != 255) { 36577 # result.setAlpha( 36578 # FloatValue 36579 # .newBuilder() 36580 # .setValue(((float) alpha) / denominator) 36581 # .build()); 36582 # } 36583 # return resultBuilder.build(); 36584 # } 36585 # // ... 36586 # 36587 # Example (iOS / Obj-C): 36588 # 36589 # // ... 36590 # static UIColor* fromProto(Color* protocolor) { 36591 # float red = [protocolor red]; 36592 # float green = [protocolor green]; 36593 # float blue = [protocolor blue]; 36594 # FloatValue* alpha_wrapper = [protocolor alpha]; 36595 # float alpha = 1.0; 36596 # if (alpha_wrapper != nil) { 36597 # alpha = [alpha_wrapper value]; 36598 # } 36599 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 36600 # } 36601 # 36602 # static Color* toProto(UIColor* color) { 36603 # CGFloat red, green, blue, alpha; 36604 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 36605 # return nil; 36606 # } 36607 # Color* result = [Color alloc] init]; 36608 # [result setRed:red]; 36609 # [result setGreen:green]; 36610 # [result setBlue:blue]; 36611 # if (alpha <= 0.9999) { 36612 # [result setAlpha:floatWrapperWithValue(alpha)]; 36613 # } 36614 # [result autorelease]; 36615 # return result; 36616 # } 36617 # // ... 36618 # 36619 # Example (JavaScript): 36620 # 36621 # // ... 36622 # 36623 # var protoToCssColor = function(rgb_color) { 36624 # var redFrac = rgb_color.red || 0.0; 36625 # var greenFrac = rgb_color.green || 0.0; 36626 # var blueFrac = rgb_color.blue || 0.0; 36627 # var red = Math.floor(redFrac * 255); 36628 # var green = Math.floor(greenFrac * 255); 36629 # var blue = Math.floor(blueFrac * 255); 36630 # 36631 # if (!('alpha' in rgb_color)) { 36632 # return rgbToCssColor_(red, green, blue); 36633 # } 36634 # 36635 # var alphaFrac = rgb_color.alpha.value || 0.0; 36636 # var rgbParams = [red, green, blue].join(','); 36637 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 36638 # }; 36639 # 36640 # var rgbToCssColor_ = function(red, green, blue) { 36641 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 36642 # var hexString = rgbNumber.toString(16); 36643 # var missingZeros = 6 - hexString.length; 36644 # var resultBuilder = ['#']; 36645 # for (var i = 0; i < missingZeros; i++) { 36646 # resultBuilder.push('0'); 36647 # } 36648 # resultBuilder.push(hexString); 36649 # return resultBuilder.join(''); 36650 # }; 36651 # 36652 # // ... 36653 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 36654 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 36655 # the final pixel color is defined by the equation: 36656 # 36657 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 36658 # 36659 # This means that a value of 1.0 corresponds to a solid color, whereas 36660 # a value of 0.0 corresponds to a completely transparent color. This 36661 # uses a wrapper message rather than a simple float scalar so that it is 36662 # possible to distinguish between a default value and the value being unset. 36663 # If omitted, this color object is to be rendered as a solid color 36664 # (as if the alpha value had been explicitly given with a value of 1.0). 36665 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 36666 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 36667 }, 36668 "width": 42, # The width of the border, in pixels. 36669 # Deprecated; the width is determined by the "style" field. 36670 "style": "A String", # The style of the border. 36671 }, 36672 "right": { # A border along a cell. # The right border of the cell. 36673 "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border. 36674 # for simplicity of conversion to/from color representations in various 36675 # languages over compactness; for example, the fields of this representation 36676 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 36677 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 36678 # method in iOS; and, with just a little work, it can be easily formatted into 36679 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 36680 # 36681 # Example (Java): 36682 # 36683 # import com.google.type.Color; 36684 # 36685 # // ... 36686 # public static java.awt.Color fromProto(Color protocolor) { 36687 # float alpha = protocolor.hasAlpha() 36688 # ? protocolor.getAlpha().getValue() 36689 # : 1.0; 36690 # 36691 # return new java.awt.Color( 36692 # protocolor.getRed(), 36693 # protocolor.getGreen(), 36694 # protocolor.getBlue(), 36695 # alpha); 36696 # } 36697 # 36698 # public static Color toProto(java.awt.Color color) { 36699 # float red = (float) color.getRed(); 36700 # float green = (float) color.getGreen(); 36701 # float blue = (float) color.getBlue(); 36702 # float denominator = 255.0; 36703 # Color.Builder resultBuilder = 36704 # Color 36705 # .newBuilder() 36706 # .setRed(red / denominator) 36707 # .setGreen(green / denominator) 36708 # .setBlue(blue / denominator); 36709 # int alpha = color.getAlpha(); 36710 # if (alpha != 255) { 36711 # result.setAlpha( 36712 # FloatValue 36713 # .newBuilder() 36714 # .setValue(((float) alpha) / denominator) 36715 # .build()); 36716 # } 36717 # return resultBuilder.build(); 36718 # } 36719 # // ... 36720 # 36721 # Example (iOS / Obj-C): 36722 # 36723 # // ... 36724 # static UIColor* fromProto(Color* protocolor) { 36725 # float red = [protocolor red]; 36726 # float green = [protocolor green]; 36727 # float blue = [protocolor blue]; 36728 # FloatValue* alpha_wrapper = [protocolor alpha]; 36729 # float alpha = 1.0; 36730 # if (alpha_wrapper != nil) { 36731 # alpha = [alpha_wrapper value]; 36732 # } 36733 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 36734 # } 36735 # 36736 # static Color* toProto(UIColor* color) { 36737 # CGFloat red, green, blue, alpha; 36738 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 36739 # return nil; 36740 # } 36741 # Color* result = [Color alloc] init]; 36742 # [result setRed:red]; 36743 # [result setGreen:green]; 36744 # [result setBlue:blue]; 36745 # if (alpha <= 0.9999) { 36746 # [result setAlpha:floatWrapperWithValue(alpha)]; 36747 # } 36748 # [result autorelease]; 36749 # return result; 36750 # } 36751 # // ... 36752 # 36753 # Example (JavaScript): 36754 # 36755 # // ... 36756 # 36757 # var protoToCssColor = function(rgb_color) { 36758 # var redFrac = rgb_color.red || 0.0; 36759 # var greenFrac = rgb_color.green || 0.0; 36760 # var blueFrac = rgb_color.blue || 0.0; 36761 # var red = Math.floor(redFrac * 255); 36762 # var green = Math.floor(greenFrac * 255); 36763 # var blue = Math.floor(blueFrac * 255); 36764 # 36765 # if (!('alpha' in rgb_color)) { 36766 # return rgbToCssColor_(red, green, blue); 36767 # } 36768 # 36769 # var alphaFrac = rgb_color.alpha.value || 0.0; 36770 # var rgbParams = [red, green, blue].join(','); 36771 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 36772 # }; 36773 # 36774 # var rgbToCssColor_ = function(red, green, blue) { 36775 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 36776 # var hexString = rgbNumber.toString(16); 36777 # var missingZeros = 6 - hexString.length; 36778 # var resultBuilder = ['#']; 36779 # for (var i = 0; i < missingZeros; i++) { 36780 # resultBuilder.push('0'); 36781 # } 36782 # resultBuilder.push(hexString); 36783 # return resultBuilder.join(''); 36784 # }; 36785 # 36786 # // ... 36787 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 36788 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 36789 # the final pixel color is defined by the equation: 36790 # 36791 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 36792 # 36793 # This means that a value of 1.0 corresponds to a solid color, whereas 36794 # a value of 0.0 corresponds to a completely transparent color. This 36795 # uses a wrapper message rather than a simple float scalar so that it is 36796 # possible to distinguish between a default value and the value being unset. 36797 # If omitted, this color object is to be rendered as a solid color 36798 # (as if the alpha value had been explicitly given with a value of 1.0). 36799 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 36800 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 36801 }, 36802 "width": 42, # The width of the border, in pixels. 36803 # Deprecated; the width is determined by the "style" field. 36804 "style": "A String", # The style of the border. 36805 }, 36806 "bottom": { # A border along a cell. # The bottom border of the cell. 36807 "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border. 36808 # for simplicity of conversion to/from color representations in various 36809 # languages over compactness; for example, the fields of this representation 36810 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 36811 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 36812 # method in iOS; and, with just a little work, it can be easily formatted into 36813 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 36814 # 36815 # Example (Java): 36816 # 36817 # import com.google.type.Color; 36818 # 36819 # // ... 36820 # public static java.awt.Color fromProto(Color protocolor) { 36821 # float alpha = protocolor.hasAlpha() 36822 # ? protocolor.getAlpha().getValue() 36823 # : 1.0; 36824 # 36825 # return new java.awt.Color( 36826 # protocolor.getRed(), 36827 # protocolor.getGreen(), 36828 # protocolor.getBlue(), 36829 # alpha); 36830 # } 36831 # 36832 # public static Color toProto(java.awt.Color color) { 36833 # float red = (float) color.getRed(); 36834 # float green = (float) color.getGreen(); 36835 # float blue = (float) color.getBlue(); 36836 # float denominator = 255.0; 36837 # Color.Builder resultBuilder = 36838 # Color 36839 # .newBuilder() 36840 # .setRed(red / denominator) 36841 # .setGreen(green / denominator) 36842 # .setBlue(blue / denominator); 36843 # int alpha = color.getAlpha(); 36844 # if (alpha != 255) { 36845 # result.setAlpha( 36846 # FloatValue 36847 # .newBuilder() 36848 # .setValue(((float) alpha) / denominator) 36849 # .build()); 36850 # } 36851 # return resultBuilder.build(); 36852 # } 36853 # // ... 36854 # 36855 # Example (iOS / Obj-C): 36856 # 36857 # // ... 36858 # static UIColor* fromProto(Color* protocolor) { 36859 # float red = [protocolor red]; 36860 # float green = [protocolor green]; 36861 # float blue = [protocolor blue]; 36862 # FloatValue* alpha_wrapper = [protocolor alpha]; 36863 # float alpha = 1.0; 36864 # if (alpha_wrapper != nil) { 36865 # alpha = [alpha_wrapper value]; 36866 # } 36867 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 36868 # } 36869 # 36870 # static Color* toProto(UIColor* color) { 36871 # CGFloat red, green, blue, alpha; 36872 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 36873 # return nil; 36874 # } 36875 # Color* result = [Color alloc] init]; 36876 # [result setRed:red]; 36877 # [result setGreen:green]; 36878 # [result setBlue:blue]; 36879 # if (alpha <= 0.9999) { 36880 # [result setAlpha:floatWrapperWithValue(alpha)]; 36881 # } 36882 # [result autorelease]; 36883 # return result; 36884 # } 36885 # // ... 36886 # 36887 # Example (JavaScript): 36888 # 36889 # // ... 36890 # 36891 # var protoToCssColor = function(rgb_color) { 36892 # var redFrac = rgb_color.red || 0.0; 36893 # var greenFrac = rgb_color.green || 0.0; 36894 # var blueFrac = rgb_color.blue || 0.0; 36895 # var red = Math.floor(redFrac * 255); 36896 # var green = Math.floor(greenFrac * 255); 36897 # var blue = Math.floor(blueFrac * 255); 36898 # 36899 # if (!('alpha' in rgb_color)) { 36900 # return rgbToCssColor_(red, green, blue); 36901 # } 36902 # 36903 # var alphaFrac = rgb_color.alpha.value || 0.0; 36904 # var rgbParams = [red, green, blue].join(','); 36905 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 36906 # }; 36907 # 36908 # var rgbToCssColor_ = function(red, green, blue) { 36909 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 36910 # var hexString = rgbNumber.toString(16); 36911 # var missingZeros = 6 - hexString.length; 36912 # var resultBuilder = ['#']; 36913 # for (var i = 0; i < missingZeros; i++) { 36914 # resultBuilder.push('0'); 36915 # } 36916 # resultBuilder.push(hexString); 36917 # return resultBuilder.join(''); 36918 # }; 36919 # 36920 # // ... 36921 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 36922 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 36923 # the final pixel color is defined by the equation: 36924 # 36925 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 36926 # 36927 # This means that a value of 1.0 corresponds to a solid color, whereas 36928 # a value of 0.0 corresponds to a completely transparent color. This 36929 # uses a wrapper message rather than a simple float scalar so that it is 36930 # possible to distinguish between a default value and the value being unset. 36931 # If omitted, this color object is to be rendered as a solid color 36932 # (as if the alpha value had been explicitly given with a value of 1.0). 36933 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 36934 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 36935 }, 36936 "width": 42, # The width of the border, in pixels. 36937 # Deprecated; the width is determined by the "style" field. 36938 "style": "A String", # The style of the border. 36939 }, 36940 "left": { # A border along a cell. # The left border of the cell. 36941 "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border. 36942 # for simplicity of conversion to/from color representations in various 36943 # languages over compactness; for example, the fields of this representation 36944 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 36945 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 36946 # method in iOS; and, with just a little work, it can be easily formatted into 36947 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 36948 # 36949 # Example (Java): 36950 # 36951 # import com.google.type.Color; 36952 # 36953 # // ... 36954 # public static java.awt.Color fromProto(Color protocolor) { 36955 # float alpha = protocolor.hasAlpha() 36956 # ? protocolor.getAlpha().getValue() 36957 # : 1.0; 36958 # 36959 # return new java.awt.Color( 36960 # protocolor.getRed(), 36961 # protocolor.getGreen(), 36962 # protocolor.getBlue(), 36963 # alpha); 36964 # } 36965 # 36966 # public static Color toProto(java.awt.Color color) { 36967 # float red = (float) color.getRed(); 36968 # float green = (float) color.getGreen(); 36969 # float blue = (float) color.getBlue(); 36970 # float denominator = 255.0; 36971 # Color.Builder resultBuilder = 36972 # Color 36973 # .newBuilder() 36974 # .setRed(red / denominator) 36975 # .setGreen(green / denominator) 36976 # .setBlue(blue / denominator); 36977 # int alpha = color.getAlpha(); 36978 # if (alpha != 255) { 36979 # result.setAlpha( 36980 # FloatValue 36981 # .newBuilder() 36982 # .setValue(((float) alpha) / denominator) 36983 # .build()); 36984 # } 36985 # return resultBuilder.build(); 36986 # } 36987 # // ... 36988 # 36989 # Example (iOS / Obj-C): 36990 # 36991 # // ... 36992 # static UIColor* fromProto(Color* protocolor) { 36993 # float red = [protocolor red]; 36994 # float green = [protocolor green]; 36995 # float blue = [protocolor blue]; 36996 # FloatValue* alpha_wrapper = [protocolor alpha]; 36997 # float alpha = 1.0; 36998 # if (alpha_wrapper != nil) { 36999 # alpha = [alpha_wrapper value]; 37000 # } 37001 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 37002 # } 37003 # 37004 # static Color* toProto(UIColor* color) { 37005 # CGFloat red, green, blue, alpha; 37006 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 37007 # return nil; 37008 # } 37009 # Color* result = [Color alloc] init]; 37010 # [result setRed:red]; 37011 # [result setGreen:green]; 37012 # [result setBlue:blue]; 37013 # if (alpha <= 0.9999) { 37014 # [result setAlpha:floatWrapperWithValue(alpha)]; 37015 # } 37016 # [result autorelease]; 37017 # return result; 37018 # } 37019 # // ... 37020 # 37021 # Example (JavaScript): 37022 # 37023 # // ... 37024 # 37025 # var protoToCssColor = function(rgb_color) { 37026 # var redFrac = rgb_color.red || 0.0; 37027 # var greenFrac = rgb_color.green || 0.0; 37028 # var blueFrac = rgb_color.blue || 0.0; 37029 # var red = Math.floor(redFrac * 255); 37030 # var green = Math.floor(greenFrac * 255); 37031 # var blue = Math.floor(blueFrac * 255); 37032 # 37033 # if (!('alpha' in rgb_color)) { 37034 # return rgbToCssColor_(red, green, blue); 37035 # } 37036 # 37037 # var alphaFrac = rgb_color.alpha.value || 0.0; 37038 # var rgbParams = [red, green, blue].join(','); 37039 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 37040 # }; 37041 # 37042 # var rgbToCssColor_ = function(red, green, blue) { 37043 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 37044 # var hexString = rgbNumber.toString(16); 37045 # var missingZeros = 6 - hexString.length; 37046 # var resultBuilder = ['#']; 37047 # for (var i = 0; i < missingZeros; i++) { 37048 # resultBuilder.push('0'); 37049 # } 37050 # resultBuilder.push(hexString); 37051 # return resultBuilder.join(''); 37052 # }; 37053 # 37054 # // ... 37055 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 37056 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 37057 # the final pixel color is defined by the equation: 37058 # 37059 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 37060 # 37061 # This means that a value of 1.0 corresponds to a solid color, whereas 37062 # a value of 0.0 corresponds to a completely transparent color. This 37063 # uses a wrapper message rather than a simple float scalar so that it is 37064 # possible to distinguish between a default value and the value being unset. 37065 # If omitted, this color object is to be rendered as a solid color 37066 # (as if the alpha value had been explicitly given with a value of 1.0). 37067 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 37068 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 37069 }, 37070 "width": 42, # The width of the border, in pixels. 37071 # Deprecated; the width is determined by the "style" field. 37072 "style": "A String", # The style of the border. 37073 }, 37074 }, 37075 "wrapStrategy": "A String", # The wrap strategy for the value in the cell. 37076 }, 37077 }, 37078 "gradientRule": { # A rule that applies a gradient color scale format, based on # The formatting will vary based on the gradients in the rule. 37079 # the interpolation points listed. The format of a cell will vary 37080 # based on its contents as compared to the values of the interpolation 37081 # points. 37082 "maxpoint": { # A single interpolation point on a gradient conditional format. # The final interpolation point. 37083 # These pin the gradient color scale according to the color, 37084 # type and value chosen. 37085 "color": { # Represents a color in the RGBA color space. This representation is designed # The color this interpolation point should use. 37086 # for simplicity of conversion to/from color representations in various 37087 # languages over compactness; for example, the fields of this representation 37088 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 37089 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 37090 # method in iOS; and, with just a little work, it can be easily formatted into 37091 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 37092 # 37093 # Example (Java): 37094 # 37095 # import com.google.type.Color; 37096 # 37097 # // ... 37098 # public static java.awt.Color fromProto(Color protocolor) { 37099 # float alpha = protocolor.hasAlpha() 37100 # ? protocolor.getAlpha().getValue() 37101 # : 1.0; 37102 # 37103 # return new java.awt.Color( 37104 # protocolor.getRed(), 37105 # protocolor.getGreen(), 37106 # protocolor.getBlue(), 37107 # alpha); 37108 # } 37109 # 37110 # public static Color toProto(java.awt.Color color) { 37111 # float red = (float) color.getRed(); 37112 # float green = (float) color.getGreen(); 37113 # float blue = (float) color.getBlue(); 37114 # float denominator = 255.0; 37115 # Color.Builder resultBuilder = 37116 # Color 37117 # .newBuilder() 37118 # .setRed(red / denominator) 37119 # .setGreen(green / denominator) 37120 # .setBlue(blue / denominator); 37121 # int alpha = color.getAlpha(); 37122 # if (alpha != 255) { 37123 # result.setAlpha( 37124 # FloatValue 37125 # .newBuilder() 37126 # .setValue(((float) alpha) / denominator) 37127 # .build()); 37128 # } 37129 # return resultBuilder.build(); 37130 # } 37131 # // ... 37132 # 37133 # Example (iOS / Obj-C): 37134 # 37135 # // ... 37136 # static UIColor* fromProto(Color* protocolor) { 37137 # float red = [protocolor red]; 37138 # float green = [protocolor green]; 37139 # float blue = [protocolor blue]; 37140 # FloatValue* alpha_wrapper = [protocolor alpha]; 37141 # float alpha = 1.0; 37142 # if (alpha_wrapper != nil) { 37143 # alpha = [alpha_wrapper value]; 37144 # } 37145 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 37146 # } 37147 # 37148 # static Color* toProto(UIColor* color) { 37149 # CGFloat red, green, blue, alpha; 37150 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 37151 # return nil; 37152 # } 37153 # Color* result = [Color alloc] init]; 37154 # [result setRed:red]; 37155 # [result setGreen:green]; 37156 # [result setBlue:blue]; 37157 # if (alpha <= 0.9999) { 37158 # [result setAlpha:floatWrapperWithValue(alpha)]; 37159 # } 37160 # [result autorelease]; 37161 # return result; 37162 # } 37163 # // ... 37164 # 37165 # Example (JavaScript): 37166 # 37167 # // ... 37168 # 37169 # var protoToCssColor = function(rgb_color) { 37170 # var redFrac = rgb_color.red || 0.0; 37171 # var greenFrac = rgb_color.green || 0.0; 37172 # var blueFrac = rgb_color.blue || 0.0; 37173 # var red = Math.floor(redFrac * 255); 37174 # var green = Math.floor(greenFrac * 255); 37175 # var blue = Math.floor(blueFrac * 255); 37176 # 37177 # if (!('alpha' in rgb_color)) { 37178 # return rgbToCssColor_(red, green, blue); 37179 # } 37180 # 37181 # var alphaFrac = rgb_color.alpha.value || 0.0; 37182 # var rgbParams = [red, green, blue].join(','); 37183 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 37184 # }; 37185 # 37186 # var rgbToCssColor_ = function(red, green, blue) { 37187 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 37188 # var hexString = rgbNumber.toString(16); 37189 # var missingZeros = 6 - hexString.length; 37190 # var resultBuilder = ['#']; 37191 # for (var i = 0; i < missingZeros; i++) { 37192 # resultBuilder.push('0'); 37193 # } 37194 # resultBuilder.push(hexString); 37195 # return resultBuilder.join(''); 37196 # }; 37197 # 37198 # // ... 37199 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 37200 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 37201 # the final pixel color is defined by the equation: 37202 # 37203 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 37204 # 37205 # This means that a value of 1.0 corresponds to a solid color, whereas 37206 # a value of 0.0 corresponds to a completely transparent color. This 37207 # uses a wrapper message rather than a simple float scalar so that it is 37208 # possible to distinguish between a default value and the value being unset. 37209 # If omitted, this color object is to be rendered as a solid color 37210 # (as if the alpha value had been explicitly given with a value of 1.0). 37211 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 37212 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 37213 }, 37214 "type": "A String", # How the value should be interpreted. 37215 "value": "A String", # The value this interpolation point uses. May be a formula. 37216 # Unused if type is MIN or 37217 # MAX. 37218 }, 37219 "midpoint": { # A single interpolation point on a gradient conditional format. # An optional midway interpolation point. 37220 # These pin the gradient color scale according to the color, 37221 # type and value chosen. 37222 "color": { # Represents a color in the RGBA color space. This representation is designed # The color this interpolation point should use. 37223 # for simplicity of conversion to/from color representations in various 37224 # languages over compactness; for example, the fields of this representation 37225 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 37226 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 37227 # method in iOS; and, with just a little work, it can be easily formatted into 37228 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 37229 # 37230 # Example (Java): 37231 # 37232 # import com.google.type.Color; 37233 # 37234 # // ... 37235 # public static java.awt.Color fromProto(Color protocolor) { 37236 # float alpha = protocolor.hasAlpha() 37237 # ? protocolor.getAlpha().getValue() 37238 # : 1.0; 37239 # 37240 # return new java.awt.Color( 37241 # protocolor.getRed(), 37242 # protocolor.getGreen(), 37243 # protocolor.getBlue(), 37244 # alpha); 37245 # } 37246 # 37247 # public static Color toProto(java.awt.Color color) { 37248 # float red = (float) color.getRed(); 37249 # float green = (float) color.getGreen(); 37250 # float blue = (float) color.getBlue(); 37251 # float denominator = 255.0; 37252 # Color.Builder resultBuilder = 37253 # Color 37254 # .newBuilder() 37255 # .setRed(red / denominator) 37256 # .setGreen(green / denominator) 37257 # .setBlue(blue / denominator); 37258 # int alpha = color.getAlpha(); 37259 # if (alpha != 255) { 37260 # result.setAlpha( 37261 # FloatValue 37262 # .newBuilder() 37263 # .setValue(((float) alpha) / denominator) 37264 # .build()); 37265 # } 37266 # return resultBuilder.build(); 37267 # } 37268 # // ... 37269 # 37270 # Example (iOS / Obj-C): 37271 # 37272 # // ... 37273 # static UIColor* fromProto(Color* protocolor) { 37274 # float red = [protocolor red]; 37275 # float green = [protocolor green]; 37276 # float blue = [protocolor blue]; 37277 # FloatValue* alpha_wrapper = [protocolor alpha]; 37278 # float alpha = 1.0; 37279 # if (alpha_wrapper != nil) { 37280 # alpha = [alpha_wrapper value]; 37281 # } 37282 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 37283 # } 37284 # 37285 # static Color* toProto(UIColor* color) { 37286 # CGFloat red, green, blue, alpha; 37287 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 37288 # return nil; 37289 # } 37290 # Color* result = [Color alloc] init]; 37291 # [result setRed:red]; 37292 # [result setGreen:green]; 37293 # [result setBlue:blue]; 37294 # if (alpha <= 0.9999) { 37295 # [result setAlpha:floatWrapperWithValue(alpha)]; 37296 # } 37297 # [result autorelease]; 37298 # return result; 37299 # } 37300 # // ... 37301 # 37302 # Example (JavaScript): 37303 # 37304 # // ... 37305 # 37306 # var protoToCssColor = function(rgb_color) { 37307 # var redFrac = rgb_color.red || 0.0; 37308 # var greenFrac = rgb_color.green || 0.0; 37309 # var blueFrac = rgb_color.blue || 0.0; 37310 # var red = Math.floor(redFrac * 255); 37311 # var green = Math.floor(greenFrac * 255); 37312 # var blue = Math.floor(blueFrac * 255); 37313 # 37314 # if (!('alpha' in rgb_color)) { 37315 # return rgbToCssColor_(red, green, blue); 37316 # } 37317 # 37318 # var alphaFrac = rgb_color.alpha.value || 0.0; 37319 # var rgbParams = [red, green, blue].join(','); 37320 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 37321 # }; 37322 # 37323 # var rgbToCssColor_ = function(red, green, blue) { 37324 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 37325 # var hexString = rgbNumber.toString(16); 37326 # var missingZeros = 6 - hexString.length; 37327 # var resultBuilder = ['#']; 37328 # for (var i = 0; i < missingZeros; i++) { 37329 # resultBuilder.push('0'); 37330 # } 37331 # resultBuilder.push(hexString); 37332 # return resultBuilder.join(''); 37333 # }; 37334 # 37335 # // ... 37336 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 37337 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 37338 # the final pixel color is defined by the equation: 37339 # 37340 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 37341 # 37342 # This means that a value of 1.0 corresponds to a solid color, whereas 37343 # a value of 0.0 corresponds to a completely transparent color. This 37344 # uses a wrapper message rather than a simple float scalar so that it is 37345 # possible to distinguish between a default value and the value being unset. 37346 # If omitted, this color object is to be rendered as a solid color 37347 # (as if the alpha value had been explicitly given with a value of 1.0). 37348 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 37349 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 37350 }, 37351 "type": "A String", # How the value should be interpreted. 37352 "value": "A String", # The value this interpolation point uses. May be a formula. 37353 # Unused if type is MIN or 37354 # MAX. 37355 }, 37356 "minpoint": { # A single interpolation point on a gradient conditional format. # The starting interpolation point. 37357 # These pin the gradient color scale according to the color, 37358 # type and value chosen. 37359 "color": { # Represents a color in the RGBA color space. This representation is designed # The color this interpolation point should use. 37360 # for simplicity of conversion to/from color representations in various 37361 # languages over compactness; for example, the fields of this representation 37362 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 37363 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 37364 # method in iOS; and, with just a little work, it can be easily formatted into 37365 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 37366 # 37367 # Example (Java): 37368 # 37369 # import com.google.type.Color; 37370 # 37371 # // ... 37372 # public static java.awt.Color fromProto(Color protocolor) { 37373 # float alpha = protocolor.hasAlpha() 37374 # ? protocolor.getAlpha().getValue() 37375 # : 1.0; 37376 # 37377 # return new java.awt.Color( 37378 # protocolor.getRed(), 37379 # protocolor.getGreen(), 37380 # protocolor.getBlue(), 37381 # alpha); 37382 # } 37383 # 37384 # public static Color toProto(java.awt.Color color) { 37385 # float red = (float) color.getRed(); 37386 # float green = (float) color.getGreen(); 37387 # float blue = (float) color.getBlue(); 37388 # float denominator = 255.0; 37389 # Color.Builder resultBuilder = 37390 # Color 37391 # .newBuilder() 37392 # .setRed(red / denominator) 37393 # .setGreen(green / denominator) 37394 # .setBlue(blue / denominator); 37395 # int alpha = color.getAlpha(); 37396 # if (alpha != 255) { 37397 # result.setAlpha( 37398 # FloatValue 37399 # .newBuilder() 37400 # .setValue(((float) alpha) / denominator) 37401 # .build()); 37402 # } 37403 # return resultBuilder.build(); 37404 # } 37405 # // ... 37406 # 37407 # Example (iOS / Obj-C): 37408 # 37409 # // ... 37410 # static UIColor* fromProto(Color* protocolor) { 37411 # float red = [protocolor red]; 37412 # float green = [protocolor green]; 37413 # float blue = [protocolor blue]; 37414 # FloatValue* alpha_wrapper = [protocolor alpha]; 37415 # float alpha = 1.0; 37416 # if (alpha_wrapper != nil) { 37417 # alpha = [alpha_wrapper value]; 37418 # } 37419 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 37420 # } 37421 # 37422 # static Color* toProto(UIColor* color) { 37423 # CGFloat red, green, blue, alpha; 37424 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 37425 # return nil; 37426 # } 37427 # Color* result = [Color alloc] init]; 37428 # [result setRed:red]; 37429 # [result setGreen:green]; 37430 # [result setBlue:blue]; 37431 # if (alpha <= 0.9999) { 37432 # [result setAlpha:floatWrapperWithValue(alpha)]; 37433 # } 37434 # [result autorelease]; 37435 # return result; 37436 # } 37437 # // ... 37438 # 37439 # Example (JavaScript): 37440 # 37441 # // ... 37442 # 37443 # var protoToCssColor = function(rgb_color) { 37444 # var redFrac = rgb_color.red || 0.0; 37445 # var greenFrac = rgb_color.green || 0.0; 37446 # var blueFrac = rgb_color.blue || 0.0; 37447 # var red = Math.floor(redFrac * 255); 37448 # var green = Math.floor(greenFrac * 255); 37449 # var blue = Math.floor(blueFrac * 255); 37450 # 37451 # if (!('alpha' in rgb_color)) { 37452 # return rgbToCssColor_(red, green, blue); 37453 # } 37454 # 37455 # var alphaFrac = rgb_color.alpha.value || 0.0; 37456 # var rgbParams = [red, green, blue].join(','); 37457 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 37458 # }; 37459 # 37460 # var rgbToCssColor_ = function(red, green, blue) { 37461 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 37462 # var hexString = rgbNumber.toString(16); 37463 # var missingZeros = 6 - hexString.length; 37464 # var resultBuilder = ['#']; 37465 # for (var i = 0; i < missingZeros; i++) { 37466 # resultBuilder.push('0'); 37467 # } 37468 # resultBuilder.push(hexString); 37469 # return resultBuilder.join(''); 37470 # }; 37471 # 37472 # // ... 37473 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 37474 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 37475 # the final pixel color is defined by the equation: 37476 # 37477 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 37478 # 37479 # This means that a value of 1.0 corresponds to a solid color, whereas 37480 # a value of 0.0 corresponds to a completely transparent color. This 37481 # uses a wrapper message rather than a simple float scalar so that it is 37482 # possible to distinguish between a default value and the value being unset. 37483 # If omitted, this color object is to be rendered as a solid color 37484 # (as if the alpha value had been explicitly given with a value of 1.0). 37485 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 37486 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 37487 }, 37488 "type": "A String", # How the value should be interpreted. 37489 "value": "A String", # The value this interpolation point uses. May be a formula. 37490 # Unused if type is MIN or 37491 # MAX. 37492 }, 37493 }, 37494 }, 37495 ], 37496 "bandedRanges": [ # The banded (i.e. alternating colors) ranges on this sheet. 37497 { # A banded (alternating colors) range in a sheet. 37498 "range": { # A range on a sheet. # The range over which these properties are applied. 37499 # All indexes are zero-based. 37500 # Indexes are half open, e.g the start index is inclusive 37501 # and the end index is exclusive -- [start_index, end_index). 37502 # Missing indexes indicate the range is unbounded on that side. 37503 # 37504 # For example, if `"Sheet1"` is sheet ID 0, then: 37505 # 37506 # `Sheet1!A1:A1 == sheet_id: 0, 37507 # start_row_index: 0, end_row_index: 1, 37508 # start_column_index: 0, end_column_index: 1` 37509 # 37510 # `Sheet1!A3:B4 == sheet_id: 0, 37511 # start_row_index: 2, end_row_index: 4, 37512 # start_column_index: 0, end_column_index: 2` 37513 # 37514 # `Sheet1!A:B == sheet_id: 0, 37515 # start_column_index: 0, end_column_index: 2` 37516 # 37517 # `Sheet1!A5:B == sheet_id: 0, 37518 # start_row_index: 4, 37519 # start_column_index: 0, end_column_index: 2` 37520 # 37521 # `Sheet1 == sheet_id:0` 37522 # 37523 # The start index must always be less than or equal to the end index. 37524 # If the start index equals the end index, then the range is empty. 37525 # Empty ranges are typically not meaningful and are usually rendered in the 37526 # UI as `#REF!`. 37527 "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded. 37528 "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded. 37529 "sheetId": 42, # The sheet this range is on. 37530 "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded. 37531 "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded. 37532 }, 37533 "columnProperties": { # Properties referring a single dimension (either row or column). If both # Properties for column bands. These properties will be applied on a column- 37534 # by-column basis throughout all the columns in the range. At least one of 37535 # row_properties or column_properties must be specified. 37536 # BandedRange.row_properties and BandedRange.column_properties are 37537 # set, the fill colors are applied to cells according to the following rules: 37538 # 37539 # * header_color and footer_color take priority over band colors. 37540 # * first_band_color takes priority over second_band_color. 37541 # * row_properties takes priority over column_properties. 37542 # 37543 # For example, the first row color takes priority over the first column 37544 # color, but the first column color takes priority over the second row color. 37545 # Similarly, the row header takes priority over the column header in the 37546 # top left cell, but the column header takes priority over the first row 37547 # color if the row header is not set. 37548 "secondBandColor": { # Represents a color in the RGBA color space. This representation is designed # The second color that is alternating. (Required) 37549 # for simplicity of conversion to/from color representations in various 37550 # languages over compactness; for example, the fields of this representation 37551 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 37552 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 37553 # method in iOS; and, with just a little work, it can be easily formatted into 37554 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 37555 # 37556 # Example (Java): 37557 # 37558 # import com.google.type.Color; 37559 # 37560 # // ... 37561 # public static java.awt.Color fromProto(Color protocolor) { 37562 # float alpha = protocolor.hasAlpha() 37563 # ? protocolor.getAlpha().getValue() 37564 # : 1.0; 37565 # 37566 # return new java.awt.Color( 37567 # protocolor.getRed(), 37568 # protocolor.getGreen(), 37569 # protocolor.getBlue(), 37570 # alpha); 37571 # } 37572 # 37573 # public static Color toProto(java.awt.Color color) { 37574 # float red = (float) color.getRed(); 37575 # float green = (float) color.getGreen(); 37576 # float blue = (float) color.getBlue(); 37577 # float denominator = 255.0; 37578 # Color.Builder resultBuilder = 37579 # Color 37580 # .newBuilder() 37581 # .setRed(red / denominator) 37582 # .setGreen(green / denominator) 37583 # .setBlue(blue / denominator); 37584 # int alpha = color.getAlpha(); 37585 # if (alpha != 255) { 37586 # result.setAlpha( 37587 # FloatValue 37588 # .newBuilder() 37589 # .setValue(((float) alpha) / denominator) 37590 # .build()); 37591 # } 37592 # return resultBuilder.build(); 37593 # } 37594 # // ... 37595 # 37596 # Example (iOS / Obj-C): 37597 # 37598 # // ... 37599 # static UIColor* fromProto(Color* protocolor) { 37600 # float red = [protocolor red]; 37601 # float green = [protocolor green]; 37602 # float blue = [protocolor blue]; 37603 # FloatValue* alpha_wrapper = [protocolor alpha]; 37604 # float alpha = 1.0; 37605 # if (alpha_wrapper != nil) { 37606 # alpha = [alpha_wrapper value]; 37607 # } 37608 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 37609 # } 37610 # 37611 # static Color* toProto(UIColor* color) { 37612 # CGFloat red, green, blue, alpha; 37613 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 37614 # return nil; 37615 # } 37616 # Color* result = [Color alloc] init]; 37617 # [result setRed:red]; 37618 # [result setGreen:green]; 37619 # [result setBlue:blue]; 37620 # if (alpha <= 0.9999) { 37621 # [result setAlpha:floatWrapperWithValue(alpha)]; 37622 # } 37623 # [result autorelease]; 37624 # return result; 37625 # } 37626 # // ... 37627 # 37628 # Example (JavaScript): 37629 # 37630 # // ... 37631 # 37632 # var protoToCssColor = function(rgb_color) { 37633 # var redFrac = rgb_color.red || 0.0; 37634 # var greenFrac = rgb_color.green || 0.0; 37635 # var blueFrac = rgb_color.blue || 0.0; 37636 # var red = Math.floor(redFrac * 255); 37637 # var green = Math.floor(greenFrac * 255); 37638 # var blue = Math.floor(blueFrac * 255); 37639 # 37640 # if (!('alpha' in rgb_color)) { 37641 # return rgbToCssColor_(red, green, blue); 37642 # } 37643 # 37644 # var alphaFrac = rgb_color.alpha.value || 0.0; 37645 # var rgbParams = [red, green, blue].join(','); 37646 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 37647 # }; 37648 # 37649 # var rgbToCssColor_ = function(red, green, blue) { 37650 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 37651 # var hexString = rgbNumber.toString(16); 37652 # var missingZeros = 6 - hexString.length; 37653 # var resultBuilder = ['#']; 37654 # for (var i = 0; i < missingZeros; i++) { 37655 # resultBuilder.push('0'); 37656 # } 37657 # resultBuilder.push(hexString); 37658 # return resultBuilder.join(''); 37659 # }; 37660 # 37661 # // ... 37662 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 37663 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 37664 # the final pixel color is defined by the equation: 37665 # 37666 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 37667 # 37668 # This means that a value of 1.0 corresponds to a solid color, whereas 37669 # a value of 0.0 corresponds to a completely transparent color. This 37670 # uses a wrapper message rather than a simple float scalar so that it is 37671 # possible to distinguish between a default value and the value being unset. 37672 # If omitted, this color object is to be rendered as a solid color 37673 # (as if the alpha value had been explicitly given with a value of 1.0). 37674 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 37675 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 37676 }, 37677 "headerColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the first row or column. If this field is set, the first 37678 # row or column will be filled with this color and the colors will 37679 # alternate between first_band_color and second_band_color starting 37680 # from the second row or column. Otherwise, the first row or column will be 37681 # filled with first_band_color and the colors will proceed to alternate 37682 # as they normally would. 37683 # for simplicity of conversion to/from color representations in various 37684 # languages over compactness; for example, the fields of this representation 37685 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 37686 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 37687 # method in iOS; and, with just a little work, it can be easily formatted into 37688 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 37689 # 37690 # Example (Java): 37691 # 37692 # import com.google.type.Color; 37693 # 37694 # // ... 37695 # public static java.awt.Color fromProto(Color protocolor) { 37696 # float alpha = protocolor.hasAlpha() 37697 # ? protocolor.getAlpha().getValue() 37698 # : 1.0; 37699 # 37700 # return new java.awt.Color( 37701 # protocolor.getRed(), 37702 # protocolor.getGreen(), 37703 # protocolor.getBlue(), 37704 # alpha); 37705 # } 37706 # 37707 # public static Color toProto(java.awt.Color color) { 37708 # float red = (float) color.getRed(); 37709 # float green = (float) color.getGreen(); 37710 # float blue = (float) color.getBlue(); 37711 # float denominator = 255.0; 37712 # Color.Builder resultBuilder = 37713 # Color 37714 # .newBuilder() 37715 # .setRed(red / denominator) 37716 # .setGreen(green / denominator) 37717 # .setBlue(blue / denominator); 37718 # int alpha = color.getAlpha(); 37719 # if (alpha != 255) { 37720 # result.setAlpha( 37721 # FloatValue 37722 # .newBuilder() 37723 # .setValue(((float) alpha) / denominator) 37724 # .build()); 37725 # } 37726 # return resultBuilder.build(); 37727 # } 37728 # // ... 37729 # 37730 # Example (iOS / Obj-C): 37731 # 37732 # // ... 37733 # static UIColor* fromProto(Color* protocolor) { 37734 # float red = [protocolor red]; 37735 # float green = [protocolor green]; 37736 # float blue = [protocolor blue]; 37737 # FloatValue* alpha_wrapper = [protocolor alpha]; 37738 # float alpha = 1.0; 37739 # if (alpha_wrapper != nil) { 37740 # alpha = [alpha_wrapper value]; 37741 # } 37742 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 37743 # } 37744 # 37745 # static Color* toProto(UIColor* color) { 37746 # CGFloat red, green, blue, alpha; 37747 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 37748 # return nil; 37749 # } 37750 # Color* result = [Color alloc] init]; 37751 # [result setRed:red]; 37752 # [result setGreen:green]; 37753 # [result setBlue:blue]; 37754 # if (alpha <= 0.9999) { 37755 # [result setAlpha:floatWrapperWithValue(alpha)]; 37756 # } 37757 # [result autorelease]; 37758 # return result; 37759 # } 37760 # // ... 37761 # 37762 # Example (JavaScript): 37763 # 37764 # // ... 37765 # 37766 # var protoToCssColor = function(rgb_color) { 37767 # var redFrac = rgb_color.red || 0.0; 37768 # var greenFrac = rgb_color.green || 0.0; 37769 # var blueFrac = rgb_color.blue || 0.0; 37770 # var red = Math.floor(redFrac * 255); 37771 # var green = Math.floor(greenFrac * 255); 37772 # var blue = Math.floor(blueFrac * 255); 37773 # 37774 # if (!('alpha' in rgb_color)) { 37775 # return rgbToCssColor_(red, green, blue); 37776 # } 37777 # 37778 # var alphaFrac = rgb_color.alpha.value || 0.0; 37779 # var rgbParams = [red, green, blue].join(','); 37780 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 37781 # }; 37782 # 37783 # var rgbToCssColor_ = function(red, green, blue) { 37784 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 37785 # var hexString = rgbNumber.toString(16); 37786 # var missingZeros = 6 - hexString.length; 37787 # var resultBuilder = ['#']; 37788 # for (var i = 0; i < missingZeros; i++) { 37789 # resultBuilder.push('0'); 37790 # } 37791 # resultBuilder.push(hexString); 37792 # return resultBuilder.join(''); 37793 # }; 37794 # 37795 # // ... 37796 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 37797 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 37798 # the final pixel color is defined by the equation: 37799 # 37800 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 37801 # 37802 # This means that a value of 1.0 corresponds to a solid color, whereas 37803 # a value of 0.0 corresponds to a completely transparent color. This 37804 # uses a wrapper message rather than a simple float scalar so that it is 37805 # possible to distinguish between a default value and the value being unset. 37806 # If omitted, this color object is to be rendered as a solid color 37807 # (as if the alpha value had been explicitly given with a value of 1.0). 37808 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 37809 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 37810 }, 37811 "footerColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the last row or column. If this field is not set, the last 37812 # row or column will be filled with either first_band_color or 37813 # second_band_color, depending on the color of the previous row or 37814 # column. 37815 # for simplicity of conversion to/from color representations in various 37816 # languages over compactness; for example, the fields of this representation 37817 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 37818 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 37819 # method in iOS; and, with just a little work, it can be easily formatted into 37820 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 37821 # 37822 # Example (Java): 37823 # 37824 # import com.google.type.Color; 37825 # 37826 # // ... 37827 # public static java.awt.Color fromProto(Color protocolor) { 37828 # float alpha = protocolor.hasAlpha() 37829 # ? protocolor.getAlpha().getValue() 37830 # : 1.0; 37831 # 37832 # return new java.awt.Color( 37833 # protocolor.getRed(), 37834 # protocolor.getGreen(), 37835 # protocolor.getBlue(), 37836 # alpha); 37837 # } 37838 # 37839 # public static Color toProto(java.awt.Color color) { 37840 # float red = (float) color.getRed(); 37841 # float green = (float) color.getGreen(); 37842 # float blue = (float) color.getBlue(); 37843 # float denominator = 255.0; 37844 # Color.Builder resultBuilder = 37845 # Color 37846 # .newBuilder() 37847 # .setRed(red / denominator) 37848 # .setGreen(green / denominator) 37849 # .setBlue(blue / denominator); 37850 # int alpha = color.getAlpha(); 37851 # if (alpha != 255) { 37852 # result.setAlpha( 37853 # FloatValue 37854 # .newBuilder() 37855 # .setValue(((float) alpha) / denominator) 37856 # .build()); 37857 # } 37858 # return resultBuilder.build(); 37859 # } 37860 # // ... 37861 # 37862 # Example (iOS / Obj-C): 37863 # 37864 # // ... 37865 # static UIColor* fromProto(Color* protocolor) { 37866 # float red = [protocolor red]; 37867 # float green = [protocolor green]; 37868 # float blue = [protocolor blue]; 37869 # FloatValue* alpha_wrapper = [protocolor alpha]; 37870 # float alpha = 1.0; 37871 # if (alpha_wrapper != nil) { 37872 # alpha = [alpha_wrapper value]; 37873 # } 37874 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 37875 # } 37876 # 37877 # static Color* toProto(UIColor* color) { 37878 # CGFloat red, green, blue, alpha; 37879 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 37880 # return nil; 37881 # } 37882 # Color* result = [Color alloc] init]; 37883 # [result setRed:red]; 37884 # [result setGreen:green]; 37885 # [result setBlue:blue]; 37886 # if (alpha <= 0.9999) { 37887 # [result setAlpha:floatWrapperWithValue(alpha)]; 37888 # } 37889 # [result autorelease]; 37890 # return result; 37891 # } 37892 # // ... 37893 # 37894 # Example (JavaScript): 37895 # 37896 # // ... 37897 # 37898 # var protoToCssColor = function(rgb_color) { 37899 # var redFrac = rgb_color.red || 0.0; 37900 # var greenFrac = rgb_color.green || 0.0; 37901 # var blueFrac = rgb_color.blue || 0.0; 37902 # var red = Math.floor(redFrac * 255); 37903 # var green = Math.floor(greenFrac * 255); 37904 # var blue = Math.floor(blueFrac * 255); 37905 # 37906 # if (!('alpha' in rgb_color)) { 37907 # return rgbToCssColor_(red, green, blue); 37908 # } 37909 # 37910 # var alphaFrac = rgb_color.alpha.value || 0.0; 37911 # var rgbParams = [red, green, blue].join(','); 37912 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 37913 # }; 37914 # 37915 # var rgbToCssColor_ = function(red, green, blue) { 37916 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 37917 # var hexString = rgbNumber.toString(16); 37918 # var missingZeros = 6 - hexString.length; 37919 # var resultBuilder = ['#']; 37920 # for (var i = 0; i < missingZeros; i++) { 37921 # resultBuilder.push('0'); 37922 # } 37923 # resultBuilder.push(hexString); 37924 # return resultBuilder.join(''); 37925 # }; 37926 # 37927 # // ... 37928 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 37929 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 37930 # the final pixel color is defined by the equation: 37931 # 37932 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 37933 # 37934 # This means that a value of 1.0 corresponds to a solid color, whereas 37935 # a value of 0.0 corresponds to a completely transparent color. This 37936 # uses a wrapper message rather than a simple float scalar so that it is 37937 # possible to distinguish between a default value and the value being unset. 37938 # If omitted, this color object is to be rendered as a solid color 37939 # (as if the alpha value had been explicitly given with a value of 1.0). 37940 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 37941 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 37942 }, 37943 "firstBandColor": { # Represents a color in the RGBA color space. This representation is designed # The first color that is alternating. (Required) 37944 # for simplicity of conversion to/from color representations in various 37945 # languages over compactness; for example, the fields of this representation 37946 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 37947 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 37948 # method in iOS; and, with just a little work, it can be easily formatted into 37949 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 37950 # 37951 # Example (Java): 37952 # 37953 # import com.google.type.Color; 37954 # 37955 # // ... 37956 # public static java.awt.Color fromProto(Color protocolor) { 37957 # float alpha = protocolor.hasAlpha() 37958 # ? protocolor.getAlpha().getValue() 37959 # : 1.0; 37960 # 37961 # return new java.awt.Color( 37962 # protocolor.getRed(), 37963 # protocolor.getGreen(), 37964 # protocolor.getBlue(), 37965 # alpha); 37966 # } 37967 # 37968 # public static Color toProto(java.awt.Color color) { 37969 # float red = (float) color.getRed(); 37970 # float green = (float) color.getGreen(); 37971 # float blue = (float) color.getBlue(); 37972 # float denominator = 255.0; 37973 # Color.Builder resultBuilder = 37974 # Color 37975 # .newBuilder() 37976 # .setRed(red / denominator) 37977 # .setGreen(green / denominator) 37978 # .setBlue(blue / denominator); 37979 # int alpha = color.getAlpha(); 37980 # if (alpha != 255) { 37981 # result.setAlpha( 37982 # FloatValue 37983 # .newBuilder() 37984 # .setValue(((float) alpha) / denominator) 37985 # .build()); 37986 # } 37987 # return resultBuilder.build(); 37988 # } 37989 # // ... 37990 # 37991 # Example (iOS / Obj-C): 37992 # 37993 # // ... 37994 # static UIColor* fromProto(Color* protocolor) { 37995 # float red = [protocolor red]; 37996 # float green = [protocolor green]; 37997 # float blue = [protocolor blue]; 37998 # FloatValue* alpha_wrapper = [protocolor alpha]; 37999 # float alpha = 1.0; 38000 # if (alpha_wrapper != nil) { 38001 # alpha = [alpha_wrapper value]; 38002 # } 38003 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 38004 # } 38005 # 38006 # static Color* toProto(UIColor* color) { 38007 # CGFloat red, green, blue, alpha; 38008 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 38009 # return nil; 38010 # } 38011 # Color* result = [Color alloc] init]; 38012 # [result setRed:red]; 38013 # [result setGreen:green]; 38014 # [result setBlue:blue]; 38015 # if (alpha <= 0.9999) { 38016 # [result setAlpha:floatWrapperWithValue(alpha)]; 38017 # } 38018 # [result autorelease]; 38019 # return result; 38020 # } 38021 # // ... 38022 # 38023 # Example (JavaScript): 38024 # 38025 # // ... 38026 # 38027 # var protoToCssColor = function(rgb_color) { 38028 # var redFrac = rgb_color.red || 0.0; 38029 # var greenFrac = rgb_color.green || 0.0; 38030 # var blueFrac = rgb_color.blue || 0.0; 38031 # var red = Math.floor(redFrac * 255); 38032 # var green = Math.floor(greenFrac * 255); 38033 # var blue = Math.floor(blueFrac * 255); 38034 # 38035 # if (!('alpha' in rgb_color)) { 38036 # return rgbToCssColor_(red, green, blue); 38037 # } 38038 # 38039 # var alphaFrac = rgb_color.alpha.value || 0.0; 38040 # var rgbParams = [red, green, blue].join(','); 38041 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 38042 # }; 38043 # 38044 # var rgbToCssColor_ = function(red, green, blue) { 38045 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 38046 # var hexString = rgbNumber.toString(16); 38047 # var missingZeros = 6 - hexString.length; 38048 # var resultBuilder = ['#']; 38049 # for (var i = 0; i < missingZeros; i++) { 38050 # resultBuilder.push('0'); 38051 # } 38052 # resultBuilder.push(hexString); 38053 # return resultBuilder.join(''); 38054 # }; 38055 # 38056 # // ... 38057 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 38058 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 38059 # the final pixel color is defined by the equation: 38060 # 38061 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 38062 # 38063 # This means that a value of 1.0 corresponds to a solid color, whereas 38064 # a value of 0.0 corresponds to a completely transparent color. This 38065 # uses a wrapper message rather than a simple float scalar so that it is 38066 # possible to distinguish between a default value and the value being unset. 38067 # If omitted, this color object is to be rendered as a solid color 38068 # (as if the alpha value had been explicitly given with a value of 1.0). 38069 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 38070 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 38071 }, 38072 }, 38073 "rowProperties": { # Properties referring a single dimension (either row or column). If both # Properties for row bands. These properties will be applied on a row-by-row 38074 # basis throughout all the rows in the range. At least one of 38075 # row_properties or column_properties must be specified. 38076 # BandedRange.row_properties and BandedRange.column_properties are 38077 # set, the fill colors are applied to cells according to the following rules: 38078 # 38079 # * header_color and footer_color take priority over band colors. 38080 # * first_band_color takes priority over second_band_color. 38081 # * row_properties takes priority over column_properties. 38082 # 38083 # For example, the first row color takes priority over the first column 38084 # color, but the first column color takes priority over the second row color. 38085 # Similarly, the row header takes priority over the column header in the 38086 # top left cell, but the column header takes priority over the first row 38087 # color if the row header is not set. 38088 "secondBandColor": { # Represents a color in the RGBA color space. This representation is designed # The second color that is alternating. (Required) 38089 # for simplicity of conversion to/from color representations in various 38090 # languages over compactness; for example, the fields of this representation 38091 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 38092 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 38093 # method in iOS; and, with just a little work, it can be easily formatted into 38094 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 38095 # 38096 # Example (Java): 38097 # 38098 # import com.google.type.Color; 38099 # 38100 # // ... 38101 # public static java.awt.Color fromProto(Color protocolor) { 38102 # float alpha = protocolor.hasAlpha() 38103 # ? protocolor.getAlpha().getValue() 38104 # : 1.0; 38105 # 38106 # return new java.awt.Color( 38107 # protocolor.getRed(), 38108 # protocolor.getGreen(), 38109 # protocolor.getBlue(), 38110 # alpha); 38111 # } 38112 # 38113 # public static Color toProto(java.awt.Color color) { 38114 # float red = (float) color.getRed(); 38115 # float green = (float) color.getGreen(); 38116 # float blue = (float) color.getBlue(); 38117 # float denominator = 255.0; 38118 # Color.Builder resultBuilder = 38119 # Color 38120 # .newBuilder() 38121 # .setRed(red / denominator) 38122 # .setGreen(green / denominator) 38123 # .setBlue(blue / denominator); 38124 # int alpha = color.getAlpha(); 38125 # if (alpha != 255) { 38126 # result.setAlpha( 38127 # FloatValue 38128 # .newBuilder() 38129 # .setValue(((float) alpha) / denominator) 38130 # .build()); 38131 # } 38132 # return resultBuilder.build(); 38133 # } 38134 # // ... 38135 # 38136 # Example (iOS / Obj-C): 38137 # 38138 # // ... 38139 # static UIColor* fromProto(Color* protocolor) { 38140 # float red = [protocolor red]; 38141 # float green = [protocolor green]; 38142 # float blue = [protocolor blue]; 38143 # FloatValue* alpha_wrapper = [protocolor alpha]; 38144 # float alpha = 1.0; 38145 # if (alpha_wrapper != nil) { 38146 # alpha = [alpha_wrapper value]; 38147 # } 38148 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 38149 # } 38150 # 38151 # static Color* toProto(UIColor* color) { 38152 # CGFloat red, green, blue, alpha; 38153 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 38154 # return nil; 38155 # } 38156 # Color* result = [Color alloc] init]; 38157 # [result setRed:red]; 38158 # [result setGreen:green]; 38159 # [result setBlue:blue]; 38160 # if (alpha <= 0.9999) { 38161 # [result setAlpha:floatWrapperWithValue(alpha)]; 38162 # } 38163 # [result autorelease]; 38164 # return result; 38165 # } 38166 # // ... 38167 # 38168 # Example (JavaScript): 38169 # 38170 # // ... 38171 # 38172 # var protoToCssColor = function(rgb_color) { 38173 # var redFrac = rgb_color.red || 0.0; 38174 # var greenFrac = rgb_color.green || 0.0; 38175 # var blueFrac = rgb_color.blue || 0.0; 38176 # var red = Math.floor(redFrac * 255); 38177 # var green = Math.floor(greenFrac * 255); 38178 # var blue = Math.floor(blueFrac * 255); 38179 # 38180 # if (!('alpha' in rgb_color)) { 38181 # return rgbToCssColor_(red, green, blue); 38182 # } 38183 # 38184 # var alphaFrac = rgb_color.alpha.value || 0.0; 38185 # var rgbParams = [red, green, blue].join(','); 38186 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 38187 # }; 38188 # 38189 # var rgbToCssColor_ = function(red, green, blue) { 38190 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 38191 # var hexString = rgbNumber.toString(16); 38192 # var missingZeros = 6 - hexString.length; 38193 # var resultBuilder = ['#']; 38194 # for (var i = 0; i < missingZeros; i++) { 38195 # resultBuilder.push('0'); 38196 # } 38197 # resultBuilder.push(hexString); 38198 # return resultBuilder.join(''); 38199 # }; 38200 # 38201 # // ... 38202 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 38203 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 38204 # the final pixel color is defined by the equation: 38205 # 38206 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 38207 # 38208 # This means that a value of 1.0 corresponds to a solid color, whereas 38209 # a value of 0.0 corresponds to a completely transparent color. This 38210 # uses a wrapper message rather than a simple float scalar so that it is 38211 # possible to distinguish between a default value and the value being unset. 38212 # If omitted, this color object is to be rendered as a solid color 38213 # (as if the alpha value had been explicitly given with a value of 1.0). 38214 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 38215 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 38216 }, 38217 "headerColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the first row or column. If this field is set, the first 38218 # row or column will be filled with this color and the colors will 38219 # alternate between first_band_color and second_band_color starting 38220 # from the second row or column. Otherwise, the first row or column will be 38221 # filled with first_band_color and the colors will proceed to alternate 38222 # as they normally would. 38223 # for simplicity of conversion to/from color representations in various 38224 # languages over compactness; for example, the fields of this representation 38225 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 38226 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 38227 # method in iOS; and, with just a little work, it can be easily formatted into 38228 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 38229 # 38230 # Example (Java): 38231 # 38232 # import com.google.type.Color; 38233 # 38234 # // ... 38235 # public static java.awt.Color fromProto(Color protocolor) { 38236 # float alpha = protocolor.hasAlpha() 38237 # ? protocolor.getAlpha().getValue() 38238 # : 1.0; 38239 # 38240 # return new java.awt.Color( 38241 # protocolor.getRed(), 38242 # protocolor.getGreen(), 38243 # protocolor.getBlue(), 38244 # alpha); 38245 # } 38246 # 38247 # public static Color toProto(java.awt.Color color) { 38248 # float red = (float) color.getRed(); 38249 # float green = (float) color.getGreen(); 38250 # float blue = (float) color.getBlue(); 38251 # float denominator = 255.0; 38252 # Color.Builder resultBuilder = 38253 # Color 38254 # .newBuilder() 38255 # .setRed(red / denominator) 38256 # .setGreen(green / denominator) 38257 # .setBlue(blue / denominator); 38258 # int alpha = color.getAlpha(); 38259 # if (alpha != 255) { 38260 # result.setAlpha( 38261 # FloatValue 38262 # .newBuilder() 38263 # .setValue(((float) alpha) / denominator) 38264 # .build()); 38265 # } 38266 # return resultBuilder.build(); 38267 # } 38268 # // ... 38269 # 38270 # Example (iOS / Obj-C): 38271 # 38272 # // ... 38273 # static UIColor* fromProto(Color* protocolor) { 38274 # float red = [protocolor red]; 38275 # float green = [protocolor green]; 38276 # float blue = [protocolor blue]; 38277 # FloatValue* alpha_wrapper = [protocolor alpha]; 38278 # float alpha = 1.0; 38279 # if (alpha_wrapper != nil) { 38280 # alpha = [alpha_wrapper value]; 38281 # } 38282 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 38283 # } 38284 # 38285 # static Color* toProto(UIColor* color) { 38286 # CGFloat red, green, blue, alpha; 38287 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 38288 # return nil; 38289 # } 38290 # Color* result = [Color alloc] init]; 38291 # [result setRed:red]; 38292 # [result setGreen:green]; 38293 # [result setBlue:blue]; 38294 # if (alpha <= 0.9999) { 38295 # [result setAlpha:floatWrapperWithValue(alpha)]; 38296 # } 38297 # [result autorelease]; 38298 # return result; 38299 # } 38300 # // ... 38301 # 38302 # Example (JavaScript): 38303 # 38304 # // ... 38305 # 38306 # var protoToCssColor = function(rgb_color) { 38307 # var redFrac = rgb_color.red || 0.0; 38308 # var greenFrac = rgb_color.green || 0.0; 38309 # var blueFrac = rgb_color.blue || 0.0; 38310 # var red = Math.floor(redFrac * 255); 38311 # var green = Math.floor(greenFrac * 255); 38312 # var blue = Math.floor(blueFrac * 255); 38313 # 38314 # if (!('alpha' in rgb_color)) { 38315 # return rgbToCssColor_(red, green, blue); 38316 # } 38317 # 38318 # var alphaFrac = rgb_color.alpha.value || 0.0; 38319 # var rgbParams = [red, green, blue].join(','); 38320 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 38321 # }; 38322 # 38323 # var rgbToCssColor_ = function(red, green, blue) { 38324 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 38325 # var hexString = rgbNumber.toString(16); 38326 # var missingZeros = 6 - hexString.length; 38327 # var resultBuilder = ['#']; 38328 # for (var i = 0; i < missingZeros; i++) { 38329 # resultBuilder.push('0'); 38330 # } 38331 # resultBuilder.push(hexString); 38332 # return resultBuilder.join(''); 38333 # }; 38334 # 38335 # // ... 38336 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 38337 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 38338 # the final pixel color is defined by the equation: 38339 # 38340 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 38341 # 38342 # This means that a value of 1.0 corresponds to a solid color, whereas 38343 # a value of 0.0 corresponds to a completely transparent color. This 38344 # uses a wrapper message rather than a simple float scalar so that it is 38345 # possible to distinguish between a default value and the value being unset. 38346 # If omitted, this color object is to be rendered as a solid color 38347 # (as if the alpha value had been explicitly given with a value of 1.0). 38348 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 38349 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 38350 }, 38351 "footerColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the last row or column. If this field is not set, the last 38352 # row or column will be filled with either first_band_color or 38353 # second_band_color, depending on the color of the previous row or 38354 # column. 38355 # for simplicity of conversion to/from color representations in various 38356 # languages over compactness; for example, the fields of this representation 38357 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 38358 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 38359 # method in iOS; and, with just a little work, it can be easily formatted into 38360 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 38361 # 38362 # Example (Java): 38363 # 38364 # import com.google.type.Color; 38365 # 38366 # // ... 38367 # public static java.awt.Color fromProto(Color protocolor) { 38368 # float alpha = protocolor.hasAlpha() 38369 # ? protocolor.getAlpha().getValue() 38370 # : 1.0; 38371 # 38372 # return new java.awt.Color( 38373 # protocolor.getRed(), 38374 # protocolor.getGreen(), 38375 # protocolor.getBlue(), 38376 # alpha); 38377 # } 38378 # 38379 # public static Color toProto(java.awt.Color color) { 38380 # float red = (float) color.getRed(); 38381 # float green = (float) color.getGreen(); 38382 # float blue = (float) color.getBlue(); 38383 # float denominator = 255.0; 38384 # Color.Builder resultBuilder = 38385 # Color 38386 # .newBuilder() 38387 # .setRed(red / denominator) 38388 # .setGreen(green / denominator) 38389 # .setBlue(blue / denominator); 38390 # int alpha = color.getAlpha(); 38391 # if (alpha != 255) { 38392 # result.setAlpha( 38393 # FloatValue 38394 # .newBuilder() 38395 # .setValue(((float) alpha) / denominator) 38396 # .build()); 38397 # } 38398 # return resultBuilder.build(); 38399 # } 38400 # // ... 38401 # 38402 # Example (iOS / Obj-C): 38403 # 38404 # // ... 38405 # static UIColor* fromProto(Color* protocolor) { 38406 # float red = [protocolor red]; 38407 # float green = [protocolor green]; 38408 # float blue = [protocolor blue]; 38409 # FloatValue* alpha_wrapper = [protocolor alpha]; 38410 # float alpha = 1.0; 38411 # if (alpha_wrapper != nil) { 38412 # alpha = [alpha_wrapper value]; 38413 # } 38414 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 38415 # } 38416 # 38417 # static Color* toProto(UIColor* color) { 38418 # CGFloat red, green, blue, alpha; 38419 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 38420 # return nil; 38421 # } 38422 # Color* result = [Color alloc] init]; 38423 # [result setRed:red]; 38424 # [result setGreen:green]; 38425 # [result setBlue:blue]; 38426 # if (alpha <= 0.9999) { 38427 # [result setAlpha:floatWrapperWithValue(alpha)]; 38428 # } 38429 # [result autorelease]; 38430 # return result; 38431 # } 38432 # // ... 38433 # 38434 # Example (JavaScript): 38435 # 38436 # // ... 38437 # 38438 # var protoToCssColor = function(rgb_color) { 38439 # var redFrac = rgb_color.red || 0.0; 38440 # var greenFrac = rgb_color.green || 0.0; 38441 # var blueFrac = rgb_color.blue || 0.0; 38442 # var red = Math.floor(redFrac * 255); 38443 # var green = Math.floor(greenFrac * 255); 38444 # var blue = Math.floor(blueFrac * 255); 38445 # 38446 # if (!('alpha' in rgb_color)) { 38447 # return rgbToCssColor_(red, green, blue); 38448 # } 38449 # 38450 # var alphaFrac = rgb_color.alpha.value || 0.0; 38451 # var rgbParams = [red, green, blue].join(','); 38452 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 38453 # }; 38454 # 38455 # var rgbToCssColor_ = function(red, green, blue) { 38456 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 38457 # var hexString = rgbNumber.toString(16); 38458 # var missingZeros = 6 - hexString.length; 38459 # var resultBuilder = ['#']; 38460 # for (var i = 0; i < missingZeros; i++) { 38461 # resultBuilder.push('0'); 38462 # } 38463 # resultBuilder.push(hexString); 38464 # return resultBuilder.join(''); 38465 # }; 38466 # 38467 # // ... 38468 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 38469 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 38470 # the final pixel color is defined by the equation: 38471 # 38472 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 38473 # 38474 # This means that a value of 1.0 corresponds to a solid color, whereas 38475 # a value of 0.0 corresponds to a completely transparent color. This 38476 # uses a wrapper message rather than a simple float scalar so that it is 38477 # possible to distinguish between a default value and the value being unset. 38478 # If omitted, this color object is to be rendered as a solid color 38479 # (as if the alpha value had been explicitly given with a value of 1.0). 38480 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 38481 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 38482 }, 38483 "firstBandColor": { # Represents a color in the RGBA color space. This representation is designed # The first color that is alternating. (Required) 38484 # for simplicity of conversion to/from color representations in various 38485 # languages over compactness; for example, the fields of this representation 38486 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 38487 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 38488 # method in iOS; and, with just a little work, it can be easily formatted into 38489 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 38490 # 38491 # Example (Java): 38492 # 38493 # import com.google.type.Color; 38494 # 38495 # // ... 38496 # public static java.awt.Color fromProto(Color protocolor) { 38497 # float alpha = protocolor.hasAlpha() 38498 # ? protocolor.getAlpha().getValue() 38499 # : 1.0; 38500 # 38501 # return new java.awt.Color( 38502 # protocolor.getRed(), 38503 # protocolor.getGreen(), 38504 # protocolor.getBlue(), 38505 # alpha); 38506 # } 38507 # 38508 # public static Color toProto(java.awt.Color color) { 38509 # float red = (float) color.getRed(); 38510 # float green = (float) color.getGreen(); 38511 # float blue = (float) color.getBlue(); 38512 # float denominator = 255.0; 38513 # Color.Builder resultBuilder = 38514 # Color 38515 # .newBuilder() 38516 # .setRed(red / denominator) 38517 # .setGreen(green / denominator) 38518 # .setBlue(blue / denominator); 38519 # int alpha = color.getAlpha(); 38520 # if (alpha != 255) { 38521 # result.setAlpha( 38522 # FloatValue 38523 # .newBuilder() 38524 # .setValue(((float) alpha) / denominator) 38525 # .build()); 38526 # } 38527 # return resultBuilder.build(); 38528 # } 38529 # // ... 38530 # 38531 # Example (iOS / Obj-C): 38532 # 38533 # // ... 38534 # static UIColor* fromProto(Color* protocolor) { 38535 # float red = [protocolor red]; 38536 # float green = [protocolor green]; 38537 # float blue = [protocolor blue]; 38538 # FloatValue* alpha_wrapper = [protocolor alpha]; 38539 # float alpha = 1.0; 38540 # if (alpha_wrapper != nil) { 38541 # alpha = [alpha_wrapper value]; 38542 # } 38543 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 38544 # } 38545 # 38546 # static Color* toProto(UIColor* color) { 38547 # CGFloat red, green, blue, alpha; 38548 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 38549 # return nil; 38550 # } 38551 # Color* result = [Color alloc] init]; 38552 # [result setRed:red]; 38553 # [result setGreen:green]; 38554 # [result setBlue:blue]; 38555 # if (alpha <= 0.9999) { 38556 # [result setAlpha:floatWrapperWithValue(alpha)]; 38557 # } 38558 # [result autorelease]; 38559 # return result; 38560 # } 38561 # // ... 38562 # 38563 # Example (JavaScript): 38564 # 38565 # // ... 38566 # 38567 # var protoToCssColor = function(rgb_color) { 38568 # var redFrac = rgb_color.red || 0.0; 38569 # var greenFrac = rgb_color.green || 0.0; 38570 # var blueFrac = rgb_color.blue || 0.0; 38571 # var red = Math.floor(redFrac * 255); 38572 # var green = Math.floor(greenFrac * 255); 38573 # var blue = Math.floor(blueFrac * 255); 38574 # 38575 # if (!('alpha' in rgb_color)) { 38576 # return rgbToCssColor_(red, green, blue); 38577 # } 38578 # 38579 # var alphaFrac = rgb_color.alpha.value || 0.0; 38580 # var rgbParams = [red, green, blue].join(','); 38581 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 38582 # }; 38583 # 38584 # var rgbToCssColor_ = function(red, green, blue) { 38585 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 38586 # var hexString = rgbNumber.toString(16); 38587 # var missingZeros = 6 - hexString.length; 38588 # var resultBuilder = ['#']; 38589 # for (var i = 0; i < missingZeros; i++) { 38590 # resultBuilder.push('0'); 38591 # } 38592 # resultBuilder.push(hexString); 38593 # return resultBuilder.join(''); 38594 # }; 38595 # 38596 # // ... 38597 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 38598 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 38599 # the final pixel color is defined by the equation: 38600 # 38601 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 38602 # 38603 # This means that a value of 1.0 corresponds to a solid color, whereas 38604 # a value of 0.0 corresponds to a completely transparent color. This 38605 # uses a wrapper message rather than a simple float scalar so that it is 38606 # possible to distinguish between a default value and the value being unset. 38607 # If omitted, this color object is to be rendered as a solid color 38608 # (as if the alpha value had been explicitly given with a value of 1.0). 38609 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 38610 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 38611 }, 38612 }, 38613 "bandedRangeId": 42, # The id of the banded range. 38614 }, 38615 ], 38616 "merges": [ # The ranges that are merged together. 38617 { # A range on a sheet. 38618 # All indexes are zero-based. 38619 # Indexes are half open, e.g the start index is inclusive 38620 # and the end index is exclusive -- [start_index, end_index). 38621 # Missing indexes indicate the range is unbounded on that side. 38622 # 38623 # For example, if `"Sheet1"` is sheet ID 0, then: 38624 # 38625 # `Sheet1!A1:A1 == sheet_id: 0, 38626 # start_row_index: 0, end_row_index: 1, 38627 # start_column_index: 0, end_column_index: 1` 38628 # 38629 # `Sheet1!A3:B4 == sheet_id: 0, 38630 # start_row_index: 2, end_row_index: 4, 38631 # start_column_index: 0, end_column_index: 2` 38632 # 38633 # `Sheet1!A:B == sheet_id: 0, 38634 # start_column_index: 0, end_column_index: 2` 38635 # 38636 # `Sheet1!A5:B == sheet_id: 0, 38637 # start_row_index: 4, 38638 # start_column_index: 0, end_column_index: 2` 38639 # 38640 # `Sheet1 == sheet_id:0` 38641 # 38642 # The start index must always be less than or equal to the end index. 38643 # If the start index equals the end index, then the range is empty. 38644 # Empty ranges are typically not meaningful and are usually rendered in the 38645 # UI as `#REF!`. 38646 "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded. 38647 "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded. 38648 "sheetId": 42, # The sheet this range is on. 38649 "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded. 38650 "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded. 38651 }, 38652 ], 38653 "basicFilter": { # The default filter associated with a sheet. # The filter on this sheet, if any. 38654 "range": { # A range on a sheet. # The range the filter covers. 38655 # All indexes are zero-based. 38656 # Indexes are half open, e.g the start index is inclusive 38657 # and the end index is exclusive -- [start_index, end_index). 38658 # Missing indexes indicate the range is unbounded on that side. 38659 # 38660 # For example, if `"Sheet1"` is sheet ID 0, then: 38661 # 38662 # `Sheet1!A1:A1 == sheet_id: 0, 38663 # start_row_index: 0, end_row_index: 1, 38664 # start_column_index: 0, end_column_index: 1` 38665 # 38666 # `Sheet1!A3:B4 == sheet_id: 0, 38667 # start_row_index: 2, end_row_index: 4, 38668 # start_column_index: 0, end_column_index: 2` 38669 # 38670 # `Sheet1!A:B == sheet_id: 0, 38671 # start_column_index: 0, end_column_index: 2` 38672 # 38673 # `Sheet1!A5:B == sheet_id: 0, 38674 # start_row_index: 4, 38675 # start_column_index: 0, end_column_index: 2` 38676 # 38677 # `Sheet1 == sheet_id:0` 38678 # 38679 # The start index must always be less than or equal to the end index. 38680 # If the start index equals the end index, then the range is empty. 38681 # Empty ranges are typically not meaningful and are usually rendered in the 38682 # UI as `#REF!`. 38683 "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded. 38684 "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded. 38685 "sheetId": 42, # The sheet this range is on. 38686 "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded. 38687 "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded. 38688 }, 38689 "sortSpecs": [ # The sort order per column. Later specifications are used when values 38690 # are equal in the earlier specifications. 38691 { # A sort order associated with a specific column or row. 38692 "sortOrder": "A String", # The order data should be sorted. 38693 "dimensionIndex": 42, # The dimension the sort should be applied to. 38694 }, 38695 ], 38696 "criteria": { # The criteria for showing/hiding values per column. 38697 # The map's key is the column index, and the value is the criteria for 38698 # that column. 38699 "a_key": { # Criteria for showing/hiding rows in a filter or filter view. 38700 "hiddenValues": [ # Values that should be hidden. 38701 "A String", 38702 ], 38703 "condition": { # A condition that can evaluate to true or false. # A condition that must be true for values to be shown. 38704 # (This does not override hiddenValues -- if a value is listed there, 38705 # it will still be hidden.) 38706 # BooleanConditions are used by conditional formatting, 38707 # data validation, and the criteria in filters. 38708 "values": [ # The values of the condition. The number of supported values depends 38709 # on the condition type. Some support zero values, 38710 # others one or two values, 38711 # and ConditionType.ONE_OF_LIST supports an arbitrary number of values. 38712 { # The value of the condition. 38713 "relativeDate": "A String", # A relative date (based on the current date). 38714 # Valid only if the type is 38715 # DATE_BEFORE, 38716 # DATE_AFTER, 38717 # DATE_ON_OR_BEFORE or 38718 # DATE_ON_OR_AFTER. 38719 # 38720 # Relative dates are not supported in data validation. 38721 # They are supported only in conditional formatting and 38722 # conditional filters. 38723 "userEnteredValue": "A String", # A value the condition is based on. 38724 # The value will be parsed as if the user typed into a cell. 38725 # Formulas are supported (and must begin with an `=`). 38726 }, 38727 ], 38728 "type": "A String", # The type of condition. 38729 }, 38730 }, 38731 }, 38732 }, 38733 "charts": [ # The specifications of every chart on this sheet. 38734 { # A chart embedded in a sheet. 38735 "chartId": 42, # The ID of the chart. 38736 "position": { # The position of an embedded object such as a chart. # The position of the chart. 38737 "newSheet": True or False, # If true, the embedded object will be put on a new sheet whose ID 38738 # is chosen for you. Used only when writing. 38739 "sheetId": 42, # The sheet this is on. Set only if the embedded object 38740 # is on its own sheet. Must be non-negative. 38741 "overlayPosition": { # The location an object is overlaid on top of a grid. # The position at which the object is overlaid on top of a grid. 38742 "anchorCell": { # A coordinate in a sheet. # The cell the object is anchored to. 38743 # All indexes are zero-based. 38744 "rowIndex": 42, # The row index of the coordinate. 38745 "columnIndex": 42, # The column index of the coordinate. 38746 "sheetId": 42, # The sheet this coordinate is on. 38747 }, 38748 "offsetYPixels": 42, # The vertical offset, in pixels, that the object is offset 38749 # from the anchor cell. 38750 "widthPixels": 42, # The width of the object, in pixels. Defaults to 600. 38751 "offsetXPixels": 42, # The horizontal offset, in pixels, that the object is offset 38752 # from the anchor cell. 38753 "heightPixels": 42, # The height of the object, in pixels. Defaults to 371. 38754 }, 38755 }, 38756 "spec": { # The specifications of a chart. # The specification of the chart. 38757 "hiddenDimensionStrategy": "A String", # Determines how the charts will use hidden rows or columns. 38758 "pieChart": { # A <a href="/chart/interactive/docs/gallery/piechart">pie chart</a>. # A pie chart specification. 38759 "series": { # The data included in a domain or series. # The data that covers the one and only series of the pie chart. 38760 "sourceRange": { # Source ranges for a chart. # The source ranges of the data. 38761 "sources": [ # The ranges of data for a series or domain. 38762 # Exactly one dimension must have a length of 1, 38763 # and all sources in the list must have the same dimension 38764 # with length 1. 38765 # The domain (if it exists) & all series must have the same number 38766 # of source ranges. If using more than one source range, then the source 38767 # range at a given offset must be contiguous across the domain and series. 38768 # 38769 # For example, these are valid configurations: 38770 # 38771 # domain sources: A1:A5 38772 # series1 sources: B1:B5 38773 # series2 sources: D6:D10 38774 # 38775 # domain sources: A1:A5, C10:C12 38776 # series1 sources: B1:B5, D10:D12 38777 # series2 sources: C1:C5, E10:E12 38778 { # A range on a sheet. 38779 # All indexes are zero-based. 38780 # Indexes are half open, e.g the start index is inclusive 38781 # and the end index is exclusive -- [start_index, end_index). 38782 # Missing indexes indicate the range is unbounded on that side. 38783 # 38784 # For example, if `"Sheet1"` is sheet ID 0, then: 38785 # 38786 # `Sheet1!A1:A1 == sheet_id: 0, 38787 # start_row_index: 0, end_row_index: 1, 38788 # start_column_index: 0, end_column_index: 1` 38789 # 38790 # `Sheet1!A3:B4 == sheet_id: 0, 38791 # start_row_index: 2, end_row_index: 4, 38792 # start_column_index: 0, end_column_index: 2` 38793 # 38794 # `Sheet1!A:B == sheet_id: 0, 38795 # start_column_index: 0, end_column_index: 2` 38796 # 38797 # `Sheet1!A5:B == sheet_id: 0, 38798 # start_row_index: 4, 38799 # start_column_index: 0, end_column_index: 2` 38800 # 38801 # `Sheet1 == sheet_id:0` 38802 # 38803 # The start index must always be less than or equal to the end index. 38804 # If the start index equals the end index, then the range is empty. 38805 # Empty ranges are typically not meaningful and are usually rendered in the 38806 # UI as `#REF!`. 38807 "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded. 38808 "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded. 38809 "sheetId": 42, # The sheet this range is on. 38810 "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded. 38811 "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded. 38812 }, 38813 ], 38814 }, 38815 }, 38816 "domain": { # The data included in a domain or series. # The data that covers the domain of the pie chart. 38817 "sourceRange": { # Source ranges for a chart. # The source ranges of the data. 38818 "sources": [ # The ranges of data for a series or domain. 38819 # Exactly one dimension must have a length of 1, 38820 # and all sources in the list must have the same dimension 38821 # with length 1. 38822 # The domain (if it exists) & all series must have the same number 38823 # of source ranges. If using more than one source range, then the source 38824 # range at a given offset must be contiguous across the domain and series. 38825 # 38826 # For example, these are valid configurations: 38827 # 38828 # domain sources: A1:A5 38829 # series1 sources: B1:B5 38830 # series2 sources: D6:D10 38831 # 38832 # domain sources: A1:A5, C10:C12 38833 # series1 sources: B1:B5, D10:D12 38834 # series2 sources: C1:C5, E10:E12 38835 { # A range on a sheet. 38836 # All indexes are zero-based. 38837 # Indexes are half open, e.g the start index is inclusive 38838 # and the end index is exclusive -- [start_index, end_index). 38839 # Missing indexes indicate the range is unbounded on that side. 38840 # 38841 # For example, if `"Sheet1"` is sheet ID 0, then: 38842 # 38843 # `Sheet1!A1:A1 == sheet_id: 0, 38844 # start_row_index: 0, end_row_index: 1, 38845 # start_column_index: 0, end_column_index: 1` 38846 # 38847 # `Sheet1!A3:B4 == sheet_id: 0, 38848 # start_row_index: 2, end_row_index: 4, 38849 # start_column_index: 0, end_column_index: 2` 38850 # 38851 # `Sheet1!A:B == sheet_id: 0, 38852 # start_column_index: 0, end_column_index: 2` 38853 # 38854 # `Sheet1!A5:B == sheet_id: 0, 38855 # start_row_index: 4, 38856 # start_column_index: 0, end_column_index: 2` 38857 # 38858 # `Sheet1 == sheet_id:0` 38859 # 38860 # The start index must always be less than or equal to the end index. 38861 # If the start index equals the end index, then the range is empty. 38862 # Empty ranges are typically not meaningful and are usually rendered in the 38863 # UI as `#REF!`. 38864 "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded. 38865 "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded. 38866 "sheetId": 42, # The sheet this range is on. 38867 "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded. 38868 "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded. 38869 }, 38870 ], 38871 }, 38872 }, 38873 "threeDimensional": True or False, # True if the pie is three dimensional. 38874 "legendPosition": "A String", # Where the legend of the pie chart should be drawn. 38875 "pieHole": 3.14, # The size of the hole in the pie chart. 38876 }, 38877 "basicChart": { # The specification for a basic chart. See BasicChartType for the list # A basic chart specification, can be one of many kinds of charts. 38878 # See BasicChartType for the list of all 38879 # charts this supports. 38880 # of charts this supports. 38881 "headerCount": 42, # The number of rows or columns in the data that are "headers". 38882 # If not set, Google Sheets will guess how many rows are headers based 38883 # on the data. 38884 # 38885 # (Note that BasicChartAxis.title may override the axis title 38886 # inferred from the header values.) 38887 "series": [ # The data this chart is visualizing. 38888 { # A single series of data in a chart. 38889 # For example, if charting stock prices over time, multiple series may exist, 38890 # one for the "Open Price", "High Price", "Low Price" and "Close Price". 38891 "series": { # The data included in a domain or series. # The data being visualized in this chart series. 38892 "sourceRange": { # Source ranges for a chart. # The source ranges of the data. 38893 "sources": [ # The ranges of data for a series or domain. 38894 # Exactly one dimension must have a length of 1, 38895 # and all sources in the list must have the same dimension 38896 # with length 1. 38897 # The domain (if it exists) & all series must have the same number 38898 # of source ranges. If using more than one source range, then the source 38899 # range at a given offset must be contiguous across the domain and series. 38900 # 38901 # For example, these are valid configurations: 38902 # 38903 # domain sources: A1:A5 38904 # series1 sources: B1:B5 38905 # series2 sources: D6:D10 38906 # 38907 # domain sources: A1:A5, C10:C12 38908 # series1 sources: B1:B5, D10:D12 38909 # series2 sources: C1:C5, E10:E12 38910 { # A range on a sheet. 38911 # All indexes are zero-based. 38912 # Indexes are half open, e.g the start index is inclusive 38913 # and the end index is exclusive -- [start_index, end_index). 38914 # Missing indexes indicate the range is unbounded on that side. 38915 # 38916 # For example, if `"Sheet1"` is sheet ID 0, then: 38917 # 38918 # `Sheet1!A1:A1 == sheet_id: 0, 38919 # start_row_index: 0, end_row_index: 1, 38920 # start_column_index: 0, end_column_index: 1` 38921 # 38922 # `Sheet1!A3:B4 == sheet_id: 0, 38923 # start_row_index: 2, end_row_index: 4, 38924 # start_column_index: 0, end_column_index: 2` 38925 # 38926 # `Sheet1!A:B == sheet_id: 0, 38927 # start_column_index: 0, end_column_index: 2` 38928 # 38929 # `Sheet1!A5:B == sheet_id: 0, 38930 # start_row_index: 4, 38931 # start_column_index: 0, end_column_index: 2` 38932 # 38933 # `Sheet1 == sheet_id:0` 38934 # 38935 # The start index must always be less than or equal to the end index. 38936 # If the start index equals the end index, then the range is empty. 38937 # Empty ranges are typically not meaningful and are usually rendered in the 38938 # UI as `#REF!`. 38939 "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded. 38940 "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded. 38941 "sheetId": 42, # The sheet this range is on. 38942 "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded. 38943 "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded. 38944 }, 38945 ], 38946 }, 38947 }, 38948 "targetAxis": "A String", # The minor axis that will specify the range of values for this series. 38949 # For example, if charting stocks over time, the "Volume" series 38950 # may want to be pinned to the right with the prices pinned to the left, 38951 # because the scale of trading volume is different than the scale of 38952 # prices. 38953 # It is an error to specify an axis that isn't a valid minor axis 38954 # for the chart's type. 38955 "type": "A String", # The type of this series. Valid only if the 38956 # chartType is 38957 # COMBO. 38958 # Different types will change the way the series is visualized. 38959 # Only LINE, AREA, 38960 # and COLUMN are supported. 38961 }, 38962 ], 38963 "legendPosition": "A String", # The position of the chart legend. 38964 "domains": [ # The domain of data this is charting. 38965 # Only a single domain is supported. 38966 { # The domain of a chart. 38967 # For example, if charting stock prices over time, this would be the date. 38968 "domain": { # The data included in a domain or series. # The data of the domain. For example, if charting stock prices over time, 38969 # this is the data representing the dates. 38970 "sourceRange": { # Source ranges for a chart. # The source ranges of the data. 38971 "sources": [ # The ranges of data for a series or domain. 38972 # Exactly one dimension must have a length of 1, 38973 # and all sources in the list must have the same dimension 38974 # with length 1. 38975 # The domain (if it exists) & all series must have the same number 38976 # of source ranges. If using more than one source range, then the source 38977 # range at a given offset must be contiguous across the domain and series. 38978 # 38979 # For example, these are valid configurations: 38980 # 38981 # domain sources: A1:A5 38982 # series1 sources: B1:B5 38983 # series2 sources: D6:D10 38984 # 38985 # domain sources: A1:A5, C10:C12 38986 # series1 sources: B1:B5, D10:D12 38987 # series2 sources: C1:C5, E10:E12 38988 { # A range on a sheet. 38989 # All indexes are zero-based. 38990 # Indexes are half open, e.g the start index is inclusive 38991 # and the end index is exclusive -- [start_index, end_index). 38992 # Missing indexes indicate the range is unbounded on that side. 38993 # 38994 # For example, if `"Sheet1"` is sheet ID 0, then: 38995 # 38996 # `Sheet1!A1:A1 == sheet_id: 0, 38997 # start_row_index: 0, end_row_index: 1, 38998 # start_column_index: 0, end_column_index: 1` 38999 # 39000 # `Sheet1!A3:B4 == sheet_id: 0, 39001 # start_row_index: 2, end_row_index: 4, 39002 # start_column_index: 0, end_column_index: 2` 39003 # 39004 # `Sheet1!A:B == sheet_id: 0, 39005 # start_column_index: 0, end_column_index: 2` 39006 # 39007 # `Sheet1!A5:B == sheet_id: 0, 39008 # start_row_index: 4, 39009 # start_column_index: 0, end_column_index: 2` 39010 # 39011 # `Sheet1 == sheet_id:0` 39012 # 39013 # The start index must always be less than or equal to the end index. 39014 # If the start index equals the end index, then the range is empty. 39015 # Empty ranges are typically not meaningful and are usually rendered in the 39016 # UI as `#REF!`. 39017 "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded. 39018 "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded. 39019 "sheetId": 42, # The sheet this range is on. 39020 "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded. 39021 "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded. 39022 }, 39023 ], 39024 }, 39025 }, 39026 }, 39027 ], 39028 "chartType": "A String", # The type of the chart. 39029 "axis": [ # The axis on the chart. 39030 { # An axis of the chart. 39031 # A chart may not have more than one axis per 39032 # axis position. 39033 "position": "A String", # The position of this axis. 39034 "format": { # The format of a run of text in a cell. # The format of the title. 39035 # Only valid if the axis is not associated with the domain. 39036 # Absent values indicate that the field isn't specified. 39037 "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text. 39038 # for simplicity of conversion to/from color representations in various 39039 # languages over compactness; for example, the fields of this representation 39040 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 39041 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 39042 # method in iOS; and, with just a little work, it can be easily formatted into 39043 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 39044 # 39045 # Example (Java): 39046 # 39047 # import com.google.type.Color; 39048 # 39049 # // ... 39050 # public static java.awt.Color fromProto(Color protocolor) { 39051 # float alpha = protocolor.hasAlpha() 39052 # ? protocolor.getAlpha().getValue() 39053 # : 1.0; 39054 # 39055 # return new java.awt.Color( 39056 # protocolor.getRed(), 39057 # protocolor.getGreen(), 39058 # protocolor.getBlue(), 39059 # alpha); 39060 # } 39061 # 39062 # public static Color toProto(java.awt.Color color) { 39063 # float red = (float) color.getRed(); 39064 # float green = (float) color.getGreen(); 39065 # float blue = (float) color.getBlue(); 39066 # float denominator = 255.0; 39067 # Color.Builder resultBuilder = 39068 # Color 39069 # .newBuilder() 39070 # .setRed(red / denominator) 39071 # .setGreen(green / denominator) 39072 # .setBlue(blue / denominator); 39073 # int alpha = color.getAlpha(); 39074 # if (alpha != 255) { 39075 # result.setAlpha( 39076 # FloatValue 39077 # .newBuilder() 39078 # .setValue(((float) alpha) / denominator) 39079 # .build()); 39080 # } 39081 # return resultBuilder.build(); 39082 # } 39083 # // ... 39084 # 39085 # Example (iOS / Obj-C): 39086 # 39087 # // ... 39088 # static UIColor* fromProto(Color* protocolor) { 39089 # float red = [protocolor red]; 39090 # float green = [protocolor green]; 39091 # float blue = [protocolor blue]; 39092 # FloatValue* alpha_wrapper = [protocolor alpha]; 39093 # float alpha = 1.0; 39094 # if (alpha_wrapper != nil) { 39095 # alpha = [alpha_wrapper value]; 39096 # } 39097 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 39098 # } 39099 # 39100 # static Color* toProto(UIColor* color) { 39101 # CGFloat red, green, blue, alpha; 39102 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 39103 # return nil; 39104 # } 39105 # Color* result = [Color alloc] init]; 39106 # [result setRed:red]; 39107 # [result setGreen:green]; 39108 # [result setBlue:blue]; 39109 # if (alpha <= 0.9999) { 39110 # [result setAlpha:floatWrapperWithValue(alpha)]; 39111 # } 39112 # [result autorelease]; 39113 # return result; 39114 # } 39115 # // ... 39116 # 39117 # Example (JavaScript): 39118 # 39119 # // ... 39120 # 39121 # var protoToCssColor = function(rgb_color) { 39122 # var redFrac = rgb_color.red || 0.0; 39123 # var greenFrac = rgb_color.green || 0.0; 39124 # var blueFrac = rgb_color.blue || 0.0; 39125 # var red = Math.floor(redFrac * 255); 39126 # var green = Math.floor(greenFrac * 255); 39127 # var blue = Math.floor(blueFrac * 255); 39128 # 39129 # if (!('alpha' in rgb_color)) { 39130 # return rgbToCssColor_(red, green, blue); 39131 # } 39132 # 39133 # var alphaFrac = rgb_color.alpha.value || 0.0; 39134 # var rgbParams = [red, green, blue].join(','); 39135 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 39136 # }; 39137 # 39138 # var rgbToCssColor_ = function(red, green, blue) { 39139 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 39140 # var hexString = rgbNumber.toString(16); 39141 # var missingZeros = 6 - hexString.length; 39142 # var resultBuilder = ['#']; 39143 # for (var i = 0; i < missingZeros; i++) { 39144 # resultBuilder.push('0'); 39145 # } 39146 # resultBuilder.push(hexString); 39147 # return resultBuilder.join(''); 39148 # }; 39149 # 39150 # // ... 39151 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 39152 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 39153 # the final pixel color is defined by the equation: 39154 # 39155 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 39156 # 39157 # This means that a value of 1.0 corresponds to a solid color, whereas 39158 # a value of 0.0 corresponds to a completely transparent color. This 39159 # uses a wrapper message rather than a simple float scalar so that it is 39160 # possible to distinguish between a default value and the value being unset. 39161 # If omitted, this color object is to be rendered as a solid color 39162 # (as if the alpha value had been explicitly given with a value of 1.0). 39163 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 39164 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 39165 }, 39166 "bold": True or False, # True if the text is bold. 39167 "strikethrough": True or False, # True if the text has a strikethrough. 39168 "fontFamily": "A String", # The font family. 39169 "fontSize": 42, # The size of the font. 39170 "italic": True or False, # True if the text is italicized. 39171 "underline": True or False, # True if the text is underlined. 39172 }, 39173 "title": "A String", # The title of this axis. If set, this overrides any title inferred 39174 # from headers of the data. 39175 }, 39176 ], 39177 }, 39178 "title": "A String", # The title of the chart. 39179 }, 39180 }, 39181 ], 39182 "filterViews": [ # The filter views in this sheet. 39183 { # A filter view. 39184 "title": "A String", # The name of the filter view. 39185 "namedRangeId": "A String", # The named range this filter view is backed by, if any. 39186 # 39187 # When writing, only one of range or named_range_id 39188 # may be set. 39189 "filterViewId": 42, # The ID of the filter view. 39190 "range": { # A range on a sheet. # The range this filter view covers. 39191 # 39192 # When writing, only one of range or named_range_id 39193 # may be set. 39194 # All indexes are zero-based. 39195 # Indexes are half open, e.g the start index is inclusive 39196 # and the end index is exclusive -- [start_index, end_index). 39197 # Missing indexes indicate the range is unbounded on that side. 39198 # 39199 # For example, if `"Sheet1"` is sheet ID 0, then: 39200 # 39201 # `Sheet1!A1:A1 == sheet_id: 0, 39202 # start_row_index: 0, end_row_index: 1, 39203 # start_column_index: 0, end_column_index: 1` 39204 # 39205 # `Sheet1!A3:B4 == sheet_id: 0, 39206 # start_row_index: 2, end_row_index: 4, 39207 # start_column_index: 0, end_column_index: 2` 39208 # 39209 # `Sheet1!A:B == sheet_id: 0, 39210 # start_column_index: 0, end_column_index: 2` 39211 # 39212 # `Sheet1!A5:B == sheet_id: 0, 39213 # start_row_index: 4, 39214 # start_column_index: 0, end_column_index: 2` 39215 # 39216 # `Sheet1 == sheet_id:0` 39217 # 39218 # The start index must always be less than or equal to the end index. 39219 # If the start index equals the end index, then the range is empty. 39220 # Empty ranges are typically not meaningful and are usually rendered in the 39221 # UI as `#REF!`. 39222 "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded. 39223 "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded. 39224 "sheetId": 42, # The sheet this range is on. 39225 "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded. 39226 "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded. 39227 }, 39228 "sortSpecs": [ # The sort order per column. Later specifications are used when values 39229 # are equal in the earlier specifications. 39230 { # A sort order associated with a specific column or row. 39231 "sortOrder": "A String", # The order data should be sorted. 39232 "dimensionIndex": 42, # The dimension the sort should be applied to. 39233 }, 39234 ], 39235 "criteria": { # The criteria for showing/hiding values per column. 39236 # The map's key is the column index, and the value is the criteria for 39237 # that column. 39238 "a_key": { # Criteria for showing/hiding rows in a filter or filter view. 39239 "hiddenValues": [ # Values that should be hidden. 39240 "A String", 39241 ], 39242 "condition": { # A condition that can evaluate to true or false. # A condition that must be true for values to be shown. 39243 # (This does not override hiddenValues -- if a value is listed there, 39244 # it will still be hidden.) 39245 # BooleanConditions are used by conditional formatting, 39246 # data validation, and the criteria in filters. 39247 "values": [ # The values of the condition. The number of supported values depends 39248 # on the condition type. Some support zero values, 39249 # others one or two values, 39250 # and ConditionType.ONE_OF_LIST supports an arbitrary number of values. 39251 { # The value of the condition. 39252 "relativeDate": "A String", # A relative date (based on the current date). 39253 # Valid only if the type is 39254 # DATE_BEFORE, 39255 # DATE_AFTER, 39256 # DATE_ON_OR_BEFORE or 39257 # DATE_ON_OR_AFTER. 39258 # 39259 # Relative dates are not supported in data validation. 39260 # They are supported only in conditional formatting and 39261 # conditional filters. 39262 "userEnteredValue": "A String", # A value the condition is based on. 39263 # The value will be parsed as if the user typed into a cell. 39264 # Formulas are supported (and must begin with an `=`). 39265 }, 39266 ], 39267 "type": "A String", # The type of condition. 39268 }, 39269 }, 39270 }, 39271 }, 39272 ], 39273 "protectedRanges": [ # The protected ranges in this sheet. 39274 { # A protected range. 39275 "unprotectedRanges": [ # The list of unprotected ranges within a protected sheet. 39276 # Unprotected ranges are only supported on protected sheets. 39277 { # A range on a sheet. 39278 # All indexes are zero-based. 39279 # Indexes are half open, e.g the start index is inclusive 39280 # and the end index is exclusive -- [start_index, end_index). 39281 # Missing indexes indicate the range is unbounded on that side. 39282 # 39283 # For example, if `"Sheet1"` is sheet ID 0, then: 39284 # 39285 # `Sheet1!A1:A1 == sheet_id: 0, 39286 # start_row_index: 0, end_row_index: 1, 39287 # start_column_index: 0, end_column_index: 1` 39288 # 39289 # `Sheet1!A3:B4 == sheet_id: 0, 39290 # start_row_index: 2, end_row_index: 4, 39291 # start_column_index: 0, end_column_index: 2` 39292 # 39293 # `Sheet1!A:B == sheet_id: 0, 39294 # start_column_index: 0, end_column_index: 2` 39295 # 39296 # `Sheet1!A5:B == sheet_id: 0, 39297 # start_row_index: 4, 39298 # start_column_index: 0, end_column_index: 2` 39299 # 39300 # `Sheet1 == sheet_id:0` 39301 # 39302 # The start index must always be less than or equal to the end index. 39303 # If the start index equals the end index, then the range is empty. 39304 # Empty ranges are typically not meaningful and are usually rendered in the 39305 # UI as `#REF!`. 39306 "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded. 39307 "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded. 39308 "sheetId": 42, # The sheet this range is on. 39309 "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded. 39310 "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded. 39311 }, 39312 ], 39313 "requestingUserCanEdit": True or False, # True if the user who requested this protected range can edit the 39314 # protected area. 39315 # This field is read-only. 39316 "description": "A String", # The description of this protected range. 39317 "namedRangeId": "A String", # The named range this protected range is backed by, if any. 39318 # 39319 # When writing, only one of range or named_range_id 39320 # may be set. 39321 "editors": { # The editors of a protected range. # The users and groups with edit access to the protected range. 39322 # This field is only visible to users with edit access to the protected 39323 # range and the document. 39324 # Editors are not supported with warning_only protection. 39325 "domainUsersCanEdit": True or False, # True if anyone in the document's domain has edit access to the protected 39326 # range. Domain protection is only supported on documents within a domain. 39327 "users": [ # The email addresses of users with edit access to the protected range. 39328 "A String", 39329 ], 39330 "groups": [ # The email addresses of groups with edit access to the protected range. 39331 "A String", 39332 ], 39333 }, 39334 "protectedRangeId": 42, # The ID of the protected range. 39335 # This field is read-only. 39336 "warningOnly": True or False, # True if this protected range will show a warning when editing. 39337 # Warning-based protection means that every user can edit data in the 39338 # protected range, except editing will prompt a warning asking the user 39339 # to confirm the edit. 39340 # 39341 # When writing: if this field is true, then editors is ignored. 39342 # Additionally, if this field is changed from true to false and the 39343 # `editors` field is not set (nor included in the field mask), then 39344 # the editors will be set to all the editors in the document. 39345 "range": { # A range on a sheet. # The range that is being protected. 39346 # The range may be fully unbounded, in which case this is considered 39347 # a protected sheet. 39348 # 39349 # When writing, only one of range or named_range_id 39350 # may be set. 39351 # All indexes are zero-based. 39352 # Indexes are half open, e.g the start index is inclusive 39353 # and the end index is exclusive -- [start_index, end_index). 39354 # Missing indexes indicate the range is unbounded on that side. 39355 # 39356 # For example, if `"Sheet1"` is sheet ID 0, then: 39357 # 39358 # `Sheet1!A1:A1 == sheet_id: 0, 39359 # start_row_index: 0, end_row_index: 1, 39360 # start_column_index: 0, end_column_index: 1` 39361 # 39362 # `Sheet1!A3:B4 == sheet_id: 0, 39363 # start_row_index: 2, end_row_index: 4, 39364 # start_column_index: 0, end_column_index: 2` 39365 # 39366 # `Sheet1!A:B == sheet_id: 0, 39367 # start_column_index: 0, end_column_index: 2` 39368 # 39369 # `Sheet1!A5:B == sheet_id: 0, 39370 # start_row_index: 4, 39371 # start_column_index: 0, end_column_index: 2` 39372 # 39373 # `Sheet1 == sheet_id:0` 39374 # 39375 # The start index must always be less than or equal to the end index. 39376 # If the start index equals the end index, then the range is empty. 39377 # Empty ranges are typically not meaningful and are usually rendered in the 39378 # UI as `#REF!`. 39379 "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded. 39380 "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded. 39381 "sheetId": 42, # The sheet this range is on. 39382 "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded. 39383 "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded. 39384 }, 39385 }, 39386 ], 39387 "data": [ # Data in the grid, if this is a grid sheet. 39388 # The number of GridData objects returned is dependent on the number of 39389 # ranges requested on this sheet. For example, if this is representing 39390 # `Sheet1`, and the spreadsheet was requested with ranges 39391 # `Sheet1!A1:C10` and `Sheet1!D15:E20`, then the first GridData will have a 39392 # startRow/startColumn of `0`, 39393 # while the second one will have `startRow 14` (zero-based row 15), 39394 # and `startColumn 3` (zero-based column D). 39395 { # Data in the grid, as well as metadata about the dimensions. 39396 "rowMetadata": [ # Metadata about the requested rows in the grid, starting with the row 39397 # in start_row. 39398 { # Properties about a dimension. 39399 "pixelSize": 42, # The height (if a row) or width (if a column) of the dimension in pixels. 39400 "hiddenByUser": True or False, # True if this dimension is explicitly hidden. 39401 "hiddenByFilter": True or False, # True if this dimension is being filtered. 39402 # This field is read-only. 39403 }, 39404 ], 39405 "startColumn": 42, # The first column this GridData refers to, zero-based. 39406 "rowData": [ # The data in the grid, one entry per row, 39407 # starting with the row in startRow. 39408 # The values in RowData will correspond to columns starting 39409 # at start_column. 39410 { # Data about each cell in a row. 39411 "values": [ # The values in the row, one per column. 39412 { # Data about a specific cell. 39413 "pivotTable": { # A pivot table. # A pivot table anchored at this cell. The size of pivot table itself 39414 # is computed dynamically based on its data, grouping, filters, values, 39415 # etc. Only the top-left cell of the pivot table contains the pivot table 39416 # definition. The other cells will contain the calculated values of the 39417 # results of the pivot in their effective_value fields. 39418 "valueLayout": "A String", # Whether values should be listed horizontally (as columns) 39419 # or vertically (as rows). 39420 "rows": [ # Each row grouping in the pivot table. 39421 { # A single grouping (either row or column) in a pivot table. 39422 "showTotals": True or False, # True if the pivot table should include the totals for this grouping. 39423 "valueMetadata": [ # Metadata about values in the grouping. 39424 { # Metadata about a value in a pivot grouping. 39425 "collapsed": True or False, # True if the data corresponding to the value is collapsed. 39426 "value": { # The kinds of value that a cell in a spreadsheet can have. # The calculated value the metadata corresponds to. 39427 # (Note that formulaValue is not valid, 39428 # because the values will be calculated.) 39429 "stringValue": "A String", # Represents a string value. 39430 # Leading single quotes are not included. For example, if the user typed 39431 # `'123` into the UI, this would be represented as a `stringValue` of 39432 # `"123"`. 39433 "boolValue": True or False, # Represents a boolean value. 39434 "errorValue": { # An error in a cell. # Represents an error. 39435 # This field is read-only. 39436 "message": "A String", # A message with more information about the error 39437 # (in the spreadsheet's locale). 39438 "type": "A String", # The type of error. 39439 }, 39440 "formulaValue": "A String", # Represents a formula. 39441 "numberValue": 3.14, # Represents a double value. 39442 # Note: Dates, Times and DateTimes are represented as doubles in 39443 # "serial number" format. 39444 }, 39445 }, 39446 ], 39447 "valueBucket": { # Information about which values in a pivot group should be used for sorting. # The bucket of the opposite pivot group to sort by. 39448 # If not specified, sorting is alphabetical by this group's values. 39449 "buckets": [ # Determines the bucket from which values are chosen to sort. 39450 # 39451 # For example, in a pivot table with one row group & two column groups, 39452 # the row group can list up to two values. The first value corresponds 39453 # to a value within the first column group, and the second value 39454 # corresponds to a value in the second column group. If no values 39455 # are listed, this would indicate that the row should be sorted according 39456 # to the "Grand Total" over the column groups. If a single value is listed, 39457 # this would correspond to using the "Total" of that bucket. 39458 { # The kinds of value that a cell in a spreadsheet can have. 39459 "stringValue": "A String", # Represents a string value. 39460 # Leading single quotes are not included. For example, if the user typed 39461 # `'123` into the UI, this would be represented as a `stringValue` of 39462 # `"123"`. 39463 "boolValue": True or False, # Represents a boolean value. 39464 "errorValue": { # An error in a cell. # Represents an error. 39465 # This field is read-only. 39466 "message": "A String", # A message with more information about the error 39467 # (in the spreadsheet's locale). 39468 "type": "A String", # The type of error. 39469 }, 39470 "formulaValue": "A String", # Represents a formula. 39471 "numberValue": 3.14, # Represents a double value. 39472 # Note: Dates, Times and DateTimes are represented as doubles in 39473 # "serial number" format. 39474 }, 39475 ], 39476 "valuesIndex": 42, # The offset in the PivotTable.values list which the values in this 39477 # grouping should be sorted by. 39478 }, 39479 "sortOrder": "A String", # The order the values in this group should be sorted. 39480 "sourceColumnOffset": 42, # The column offset of the source range that this grouping is based on. 39481 # 39482 # For example, if the source was `C10:E15`, a `sourceColumnOffset` of `0` 39483 # means this group refers to column `C`, whereas the offset `1` would refer 39484 # to column `D`. 39485 }, 39486 ], 39487 "source": { # A range on a sheet. # The range the pivot table is reading data from. 39488 # All indexes are zero-based. 39489 # Indexes are half open, e.g the start index is inclusive 39490 # and the end index is exclusive -- [start_index, end_index). 39491 # Missing indexes indicate the range is unbounded on that side. 39492 # 39493 # For example, if `"Sheet1"` is sheet ID 0, then: 39494 # 39495 # `Sheet1!A1:A1 == sheet_id: 0, 39496 # start_row_index: 0, end_row_index: 1, 39497 # start_column_index: 0, end_column_index: 1` 39498 # 39499 # `Sheet1!A3:B4 == sheet_id: 0, 39500 # start_row_index: 2, end_row_index: 4, 39501 # start_column_index: 0, end_column_index: 2` 39502 # 39503 # `Sheet1!A:B == sheet_id: 0, 39504 # start_column_index: 0, end_column_index: 2` 39505 # 39506 # `Sheet1!A5:B == sheet_id: 0, 39507 # start_row_index: 4, 39508 # start_column_index: 0, end_column_index: 2` 39509 # 39510 # `Sheet1 == sheet_id:0` 39511 # 39512 # The start index must always be less than or equal to the end index. 39513 # If the start index equals the end index, then the range is empty. 39514 # Empty ranges are typically not meaningful and are usually rendered in the 39515 # UI as `#REF!`. 39516 "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded. 39517 "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded. 39518 "sheetId": 42, # The sheet this range is on. 39519 "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded. 39520 "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded. 39521 }, 39522 "values": [ # A list of values to include in the pivot table. 39523 { # The definition of how a value in a pivot table should be calculated. 39524 "formula": "A String", # A custom formula to calculate the value. The formula must start 39525 # with an `=` character. 39526 "sourceColumnOffset": 42, # The column offset of the source range that this value reads from. 39527 # 39528 # For example, if the source was `C10:E15`, a `sourceColumnOffset` of `0` 39529 # means this value refers to column `C`, whereas the offset `1` would 39530 # refer to column `D`. 39531 "summarizeFunction": "A String", # A function to summarize the value. 39532 # If formula is set, the only supported values are 39533 # SUM and 39534 # CUSTOM. 39535 # If sourceColumnOffset is set, then `CUSTOM` 39536 # is not supported. 39537 "name": "A String", # A name to use for the value. This is only used if formula was set. 39538 # Otherwise, the column name is used. 39539 }, 39540 ], 39541 "criteria": { # An optional mapping of filters per source column offset. 39542 # 39543 # The filters will be applied before aggregating data into the pivot table. 39544 # The map's key is the column offset of the source range that you want to 39545 # filter, and the value is the criteria for that column. 39546 # 39547 # For example, if the source was `C10:E15`, a key of `0` will have the filter 39548 # for column `C`, whereas the key `1` is for column `D`. 39549 "a_key": { # Criteria for showing/hiding rows in a pivot table. 39550 "visibleValues": [ # Values that should be included. Values not listed here are excluded. 39551 "A String", 39552 ], 39553 }, 39554 }, 39555 "columns": [ # Each column grouping in the pivot table. 39556 { # A single grouping (either row or column) in a pivot table. 39557 "showTotals": True or False, # True if the pivot table should include the totals for this grouping. 39558 "valueMetadata": [ # Metadata about values in the grouping. 39559 { # Metadata about a value in a pivot grouping. 39560 "collapsed": True or False, # True if the data corresponding to the value is collapsed. 39561 "value": { # The kinds of value that a cell in a spreadsheet can have. # The calculated value the metadata corresponds to. 39562 # (Note that formulaValue is not valid, 39563 # because the values will be calculated.) 39564 "stringValue": "A String", # Represents a string value. 39565 # Leading single quotes are not included. For example, if the user typed 39566 # `'123` into the UI, this would be represented as a `stringValue` of 39567 # `"123"`. 39568 "boolValue": True or False, # Represents a boolean value. 39569 "errorValue": { # An error in a cell. # Represents an error. 39570 # This field is read-only. 39571 "message": "A String", # A message with more information about the error 39572 # (in the spreadsheet's locale). 39573 "type": "A String", # The type of error. 39574 }, 39575 "formulaValue": "A String", # Represents a formula. 39576 "numberValue": 3.14, # Represents a double value. 39577 # Note: Dates, Times and DateTimes are represented as doubles in 39578 # "serial number" format. 39579 }, 39580 }, 39581 ], 39582 "valueBucket": { # Information about which values in a pivot group should be used for sorting. # The bucket of the opposite pivot group to sort by. 39583 # If not specified, sorting is alphabetical by this group's values. 39584 "buckets": [ # Determines the bucket from which values are chosen to sort. 39585 # 39586 # For example, in a pivot table with one row group & two column groups, 39587 # the row group can list up to two values. The first value corresponds 39588 # to a value within the first column group, and the second value 39589 # corresponds to a value in the second column group. If no values 39590 # are listed, this would indicate that the row should be sorted according 39591 # to the "Grand Total" over the column groups. If a single value is listed, 39592 # this would correspond to using the "Total" of that bucket. 39593 { # The kinds of value that a cell in a spreadsheet can have. 39594 "stringValue": "A String", # Represents a string value. 39595 # Leading single quotes are not included. For example, if the user typed 39596 # `'123` into the UI, this would be represented as a `stringValue` of 39597 # `"123"`. 39598 "boolValue": True or False, # Represents a boolean value. 39599 "errorValue": { # An error in a cell. # Represents an error. 39600 # This field is read-only. 39601 "message": "A String", # A message with more information about the error 39602 # (in the spreadsheet's locale). 39603 "type": "A String", # The type of error. 39604 }, 39605 "formulaValue": "A String", # Represents a formula. 39606 "numberValue": 3.14, # Represents a double value. 39607 # Note: Dates, Times and DateTimes are represented as doubles in 39608 # "serial number" format. 39609 }, 39610 ], 39611 "valuesIndex": 42, # The offset in the PivotTable.values list which the values in this 39612 # grouping should be sorted by. 39613 }, 39614 "sortOrder": "A String", # The order the values in this group should be sorted. 39615 "sourceColumnOffset": 42, # The column offset of the source range that this grouping is based on. 39616 # 39617 # For example, if the source was `C10:E15`, a `sourceColumnOffset` of `0` 39618 # means this group refers to column `C`, whereas the offset `1` would refer 39619 # to column `D`. 39620 }, 39621 ], 39622 }, 39623 "hyperlink": "A String", # A hyperlink this cell points to, if any. 39624 # This field is read-only. (To set it, use a `=HYPERLINK` formula 39625 # in the userEnteredValue.formulaValue 39626 # field.) 39627 "effectiveValue": { # The kinds of value that a cell in a spreadsheet can have. # The effective value of the cell. For cells with formulas, this will be 39628 # the calculated value. For cells with literals, this will be 39629 # the same as the user_entered_value. 39630 # This field is read-only. 39631 "stringValue": "A String", # Represents a string value. 39632 # Leading single quotes are not included. For example, if the user typed 39633 # `'123` into the UI, this would be represented as a `stringValue` of 39634 # `"123"`. 39635 "boolValue": True or False, # Represents a boolean value. 39636 "errorValue": { # An error in a cell. # Represents an error. 39637 # This field is read-only. 39638 "message": "A String", # A message with more information about the error 39639 # (in the spreadsheet's locale). 39640 "type": "A String", # The type of error. 39641 }, 39642 "formulaValue": "A String", # Represents a formula. 39643 "numberValue": 3.14, # Represents a double value. 39644 # Note: Dates, Times and DateTimes are represented as doubles in 39645 # "serial number" format. 39646 }, 39647 "formattedValue": "A String", # The formatted value of the cell. 39648 # This is the value as it's shown to the user. 39649 # This field is read-only. 39650 "userEnteredValue": { # The kinds of value that a cell in a spreadsheet can have. # The value the user entered in the cell. e.g, `1234`, `'Hello'`, or `=NOW()` 39651 # Note: Dates, Times and DateTimes are represented as doubles in 39652 # serial number format. 39653 "stringValue": "A String", # Represents a string value. 39654 # Leading single quotes are not included. For example, if the user typed 39655 # `'123` into the UI, this would be represented as a `stringValue` of 39656 # `"123"`. 39657 "boolValue": True or False, # Represents a boolean value. 39658 "errorValue": { # An error in a cell. # Represents an error. 39659 # This field is read-only. 39660 "message": "A String", # A message with more information about the error 39661 # (in the spreadsheet's locale). 39662 "type": "A String", # The type of error. 39663 }, 39664 "formulaValue": "A String", # Represents a formula. 39665 "numberValue": 3.14, # Represents a double value. 39666 # Note: Dates, Times and DateTimes are represented as doubles in 39667 # "serial number" format. 39668 }, 39669 "note": "A String", # Any note on the cell. 39670 "effectiveFormat": { # The format of a cell. # The effective format being used by the cell. 39671 # This includes the results of applying any conditional formatting and, 39672 # if the cell contains a formula, the computed number format. 39673 # If the effective format is the default format, effective format will 39674 # not be written. 39675 # This field is read-only. 39676 "numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user. 39677 "pattern": "A String", # Pattern string used for formatting. If not set, a default pattern based on 39678 # the user's locale will be used if necessary for the given type. 39679 # See the [Date and Number Formats guide](/sheets/api/guides/formats) for more 39680 # information about the supported patterns. 39681 "type": "A String", # The type of the number format. 39682 # When writing, this field must be set. 39683 }, 39684 "textDirection": "A String", # The direction of the text in the cell. 39685 "padding": { # The amount of padding around the cell, in pixels. # The padding of the cell. 39686 # When updating padding, every field must be specified. 39687 "top": 42, # The top padding of the cell. 39688 "right": 42, # The right padding of the cell. 39689 "bottom": 42, # The bottom padding of the cell. 39690 "left": 42, # The left padding of the cell. 39691 }, 39692 "verticalAlignment": "A String", # The vertical alignment of the value in the cell. 39693 "backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell. 39694 # for simplicity of conversion to/from color representations in various 39695 # languages over compactness; for example, the fields of this representation 39696 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 39697 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 39698 # method in iOS; and, with just a little work, it can be easily formatted into 39699 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 39700 # 39701 # Example (Java): 39702 # 39703 # import com.google.type.Color; 39704 # 39705 # // ... 39706 # public static java.awt.Color fromProto(Color protocolor) { 39707 # float alpha = protocolor.hasAlpha() 39708 # ? protocolor.getAlpha().getValue() 39709 # : 1.0; 39710 # 39711 # return new java.awt.Color( 39712 # protocolor.getRed(), 39713 # protocolor.getGreen(), 39714 # protocolor.getBlue(), 39715 # alpha); 39716 # } 39717 # 39718 # public static Color toProto(java.awt.Color color) { 39719 # float red = (float) color.getRed(); 39720 # float green = (float) color.getGreen(); 39721 # float blue = (float) color.getBlue(); 39722 # float denominator = 255.0; 39723 # Color.Builder resultBuilder = 39724 # Color 39725 # .newBuilder() 39726 # .setRed(red / denominator) 39727 # .setGreen(green / denominator) 39728 # .setBlue(blue / denominator); 39729 # int alpha = color.getAlpha(); 39730 # if (alpha != 255) { 39731 # result.setAlpha( 39732 # FloatValue 39733 # .newBuilder() 39734 # .setValue(((float) alpha) / denominator) 39735 # .build()); 39736 # } 39737 # return resultBuilder.build(); 39738 # } 39739 # // ... 39740 # 39741 # Example (iOS / Obj-C): 39742 # 39743 # // ... 39744 # static UIColor* fromProto(Color* protocolor) { 39745 # float red = [protocolor red]; 39746 # float green = [protocolor green]; 39747 # float blue = [protocolor blue]; 39748 # FloatValue* alpha_wrapper = [protocolor alpha]; 39749 # float alpha = 1.0; 39750 # if (alpha_wrapper != nil) { 39751 # alpha = [alpha_wrapper value]; 39752 # } 39753 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 39754 # } 39755 # 39756 # static Color* toProto(UIColor* color) { 39757 # CGFloat red, green, blue, alpha; 39758 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 39759 # return nil; 39760 # } 39761 # Color* result = [Color alloc] init]; 39762 # [result setRed:red]; 39763 # [result setGreen:green]; 39764 # [result setBlue:blue]; 39765 # if (alpha <= 0.9999) { 39766 # [result setAlpha:floatWrapperWithValue(alpha)]; 39767 # } 39768 # [result autorelease]; 39769 # return result; 39770 # } 39771 # // ... 39772 # 39773 # Example (JavaScript): 39774 # 39775 # // ... 39776 # 39777 # var protoToCssColor = function(rgb_color) { 39778 # var redFrac = rgb_color.red || 0.0; 39779 # var greenFrac = rgb_color.green || 0.0; 39780 # var blueFrac = rgb_color.blue || 0.0; 39781 # var red = Math.floor(redFrac * 255); 39782 # var green = Math.floor(greenFrac * 255); 39783 # var blue = Math.floor(blueFrac * 255); 39784 # 39785 # if (!('alpha' in rgb_color)) { 39786 # return rgbToCssColor_(red, green, blue); 39787 # } 39788 # 39789 # var alphaFrac = rgb_color.alpha.value || 0.0; 39790 # var rgbParams = [red, green, blue].join(','); 39791 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 39792 # }; 39793 # 39794 # var rgbToCssColor_ = function(red, green, blue) { 39795 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 39796 # var hexString = rgbNumber.toString(16); 39797 # var missingZeros = 6 - hexString.length; 39798 # var resultBuilder = ['#']; 39799 # for (var i = 0; i < missingZeros; i++) { 39800 # resultBuilder.push('0'); 39801 # } 39802 # resultBuilder.push(hexString); 39803 # return resultBuilder.join(''); 39804 # }; 39805 # 39806 # // ... 39807 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 39808 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 39809 # the final pixel color is defined by the equation: 39810 # 39811 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 39812 # 39813 # This means that a value of 1.0 corresponds to a solid color, whereas 39814 # a value of 0.0 corresponds to a completely transparent color. This 39815 # uses a wrapper message rather than a simple float scalar so that it is 39816 # possible to distinguish between a default value and the value being unset. 39817 # If omitted, this color object is to be rendered as a solid color 39818 # (as if the alpha value had been explicitly given with a value of 1.0). 39819 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 39820 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 39821 }, 39822 "horizontalAlignment": "A String", # The horizontal alignment of the value in the cell. 39823 "textFormat": { # The format of a run of text in a cell. # The format of the text in the cell (unless overridden by a format run). 39824 # Absent values indicate that the field isn't specified. 39825 "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text. 39826 # for simplicity of conversion to/from color representations in various 39827 # languages over compactness; for example, the fields of this representation 39828 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 39829 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 39830 # method in iOS; and, with just a little work, it can be easily formatted into 39831 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 39832 # 39833 # Example (Java): 39834 # 39835 # import com.google.type.Color; 39836 # 39837 # // ... 39838 # public static java.awt.Color fromProto(Color protocolor) { 39839 # float alpha = protocolor.hasAlpha() 39840 # ? protocolor.getAlpha().getValue() 39841 # : 1.0; 39842 # 39843 # return new java.awt.Color( 39844 # protocolor.getRed(), 39845 # protocolor.getGreen(), 39846 # protocolor.getBlue(), 39847 # alpha); 39848 # } 39849 # 39850 # public static Color toProto(java.awt.Color color) { 39851 # float red = (float) color.getRed(); 39852 # float green = (float) color.getGreen(); 39853 # float blue = (float) color.getBlue(); 39854 # float denominator = 255.0; 39855 # Color.Builder resultBuilder = 39856 # Color 39857 # .newBuilder() 39858 # .setRed(red / denominator) 39859 # .setGreen(green / denominator) 39860 # .setBlue(blue / denominator); 39861 # int alpha = color.getAlpha(); 39862 # if (alpha != 255) { 39863 # result.setAlpha( 39864 # FloatValue 39865 # .newBuilder() 39866 # .setValue(((float) alpha) / denominator) 39867 # .build()); 39868 # } 39869 # return resultBuilder.build(); 39870 # } 39871 # // ... 39872 # 39873 # Example (iOS / Obj-C): 39874 # 39875 # // ... 39876 # static UIColor* fromProto(Color* protocolor) { 39877 # float red = [protocolor red]; 39878 # float green = [protocolor green]; 39879 # float blue = [protocolor blue]; 39880 # FloatValue* alpha_wrapper = [protocolor alpha]; 39881 # float alpha = 1.0; 39882 # if (alpha_wrapper != nil) { 39883 # alpha = [alpha_wrapper value]; 39884 # } 39885 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 39886 # } 39887 # 39888 # static Color* toProto(UIColor* color) { 39889 # CGFloat red, green, blue, alpha; 39890 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 39891 # return nil; 39892 # } 39893 # Color* result = [Color alloc] init]; 39894 # [result setRed:red]; 39895 # [result setGreen:green]; 39896 # [result setBlue:blue]; 39897 # if (alpha <= 0.9999) { 39898 # [result setAlpha:floatWrapperWithValue(alpha)]; 39899 # } 39900 # [result autorelease]; 39901 # return result; 39902 # } 39903 # // ... 39904 # 39905 # Example (JavaScript): 39906 # 39907 # // ... 39908 # 39909 # var protoToCssColor = function(rgb_color) { 39910 # var redFrac = rgb_color.red || 0.0; 39911 # var greenFrac = rgb_color.green || 0.0; 39912 # var blueFrac = rgb_color.blue || 0.0; 39913 # var red = Math.floor(redFrac * 255); 39914 # var green = Math.floor(greenFrac * 255); 39915 # var blue = Math.floor(blueFrac * 255); 39916 # 39917 # if (!('alpha' in rgb_color)) { 39918 # return rgbToCssColor_(red, green, blue); 39919 # } 39920 # 39921 # var alphaFrac = rgb_color.alpha.value || 0.0; 39922 # var rgbParams = [red, green, blue].join(','); 39923 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 39924 # }; 39925 # 39926 # var rgbToCssColor_ = function(red, green, blue) { 39927 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 39928 # var hexString = rgbNumber.toString(16); 39929 # var missingZeros = 6 - hexString.length; 39930 # var resultBuilder = ['#']; 39931 # for (var i = 0; i < missingZeros; i++) { 39932 # resultBuilder.push('0'); 39933 # } 39934 # resultBuilder.push(hexString); 39935 # return resultBuilder.join(''); 39936 # }; 39937 # 39938 # // ... 39939 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 39940 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 39941 # the final pixel color is defined by the equation: 39942 # 39943 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 39944 # 39945 # This means that a value of 1.0 corresponds to a solid color, whereas 39946 # a value of 0.0 corresponds to a completely transparent color. This 39947 # uses a wrapper message rather than a simple float scalar so that it is 39948 # possible to distinguish between a default value and the value being unset. 39949 # If omitted, this color object is to be rendered as a solid color 39950 # (as if the alpha value had been explicitly given with a value of 1.0). 39951 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 39952 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 39953 }, 39954 "bold": True or False, # True if the text is bold. 39955 "strikethrough": True or False, # True if the text has a strikethrough. 39956 "fontFamily": "A String", # The font family. 39957 "fontSize": 42, # The size of the font. 39958 "italic": True or False, # True if the text is italicized. 39959 "underline": True or False, # True if the text is underlined. 39960 }, 39961 "textRotation": { # The rotation applied to text in a cell. # The rotation applied to text in a cell 39962 "angle": 42, # The angle between the standard orientation and the desired orientation. 39963 # Measured in degrees. Valid values are between -90 and 90. Positive 39964 # angles are angled upwards, negative are angled downwards. 39965 # 39966 # Note: For LTR text direction positive angles are in the counterclockwise 39967 # direction, whereas for RTL they are in the clockwise direction 39968 "vertical": True or False, # If true, text reads top to bottom, but the orientation of individual 39969 # characters is unchanged. 39970 # For example: 39971 # 39972 # | V | 39973 # | e | 39974 # | r | 39975 # | t | 39976 # | i | 39977 # | c | 39978 # | a | 39979 # | l | 39980 }, 39981 "hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell. 39982 "borders": { # The borders of the cell. # The borders of the cell. 39983 "top": { # A border along a cell. # The top border of the cell. 39984 "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border. 39985 # for simplicity of conversion to/from color representations in various 39986 # languages over compactness; for example, the fields of this representation 39987 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 39988 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 39989 # method in iOS; and, with just a little work, it can be easily formatted into 39990 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 39991 # 39992 # Example (Java): 39993 # 39994 # import com.google.type.Color; 39995 # 39996 # // ... 39997 # public static java.awt.Color fromProto(Color protocolor) { 39998 # float alpha = protocolor.hasAlpha() 39999 # ? protocolor.getAlpha().getValue() 40000 # : 1.0; 40001 # 40002 # return new java.awt.Color( 40003 # protocolor.getRed(), 40004 # protocolor.getGreen(), 40005 # protocolor.getBlue(), 40006 # alpha); 40007 # } 40008 # 40009 # public static Color toProto(java.awt.Color color) { 40010 # float red = (float) color.getRed(); 40011 # float green = (float) color.getGreen(); 40012 # float blue = (float) color.getBlue(); 40013 # float denominator = 255.0; 40014 # Color.Builder resultBuilder = 40015 # Color 40016 # .newBuilder() 40017 # .setRed(red / denominator) 40018 # .setGreen(green / denominator) 40019 # .setBlue(blue / denominator); 40020 # int alpha = color.getAlpha(); 40021 # if (alpha != 255) { 40022 # result.setAlpha( 40023 # FloatValue 40024 # .newBuilder() 40025 # .setValue(((float) alpha) / denominator) 40026 # .build()); 40027 # } 40028 # return resultBuilder.build(); 40029 # } 40030 # // ... 40031 # 40032 # Example (iOS / Obj-C): 40033 # 40034 # // ... 40035 # static UIColor* fromProto(Color* protocolor) { 40036 # float red = [protocolor red]; 40037 # float green = [protocolor green]; 40038 # float blue = [protocolor blue]; 40039 # FloatValue* alpha_wrapper = [protocolor alpha]; 40040 # float alpha = 1.0; 40041 # if (alpha_wrapper != nil) { 40042 # alpha = [alpha_wrapper value]; 40043 # } 40044 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 40045 # } 40046 # 40047 # static Color* toProto(UIColor* color) { 40048 # CGFloat red, green, blue, alpha; 40049 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 40050 # return nil; 40051 # } 40052 # Color* result = [Color alloc] init]; 40053 # [result setRed:red]; 40054 # [result setGreen:green]; 40055 # [result setBlue:blue]; 40056 # if (alpha <= 0.9999) { 40057 # [result setAlpha:floatWrapperWithValue(alpha)]; 40058 # } 40059 # [result autorelease]; 40060 # return result; 40061 # } 40062 # // ... 40063 # 40064 # Example (JavaScript): 40065 # 40066 # // ... 40067 # 40068 # var protoToCssColor = function(rgb_color) { 40069 # var redFrac = rgb_color.red || 0.0; 40070 # var greenFrac = rgb_color.green || 0.0; 40071 # var blueFrac = rgb_color.blue || 0.0; 40072 # var red = Math.floor(redFrac * 255); 40073 # var green = Math.floor(greenFrac * 255); 40074 # var blue = Math.floor(blueFrac * 255); 40075 # 40076 # if (!('alpha' in rgb_color)) { 40077 # return rgbToCssColor_(red, green, blue); 40078 # } 40079 # 40080 # var alphaFrac = rgb_color.alpha.value || 0.0; 40081 # var rgbParams = [red, green, blue].join(','); 40082 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 40083 # }; 40084 # 40085 # var rgbToCssColor_ = function(red, green, blue) { 40086 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 40087 # var hexString = rgbNumber.toString(16); 40088 # var missingZeros = 6 - hexString.length; 40089 # var resultBuilder = ['#']; 40090 # for (var i = 0; i < missingZeros; i++) { 40091 # resultBuilder.push('0'); 40092 # } 40093 # resultBuilder.push(hexString); 40094 # return resultBuilder.join(''); 40095 # }; 40096 # 40097 # // ... 40098 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 40099 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 40100 # the final pixel color is defined by the equation: 40101 # 40102 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 40103 # 40104 # This means that a value of 1.0 corresponds to a solid color, whereas 40105 # a value of 0.0 corresponds to a completely transparent color. This 40106 # uses a wrapper message rather than a simple float scalar so that it is 40107 # possible to distinguish between a default value and the value being unset. 40108 # If omitted, this color object is to be rendered as a solid color 40109 # (as if the alpha value had been explicitly given with a value of 1.0). 40110 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 40111 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 40112 }, 40113 "width": 42, # The width of the border, in pixels. 40114 # Deprecated; the width is determined by the "style" field. 40115 "style": "A String", # The style of the border. 40116 }, 40117 "right": { # A border along a cell. # The right border of the cell. 40118 "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border. 40119 # for simplicity of conversion to/from color representations in various 40120 # languages over compactness; for example, the fields of this representation 40121 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 40122 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 40123 # method in iOS; and, with just a little work, it can be easily formatted into 40124 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 40125 # 40126 # Example (Java): 40127 # 40128 # import com.google.type.Color; 40129 # 40130 # // ... 40131 # public static java.awt.Color fromProto(Color protocolor) { 40132 # float alpha = protocolor.hasAlpha() 40133 # ? protocolor.getAlpha().getValue() 40134 # : 1.0; 40135 # 40136 # return new java.awt.Color( 40137 # protocolor.getRed(), 40138 # protocolor.getGreen(), 40139 # protocolor.getBlue(), 40140 # alpha); 40141 # } 40142 # 40143 # public static Color toProto(java.awt.Color color) { 40144 # float red = (float) color.getRed(); 40145 # float green = (float) color.getGreen(); 40146 # float blue = (float) color.getBlue(); 40147 # float denominator = 255.0; 40148 # Color.Builder resultBuilder = 40149 # Color 40150 # .newBuilder() 40151 # .setRed(red / denominator) 40152 # .setGreen(green / denominator) 40153 # .setBlue(blue / denominator); 40154 # int alpha = color.getAlpha(); 40155 # if (alpha != 255) { 40156 # result.setAlpha( 40157 # FloatValue 40158 # .newBuilder() 40159 # .setValue(((float) alpha) / denominator) 40160 # .build()); 40161 # } 40162 # return resultBuilder.build(); 40163 # } 40164 # // ... 40165 # 40166 # Example (iOS / Obj-C): 40167 # 40168 # // ... 40169 # static UIColor* fromProto(Color* protocolor) { 40170 # float red = [protocolor red]; 40171 # float green = [protocolor green]; 40172 # float blue = [protocolor blue]; 40173 # FloatValue* alpha_wrapper = [protocolor alpha]; 40174 # float alpha = 1.0; 40175 # if (alpha_wrapper != nil) { 40176 # alpha = [alpha_wrapper value]; 40177 # } 40178 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 40179 # } 40180 # 40181 # static Color* toProto(UIColor* color) { 40182 # CGFloat red, green, blue, alpha; 40183 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 40184 # return nil; 40185 # } 40186 # Color* result = [Color alloc] init]; 40187 # [result setRed:red]; 40188 # [result setGreen:green]; 40189 # [result setBlue:blue]; 40190 # if (alpha <= 0.9999) { 40191 # [result setAlpha:floatWrapperWithValue(alpha)]; 40192 # } 40193 # [result autorelease]; 40194 # return result; 40195 # } 40196 # // ... 40197 # 40198 # Example (JavaScript): 40199 # 40200 # // ... 40201 # 40202 # var protoToCssColor = function(rgb_color) { 40203 # var redFrac = rgb_color.red || 0.0; 40204 # var greenFrac = rgb_color.green || 0.0; 40205 # var blueFrac = rgb_color.blue || 0.0; 40206 # var red = Math.floor(redFrac * 255); 40207 # var green = Math.floor(greenFrac * 255); 40208 # var blue = Math.floor(blueFrac * 255); 40209 # 40210 # if (!('alpha' in rgb_color)) { 40211 # return rgbToCssColor_(red, green, blue); 40212 # } 40213 # 40214 # var alphaFrac = rgb_color.alpha.value || 0.0; 40215 # var rgbParams = [red, green, blue].join(','); 40216 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 40217 # }; 40218 # 40219 # var rgbToCssColor_ = function(red, green, blue) { 40220 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 40221 # var hexString = rgbNumber.toString(16); 40222 # var missingZeros = 6 - hexString.length; 40223 # var resultBuilder = ['#']; 40224 # for (var i = 0; i < missingZeros; i++) { 40225 # resultBuilder.push('0'); 40226 # } 40227 # resultBuilder.push(hexString); 40228 # return resultBuilder.join(''); 40229 # }; 40230 # 40231 # // ... 40232 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 40233 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 40234 # the final pixel color is defined by the equation: 40235 # 40236 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 40237 # 40238 # This means that a value of 1.0 corresponds to a solid color, whereas 40239 # a value of 0.0 corresponds to a completely transparent color. This 40240 # uses a wrapper message rather than a simple float scalar so that it is 40241 # possible to distinguish between a default value and the value being unset. 40242 # If omitted, this color object is to be rendered as a solid color 40243 # (as if the alpha value had been explicitly given with a value of 1.0). 40244 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 40245 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 40246 }, 40247 "width": 42, # The width of the border, in pixels. 40248 # Deprecated; the width is determined by the "style" field. 40249 "style": "A String", # The style of the border. 40250 }, 40251 "bottom": { # A border along a cell. # The bottom border of the cell. 40252 "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border. 40253 # for simplicity of conversion to/from color representations in various 40254 # languages over compactness; for example, the fields of this representation 40255 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 40256 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 40257 # method in iOS; and, with just a little work, it can be easily formatted into 40258 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 40259 # 40260 # Example (Java): 40261 # 40262 # import com.google.type.Color; 40263 # 40264 # // ... 40265 # public static java.awt.Color fromProto(Color protocolor) { 40266 # float alpha = protocolor.hasAlpha() 40267 # ? protocolor.getAlpha().getValue() 40268 # : 1.0; 40269 # 40270 # return new java.awt.Color( 40271 # protocolor.getRed(), 40272 # protocolor.getGreen(), 40273 # protocolor.getBlue(), 40274 # alpha); 40275 # } 40276 # 40277 # public static Color toProto(java.awt.Color color) { 40278 # float red = (float) color.getRed(); 40279 # float green = (float) color.getGreen(); 40280 # float blue = (float) color.getBlue(); 40281 # float denominator = 255.0; 40282 # Color.Builder resultBuilder = 40283 # Color 40284 # .newBuilder() 40285 # .setRed(red / denominator) 40286 # .setGreen(green / denominator) 40287 # .setBlue(blue / denominator); 40288 # int alpha = color.getAlpha(); 40289 # if (alpha != 255) { 40290 # result.setAlpha( 40291 # FloatValue 40292 # .newBuilder() 40293 # .setValue(((float) alpha) / denominator) 40294 # .build()); 40295 # } 40296 # return resultBuilder.build(); 40297 # } 40298 # // ... 40299 # 40300 # Example (iOS / Obj-C): 40301 # 40302 # // ... 40303 # static UIColor* fromProto(Color* protocolor) { 40304 # float red = [protocolor red]; 40305 # float green = [protocolor green]; 40306 # float blue = [protocolor blue]; 40307 # FloatValue* alpha_wrapper = [protocolor alpha]; 40308 # float alpha = 1.0; 40309 # if (alpha_wrapper != nil) { 40310 # alpha = [alpha_wrapper value]; 40311 # } 40312 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 40313 # } 40314 # 40315 # static Color* toProto(UIColor* color) { 40316 # CGFloat red, green, blue, alpha; 40317 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 40318 # return nil; 40319 # } 40320 # Color* result = [Color alloc] init]; 40321 # [result setRed:red]; 40322 # [result setGreen:green]; 40323 # [result setBlue:blue]; 40324 # if (alpha <= 0.9999) { 40325 # [result setAlpha:floatWrapperWithValue(alpha)]; 40326 # } 40327 # [result autorelease]; 40328 # return result; 40329 # } 40330 # // ... 40331 # 40332 # Example (JavaScript): 40333 # 40334 # // ... 40335 # 40336 # var protoToCssColor = function(rgb_color) { 40337 # var redFrac = rgb_color.red || 0.0; 40338 # var greenFrac = rgb_color.green || 0.0; 40339 # var blueFrac = rgb_color.blue || 0.0; 40340 # var red = Math.floor(redFrac * 255); 40341 # var green = Math.floor(greenFrac * 255); 40342 # var blue = Math.floor(blueFrac * 255); 40343 # 40344 # if (!('alpha' in rgb_color)) { 40345 # return rgbToCssColor_(red, green, blue); 40346 # } 40347 # 40348 # var alphaFrac = rgb_color.alpha.value || 0.0; 40349 # var rgbParams = [red, green, blue].join(','); 40350 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 40351 # }; 40352 # 40353 # var rgbToCssColor_ = function(red, green, blue) { 40354 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 40355 # var hexString = rgbNumber.toString(16); 40356 # var missingZeros = 6 - hexString.length; 40357 # var resultBuilder = ['#']; 40358 # for (var i = 0; i < missingZeros; i++) { 40359 # resultBuilder.push('0'); 40360 # } 40361 # resultBuilder.push(hexString); 40362 # return resultBuilder.join(''); 40363 # }; 40364 # 40365 # // ... 40366 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 40367 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 40368 # the final pixel color is defined by the equation: 40369 # 40370 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 40371 # 40372 # This means that a value of 1.0 corresponds to a solid color, whereas 40373 # a value of 0.0 corresponds to a completely transparent color. This 40374 # uses a wrapper message rather than a simple float scalar so that it is 40375 # possible to distinguish between a default value and the value being unset. 40376 # If omitted, this color object is to be rendered as a solid color 40377 # (as if the alpha value had been explicitly given with a value of 1.0). 40378 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 40379 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 40380 }, 40381 "width": 42, # The width of the border, in pixels. 40382 # Deprecated; the width is determined by the "style" field. 40383 "style": "A String", # The style of the border. 40384 }, 40385 "left": { # A border along a cell. # The left border of the cell. 40386 "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border. 40387 # for simplicity of conversion to/from color representations in various 40388 # languages over compactness; for example, the fields of this representation 40389 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 40390 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 40391 # method in iOS; and, with just a little work, it can be easily formatted into 40392 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 40393 # 40394 # Example (Java): 40395 # 40396 # import com.google.type.Color; 40397 # 40398 # // ... 40399 # public static java.awt.Color fromProto(Color protocolor) { 40400 # float alpha = protocolor.hasAlpha() 40401 # ? protocolor.getAlpha().getValue() 40402 # : 1.0; 40403 # 40404 # return new java.awt.Color( 40405 # protocolor.getRed(), 40406 # protocolor.getGreen(), 40407 # protocolor.getBlue(), 40408 # alpha); 40409 # } 40410 # 40411 # public static Color toProto(java.awt.Color color) { 40412 # float red = (float) color.getRed(); 40413 # float green = (float) color.getGreen(); 40414 # float blue = (float) color.getBlue(); 40415 # float denominator = 255.0; 40416 # Color.Builder resultBuilder = 40417 # Color 40418 # .newBuilder() 40419 # .setRed(red / denominator) 40420 # .setGreen(green / denominator) 40421 # .setBlue(blue / denominator); 40422 # int alpha = color.getAlpha(); 40423 # if (alpha != 255) { 40424 # result.setAlpha( 40425 # FloatValue 40426 # .newBuilder() 40427 # .setValue(((float) alpha) / denominator) 40428 # .build()); 40429 # } 40430 # return resultBuilder.build(); 40431 # } 40432 # // ... 40433 # 40434 # Example (iOS / Obj-C): 40435 # 40436 # // ... 40437 # static UIColor* fromProto(Color* protocolor) { 40438 # float red = [protocolor red]; 40439 # float green = [protocolor green]; 40440 # float blue = [protocolor blue]; 40441 # FloatValue* alpha_wrapper = [protocolor alpha]; 40442 # float alpha = 1.0; 40443 # if (alpha_wrapper != nil) { 40444 # alpha = [alpha_wrapper value]; 40445 # } 40446 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 40447 # } 40448 # 40449 # static Color* toProto(UIColor* color) { 40450 # CGFloat red, green, blue, alpha; 40451 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 40452 # return nil; 40453 # } 40454 # Color* result = [Color alloc] init]; 40455 # [result setRed:red]; 40456 # [result setGreen:green]; 40457 # [result setBlue:blue]; 40458 # if (alpha <= 0.9999) { 40459 # [result setAlpha:floatWrapperWithValue(alpha)]; 40460 # } 40461 # [result autorelease]; 40462 # return result; 40463 # } 40464 # // ... 40465 # 40466 # Example (JavaScript): 40467 # 40468 # // ... 40469 # 40470 # var protoToCssColor = function(rgb_color) { 40471 # var redFrac = rgb_color.red || 0.0; 40472 # var greenFrac = rgb_color.green || 0.0; 40473 # var blueFrac = rgb_color.blue || 0.0; 40474 # var red = Math.floor(redFrac * 255); 40475 # var green = Math.floor(greenFrac * 255); 40476 # var blue = Math.floor(blueFrac * 255); 40477 # 40478 # if (!('alpha' in rgb_color)) { 40479 # return rgbToCssColor_(red, green, blue); 40480 # } 40481 # 40482 # var alphaFrac = rgb_color.alpha.value || 0.0; 40483 # var rgbParams = [red, green, blue].join(','); 40484 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 40485 # }; 40486 # 40487 # var rgbToCssColor_ = function(red, green, blue) { 40488 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 40489 # var hexString = rgbNumber.toString(16); 40490 # var missingZeros = 6 - hexString.length; 40491 # var resultBuilder = ['#']; 40492 # for (var i = 0; i < missingZeros; i++) { 40493 # resultBuilder.push('0'); 40494 # } 40495 # resultBuilder.push(hexString); 40496 # return resultBuilder.join(''); 40497 # }; 40498 # 40499 # // ... 40500 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 40501 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 40502 # the final pixel color is defined by the equation: 40503 # 40504 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 40505 # 40506 # This means that a value of 1.0 corresponds to a solid color, whereas 40507 # a value of 0.0 corresponds to a completely transparent color. This 40508 # uses a wrapper message rather than a simple float scalar so that it is 40509 # possible to distinguish between a default value and the value being unset. 40510 # If omitted, this color object is to be rendered as a solid color 40511 # (as if the alpha value had been explicitly given with a value of 1.0). 40512 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 40513 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 40514 }, 40515 "width": 42, # The width of the border, in pixels. 40516 # Deprecated; the width is determined by the "style" field. 40517 "style": "A String", # The style of the border. 40518 }, 40519 }, 40520 "wrapStrategy": "A String", # The wrap strategy for the value in the cell. 40521 }, 40522 "userEnteredFormat": { # The format of a cell. # The format the user entered for the cell. 40523 # 40524 # When writing, the new format will be merged with the existing format. 40525 "numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user. 40526 "pattern": "A String", # Pattern string used for formatting. If not set, a default pattern based on 40527 # the user's locale will be used if necessary for the given type. 40528 # See the [Date and Number Formats guide](/sheets/api/guides/formats) for more 40529 # information about the supported patterns. 40530 "type": "A String", # The type of the number format. 40531 # When writing, this field must be set. 40532 }, 40533 "textDirection": "A String", # The direction of the text in the cell. 40534 "padding": { # The amount of padding around the cell, in pixels. # The padding of the cell. 40535 # When updating padding, every field must be specified. 40536 "top": 42, # The top padding of the cell. 40537 "right": 42, # The right padding of the cell. 40538 "bottom": 42, # The bottom padding of the cell. 40539 "left": 42, # The left padding of the cell. 40540 }, 40541 "verticalAlignment": "A String", # The vertical alignment of the value in the cell. 40542 "backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell. 40543 # for simplicity of conversion to/from color representations in various 40544 # languages over compactness; for example, the fields of this representation 40545 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 40546 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 40547 # method in iOS; and, with just a little work, it can be easily formatted into 40548 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 40549 # 40550 # Example (Java): 40551 # 40552 # import com.google.type.Color; 40553 # 40554 # // ... 40555 # public static java.awt.Color fromProto(Color protocolor) { 40556 # float alpha = protocolor.hasAlpha() 40557 # ? protocolor.getAlpha().getValue() 40558 # : 1.0; 40559 # 40560 # return new java.awt.Color( 40561 # protocolor.getRed(), 40562 # protocolor.getGreen(), 40563 # protocolor.getBlue(), 40564 # alpha); 40565 # } 40566 # 40567 # public static Color toProto(java.awt.Color color) { 40568 # float red = (float) color.getRed(); 40569 # float green = (float) color.getGreen(); 40570 # float blue = (float) color.getBlue(); 40571 # float denominator = 255.0; 40572 # Color.Builder resultBuilder = 40573 # Color 40574 # .newBuilder() 40575 # .setRed(red / denominator) 40576 # .setGreen(green / denominator) 40577 # .setBlue(blue / denominator); 40578 # int alpha = color.getAlpha(); 40579 # if (alpha != 255) { 40580 # result.setAlpha( 40581 # FloatValue 40582 # .newBuilder() 40583 # .setValue(((float) alpha) / denominator) 40584 # .build()); 40585 # } 40586 # return resultBuilder.build(); 40587 # } 40588 # // ... 40589 # 40590 # Example (iOS / Obj-C): 40591 # 40592 # // ... 40593 # static UIColor* fromProto(Color* protocolor) { 40594 # float red = [protocolor red]; 40595 # float green = [protocolor green]; 40596 # float blue = [protocolor blue]; 40597 # FloatValue* alpha_wrapper = [protocolor alpha]; 40598 # float alpha = 1.0; 40599 # if (alpha_wrapper != nil) { 40600 # alpha = [alpha_wrapper value]; 40601 # } 40602 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 40603 # } 40604 # 40605 # static Color* toProto(UIColor* color) { 40606 # CGFloat red, green, blue, alpha; 40607 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 40608 # return nil; 40609 # } 40610 # Color* result = [Color alloc] init]; 40611 # [result setRed:red]; 40612 # [result setGreen:green]; 40613 # [result setBlue:blue]; 40614 # if (alpha <= 0.9999) { 40615 # [result setAlpha:floatWrapperWithValue(alpha)]; 40616 # } 40617 # [result autorelease]; 40618 # return result; 40619 # } 40620 # // ... 40621 # 40622 # Example (JavaScript): 40623 # 40624 # // ... 40625 # 40626 # var protoToCssColor = function(rgb_color) { 40627 # var redFrac = rgb_color.red || 0.0; 40628 # var greenFrac = rgb_color.green || 0.0; 40629 # var blueFrac = rgb_color.blue || 0.0; 40630 # var red = Math.floor(redFrac * 255); 40631 # var green = Math.floor(greenFrac * 255); 40632 # var blue = Math.floor(blueFrac * 255); 40633 # 40634 # if (!('alpha' in rgb_color)) { 40635 # return rgbToCssColor_(red, green, blue); 40636 # } 40637 # 40638 # var alphaFrac = rgb_color.alpha.value || 0.0; 40639 # var rgbParams = [red, green, blue].join(','); 40640 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 40641 # }; 40642 # 40643 # var rgbToCssColor_ = function(red, green, blue) { 40644 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 40645 # var hexString = rgbNumber.toString(16); 40646 # var missingZeros = 6 - hexString.length; 40647 # var resultBuilder = ['#']; 40648 # for (var i = 0; i < missingZeros; i++) { 40649 # resultBuilder.push('0'); 40650 # } 40651 # resultBuilder.push(hexString); 40652 # return resultBuilder.join(''); 40653 # }; 40654 # 40655 # // ... 40656 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 40657 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 40658 # the final pixel color is defined by the equation: 40659 # 40660 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 40661 # 40662 # This means that a value of 1.0 corresponds to a solid color, whereas 40663 # a value of 0.0 corresponds to a completely transparent color. This 40664 # uses a wrapper message rather than a simple float scalar so that it is 40665 # possible to distinguish between a default value and the value being unset. 40666 # If omitted, this color object is to be rendered as a solid color 40667 # (as if the alpha value had been explicitly given with a value of 1.0). 40668 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 40669 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 40670 }, 40671 "horizontalAlignment": "A String", # The horizontal alignment of the value in the cell. 40672 "textFormat": { # The format of a run of text in a cell. # The format of the text in the cell (unless overridden by a format run). 40673 # Absent values indicate that the field isn't specified. 40674 "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text. 40675 # for simplicity of conversion to/from color representations in various 40676 # languages over compactness; for example, the fields of this representation 40677 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 40678 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 40679 # method in iOS; and, with just a little work, it can be easily formatted into 40680 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 40681 # 40682 # Example (Java): 40683 # 40684 # import com.google.type.Color; 40685 # 40686 # // ... 40687 # public static java.awt.Color fromProto(Color protocolor) { 40688 # float alpha = protocolor.hasAlpha() 40689 # ? protocolor.getAlpha().getValue() 40690 # : 1.0; 40691 # 40692 # return new java.awt.Color( 40693 # protocolor.getRed(), 40694 # protocolor.getGreen(), 40695 # protocolor.getBlue(), 40696 # alpha); 40697 # } 40698 # 40699 # public static Color toProto(java.awt.Color color) { 40700 # float red = (float) color.getRed(); 40701 # float green = (float) color.getGreen(); 40702 # float blue = (float) color.getBlue(); 40703 # float denominator = 255.0; 40704 # Color.Builder resultBuilder = 40705 # Color 40706 # .newBuilder() 40707 # .setRed(red / denominator) 40708 # .setGreen(green / denominator) 40709 # .setBlue(blue / denominator); 40710 # int alpha = color.getAlpha(); 40711 # if (alpha != 255) { 40712 # result.setAlpha( 40713 # FloatValue 40714 # .newBuilder() 40715 # .setValue(((float) alpha) / denominator) 40716 # .build()); 40717 # } 40718 # return resultBuilder.build(); 40719 # } 40720 # // ... 40721 # 40722 # Example (iOS / Obj-C): 40723 # 40724 # // ... 40725 # static UIColor* fromProto(Color* protocolor) { 40726 # float red = [protocolor red]; 40727 # float green = [protocolor green]; 40728 # float blue = [protocolor blue]; 40729 # FloatValue* alpha_wrapper = [protocolor alpha]; 40730 # float alpha = 1.0; 40731 # if (alpha_wrapper != nil) { 40732 # alpha = [alpha_wrapper value]; 40733 # } 40734 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 40735 # } 40736 # 40737 # static Color* toProto(UIColor* color) { 40738 # CGFloat red, green, blue, alpha; 40739 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 40740 # return nil; 40741 # } 40742 # Color* result = [Color alloc] init]; 40743 # [result setRed:red]; 40744 # [result setGreen:green]; 40745 # [result setBlue:blue]; 40746 # if (alpha <= 0.9999) { 40747 # [result setAlpha:floatWrapperWithValue(alpha)]; 40748 # } 40749 # [result autorelease]; 40750 # return result; 40751 # } 40752 # // ... 40753 # 40754 # Example (JavaScript): 40755 # 40756 # // ... 40757 # 40758 # var protoToCssColor = function(rgb_color) { 40759 # var redFrac = rgb_color.red || 0.0; 40760 # var greenFrac = rgb_color.green || 0.0; 40761 # var blueFrac = rgb_color.blue || 0.0; 40762 # var red = Math.floor(redFrac * 255); 40763 # var green = Math.floor(greenFrac * 255); 40764 # var blue = Math.floor(blueFrac * 255); 40765 # 40766 # if (!('alpha' in rgb_color)) { 40767 # return rgbToCssColor_(red, green, blue); 40768 # } 40769 # 40770 # var alphaFrac = rgb_color.alpha.value || 0.0; 40771 # var rgbParams = [red, green, blue].join(','); 40772 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 40773 # }; 40774 # 40775 # var rgbToCssColor_ = function(red, green, blue) { 40776 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 40777 # var hexString = rgbNumber.toString(16); 40778 # var missingZeros = 6 - hexString.length; 40779 # var resultBuilder = ['#']; 40780 # for (var i = 0; i < missingZeros; i++) { 40781 # resultBuilder.push('0'); 40782 # } 40783 # resultBuilder.push(hexString); 40784 # return resultBuilder.join(''); 40785 # }; 40786 # 40787 # // ... 40788 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 40789 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 40790 # the final pixel color is defined by the equation: 40791 # 40792 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 40793 # 40794 # This means that a value of 1.0 corresponds to a solid color, whereas 40795 # a value of 0.0 corresponds to a completely transparent color. This 40796 # uses a wrapper message rather than a simple float scalar so that it is 40797 # possible to distinguish between a default value and the value being unset. 40798 # If omitted, this color object is to be rendered as a solid color 40799 # (as if the alpha value had been explicitly given with a value of 1.0). 40800 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 40801 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 40802 }, 40803 "bold": True or False, # True if the text is bold. 40804 "strikethrough": True or False, # True if the text has a strikethrough. 40805 "fontFamily": "A String", # The font family. 40806 "fontSize": 42, # The size of the font. 40807 "italic": True or False, # True if the text is italicized. 40808 "underline": True or False, # True if the text is underlined. 40809 }, 40810 "textRotation": { # The rotation applied to text in a cell. # The rotation applied to text in a cell 40811 "angle": 42, # The angle between the standard orientation and the desired orientation. 40812 # Measured in degrees. Valid values are between -90 and 90. Positive 40813 # angles are angled upwards, negative are angled downwards. 40814 # 40815 # Note: For LTR text direction positive angles are in the counterclockwise 40816 # direction, whereas for RTL they are in the clockwise direction 40817 "vertical": True or False, # If true, text reads top to bottom, but the orientation of individual 40818 # characters is unchanged. 40819 # For example: 40820 # 40821 # | V | 40822 # | e | 40823 # | r | 40824 # | t | 40825 # | i | 40826 # | c | 40827 # | a | 40828 # | l | 40829 }, 40830 "hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell. 40831 "borders": { # The borders of the cell. # The borders of the cell. 40832 "top": { # A border along a cell. # The top border of the cell. 40833 "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border. 40834 # for simplicity of conversion to/from color representations in various 40835 # languages over compactness; for example, the fields of this representation 40836 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 40837 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 40838 # method in iOS; and, with just a little work, it can be easily formatted into 40839 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 40840 # 40841 # Example (Java): 40842 # 40843 # import com.google.type.Color; 40844 # 40845 # // ... 40846 # public static java.awt.Color fromProto(Color protocolor) { 40847 # float alpha = protocolor.hasAlpha() 40848 # ? protocolor.getAlpha().getValue() 40849 # : 1.0; 40850 # 40851 # return new java.awt.Color( 40852 # protocolor.getRed(), 40853 # protocolor.getGreen(), 40854 # protocolor.getBlue(), 40855 # alpha); 40856 # } 40857 # 40858 # public static Color toProto(java.awt.Color color) { 40859 # float red = (float) color.getRed(); 40860 # float green = (float) color.getGreen(); 40861 # float blue = (float) color.getBlue(); 40862 # float denominator = 255.0; 40863 # Color.Builder resultBuilder = 40864 # Color 40865 # .newBuilder() 40866 # .setRed(red / denominator) 40867 # .setGreen(green / denominator) 40868 # .setBlue(blue / denominator); 40869 # int alpha = color.getAlpha(); 40870 # if (alpha != 255) { 40871 # result.setAlpha( 40872 # FloatValue 40873 # .newBuilder() 40874 # .setValue(((float) alpha) / denominator) 40875 # .build()); 40876 # } 40877 # return resultBuilder.build(); 40878 # } 40879 # // ... 40880 # 40881 # Example (iOS / Obj-C): 40882 # 40883 # // ... 40884 # static UIColor* fromProto(Color* protocolor) { 40885 # float red = [protocolor red]; 40886 # float green = [protocolor green]; 40887 # float blue = [protocolor blue]; 40888 # FloatValue* alpha_wrapper = [protocolor alpha]; 40889 # float alpha = 1.0; 40890 # if (alpha_wrapper != nil) { 40891 # alpha = [alpha_wrapper value]; 40892 # } 40893 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 40894 # } 40895 # 40896 # static Color* toProto(UIColor* color) { 40897 # CGFloat red, green, blue, alpha; 40898 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 40899 # return nil; 40900 # } 40901 # Color* result = [Color alloc] init]; 40902 # [result setRed:red]; 40903 # [result setGreen:green]; 40904 # [result setBlue:blue]; 40905 # if (alpha <= 0.9999) { 40906 # [result setAlpha:floatWrapperWithValue(alpha)]; 40907 # } 40908 # [result autorelease]; 40909 # return result; 40910 # } 40911 # // ... 40912 # 40913 # Example (JavaScript): 40914 # 40915 # // ... 40916 # 40917 # var protoToCssColor = function(rgb_color) { 40918 # var redFrac = rgb_color.red || 0.0; 40919 # var greenFrac = rgb_color.green || 0.0; 40920 # var blueFrac = rgb_color.blue || 0.0; 40921 # var red = Math.floor(redFrac * 255); 40922 # var green = Math.floor(greenFrac * 255); 40923 # var blue = Math.floor(blueFrac * 255); 40924 # 40925 # if (!('alpha' in rgb_color)) { 40926 # return rgbToCssColor_(red, green, blue); 40927 # } 40928 # 40929 # var alphaFrac = rgb_color.alpha.value || 0.0; 40930 # var rgbParams = [red, green, blue].join(','); 40931 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 40932 # }; 40933 # 40934 # var rgbToCssColor_ = function(red, green, blue) { 40935 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 40936 # var hexString = rgbNumber.toString(16); 40937 # var missingZeros = 6 - hexString.length; 40938 # var resultBuilder = ['#']; 40939 # for (var i = 0; i < missingZeros; i++) { 40940 # resultBuilder.push('0'); 40941 # } 40942 # resultBuilder.push(hexString); 40943 # return resultBuilder.join(''); 40944 # }; 40945 # 40946 # // ... 40947 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 40948 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 40949 # the final pixel color is defined by the equation: 40950 # 40951 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 40952 # 40953 # This means that a value of 1.0 corresponds to a solid color, whereas 40954 # a value of 0.0 corresponds to a completely transparent color. This 40955 # uses a wrapper message rather than a simple float scalar so that it is 40956 # possible to distinguish between a default value and the value being unset. 40957 # If omitted, this color object is to be rendered as a solid color 40958 # (as if the alpha value had been explicitly given with a value of 1.0). 40959 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 40960 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 40961 }, 40962 "width": 42, # The width of the border, in pixels. 40963 # Deprecated; the width is determined by the "style" field. 40964 "style": "A String", # The style of the border. 40965 }, 40966 "right": { # A border along a cell. # The right border of the cell. 40967 "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border. 40968 # for simplicity of conversion to/from color representations in various 40969 # languages over compactness; for example, the fields of this representation 40970 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 40971 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 40972 # method in iOS; and, with just a little work, it can be easily formatted into 40973 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 40974 # 40975 # Example (Java): 40976 # 40977 # import com.google.type.Color; 40978 # 40979 # // ... 40980 # public static java.awt.Color fromProto(Color protocolor) { 40981 # float alpha = protocolor.hasAlpha() 40982 # ? protocolor.getAlpha().getValue() 40983 # : 1.0; 40984 # 40985 # return new java.awt.Color( 40986 # protocolor.getRed(), 40987 # protocolor.getGreen(), 40988 # protocolor.getBlue(), 40989 # alpha); 40990 # } 40991 # 40992 # public static Color toProto(java.awt.Color color) { 40993 # float red = (float) color.getRed(); 40994 # float green = (float) color.getGreen(); 40995 # float blue = (float) color.getBlue(); 40996 # float denominator = 255.0; 40997 # Color.Builder resultBuilder = 40998 # Color 40999 # .newBuilder() 41000 # .setRed(red / denominator) 41001 # .setGreen(green / denominator) 41002 # .setBlue(blue / denominator); 41003 # int alpha = color.getAlpha(); 41004 # if (alpha != 255) { 41005 # result.setAlpha( 41006 # FloatValue 41007 # .newBuilder() 41008 # .setValue(((float) alpha) / denominator) 41009 # .build()); 41010 # } 41011 # return resultBuilder.build(); 41012 # } 41013 # // ... 41014 # 41015 # Example (iOS / Obj-C): 41016 # 41017 # // ... 41018 # static UIColor* fromProto(Color* protocolor) { 41019 # float red = [protocolor red]; 41020 # float green = [protocolor green]; 41021 # float blue = [protocolor blue]; 41022 # FloatValue* alpha_wrapper = [protocolor alpha]; 41023 # float alpha = 1.0; 41024 # if (alpha_wrapper != nil) { 41025 # alpha = [alpha_wrapper value]; 41026 # } 41027 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 41028 # } 41029 # 41030 # static Color* toProto(UIColor* color) { 41031 # CGFloat red, green, blue, alpha; 41032 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 41033 # return nil; 41034 # } 41035 # Color* result = [Color alloc] init]; 41036 # [result setRed:red]; 41037 # [result setGreen:green]; 41038 # [result setBlue:blue]; 41039 # if (alpha <= 0.9999) { 41040 # [result setAlpha:floatWrapperWithValue(alpha)]; 41041 # } 41042 # [result autorelease]; 41043 # return result; 41044 # } 41045 # // ... 41046 # 41047 # Example (JavaScript): 41048 # 41049 # // ... 41050 # 41051 # var protoToCssColor = function(rgb_color) { 41052 # var redFrac = rgb_color.red || 0.0; 41053 # var greenFrac = rgb_color.green || 0.0; 41054 # var blueFrac = rgb_color.blue || 0.0; 41055 # var red = Math.floor(redFrac * 255); 41056 # var green = Math.floor(greenFrac * 255); 41057 # var blue = Math.floor(blueFrac * 255); 41058 # 41059 # if (!('alpha' in rgb_color)) { 41060 # return rgbToCssColor_(red, green, blue); 41061 # } 41062 # 41063 # var alphaFrac = rgb_color.alpha.value || 0.0; 41064 # var rgbParams = [red, green, blue].join(','); 41065 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 41066 # }; 41067 # 41068 # var rgbToCssColor_ = function(red, green, blue) { 41069 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 41070 # var hexString = rgbNumber.toString(16); 41071 # var missingZeros = 6 - hexString.length; 41072 # var resultBuilder = ['#']; 41073 # for (var i = 0; i < missingZeros; i++) { 41074 # resultBuilder.push('0'); 41075 # } 41076 # resultBuilder.push(hexString); 41077 # return resultBuilder.join(''); 41078 # }; 41079 # 41080 # // ... 41081 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 41082 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 41083 # the final pixel color is defined by the equation: 41084 # 41085 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 41086 # 41087 # This means that a value of 1.0 corresponds to a solid color, whereas 41088 # a value of 0.0 corresponds to a completely transparent color. This 41089 # uses a wrapper message rather than a simple float scalar so that it is 41090 # possible to distinguish between a default value and the value being unset. 41091 # If omitted, this color object is to be rendered as a solid color 41092 # (as if the alpha value had been explicitly given with a value of 1.0). 41093 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 41094 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 41095 }, 41096 "width": 42, # The width of the border, in pixels. 41097 # Deprecated; the width is determined by the "style" field. 41098 "style": "A String", # The style of the border. 41099 }, 41100 "bottom": { # A border along a cell. # The bottom border of the cell. 41101 "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border. 41102 # for simplicity of conversion to/from color representations in various 41103 # languages over compactness; for example, the fields of this representation 41104 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 41105 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 41106 # method in iOS; and, with just a little work, it can be easily formatted into 41107 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 41108 # 41109 # Example (Java): 41110 # 41111 # import com.google.type.Color; 41112 # 41113 # // ... 41114 # public static java.awt.Color fromProto(Color protocolor) { 41115 # float alpha = protocolor.hasAlpha() 41116 # ? protocolor.getAlpha().getValue() 41117 # : 1.0; 41118 # 41119 # return new java.awt.Color( 41120 # protocolor.getRed(), 41121 # protocolor.getGreen(), 41122 # protocolor.getBlue(), 41123 # alpha); 41124 # } 41125 # 41126 # public static Color toProto(java.awt.Color color) { 41127 # float red = (float) color.getRed(); 41128 # float green = (float) color.getGreen(); 41129 # float blue = (float) color.getBlue(); 41130 # float denominator = 255.0; 41131 # Color.Builder resultBuilder = 41132 # Color 41133 # .newBuilder() 41134 # .setRed(red / denominator) 41135 # .setGreen(green / denominator) 41136 # .setBlue(blue / denominator); 41137 # int alpha = color.getAlpha(); 41138 # if (alpha != 255) { 41139 # result.setAlpha( 41140 # FloatValue 41141 # .newBuilder() 41142 # .setValue(((float) alpha) / denominator) 41143 # .build()); 41144 # } 41145 # return resultBuilder.build(); 41146 # } 41147 # // ... 41148 # 41149 # Example (iOS / Obj-C): 41150 # 41151 # // ... 41152 # static UIColor* fromProto(Color* protocolor) { 41153 # float red = [protocolor red]; 41154 # float green = [protocolor green]; 41155 # float blue = [protocolor blue]; 41156 # FloatValue* alpha_wrapper = [protocolor alpha]; 41157 # float alpha = 1.0; 41158 # if (alpha_wrapper != nil) { 41159 # alpha = [alpha_wrapper value]; 41160 # } 41161 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 41162 # } 41163 # 41164 # static Color* toProto(UIColor* color) { 41165 # CGFloat red, green, blue, alpha; 41166 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 41167 # return nil; 41168 # } 41169 # Color* result = [Color alloc] init]; 41170 # [result setRed:red]; 41171 # [result setGreen:green]; 41172 # [result setBlue:blue]; 41173 # if (alpha <= 0.9999) { 41174 # [result setAlpha:floatWrapperWithValue(alpha)]; 41175 # } 41176 # [result autorelease]; 41177 # return result; 41178 # } 41179 # // ... 41180 # 41181 # Example (JavaScript): 41182 # 41183 # // ... 41184 # 41185 # var protoToCssColor = function(rgb_color) { 41186 # var redFrac = rgb_color.red || 0.0; 41187 # var greenFrac = rgb_color.green || 0.0; 41188 # var blueFrac = rgb_color.blue || 0.0; 41189 # var red = Math.floor(redFrac * 255); 41190 # var green = Math.floor(greenFrac * 255); 41191 # var blue = Math.floor(blueFrac * 255); 41192 # 41193 # if (!('alpha' in rgb_color)) { 41194 # return rgbToCssColor_(red, green, blue); 41195 # } 41196 # 41197 # var alphaFrac = rgb_color.alpha.value || 0.0; 41198 # var rgbParams = [red, green, blue].join(','); 41199 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 41200 # }; 41201 # 41202 # var rgbToCssColor_ = function(red, green, blue) { 41203 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 41204 # var hexString = rgbNumber.toString(16); 41205 # var missingZeros = 6 - hexString.length; 41206 # var resultBuilder = ['#']; 41207 # for (var i = 0; i < missingZeros; i++) { 41208 # resultBuilder.push('0'); 41209 # } 41210 # resultBuilder.push(hexString); 41211 # return resultBuilder.join(''); 41212 # }; 41213 # 41214 # // ... 41215 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 41216 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 41217 # the final pixel color is defined by the equation: 41218 # 41219 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 41220 # 41221 # This means that a value of 1.0 corresponds to a solid color, whereas 41222 # a value of 0.0 corresponds to a completely transparent color. This 41223 # uses a wrapper message rather than a simple float scalar so that it is 41224 # possible to distinguish between a default value and the value being unset. 41225 # If omitted, this color object is to be rendered as a solid color 41226 # (as if the alpha value had been explicitly given with a value of 1.0). 41227 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 41228 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 41229 }, 41230 "width": 42, # The width of the border, in pixels. 41231 # Deprecated; the width is determined by the "style" field. 41232 "style": "A String", # The style of the border. 41233 }, 41234 "left": { # A border along a cell. # The left border of the cell. 41235 "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border. 41236 # for simplicity of conversion to/from color representations in various 41237 # languages over compactness; for example, the fields of this representation 41238 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 41239 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 41240 # method in iOS; and, with just a little work, it can be easily formatted into 41241 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 41242 # 41243 # Example (Java): 41244 # 41245 # import com.google.type.Color; 41246 # 41247 # // ... 41248 # public static java.awt.Color fromProto(Color protocolor) { 41249 # float alpha = protocolor.hasAlpha() 41250 # ? protocolor.getAlpha().getValue() 41251 # : 1.0; 41252 # 41253 # return new java.awt.Color( 41254 # protocolor.getRed(), 41255 # protocolor.getGreen(), 41256 # protocolor.getBlue(), 41257 # alpha); 41258 # } 41259 # 41260 # public static Color toProto(java.awt.Color color) { 41261 # float red = (float) color.getRed(); 41262 # float green = (float) color.getGreen(); 41263 # float blue = (float) color.getBlue(); 41264 # float denominator = 255.0; 41265 # Color.Builder resultBuilder = 41266 # Color 41267 # .newBuilder() 41268 # .setRed(red / denominator) 41269 # .setGreen(green / denominator) 41270 # .setBlue(blue / denominator); 41271 # int alpha = color.getAlpha(); 41272 # if (alpha != 255) { 41273 # result.setAlpha( 41274 # FloatValue 41275 # .newBuilder() 41276 # .setValue(((float) alpha) / denominator) 41277 # .build()); 41278 # } 41279 # return resultBuilder.build(); 41280 # } 41281 # // ... 41282 # 41283 # Example (iOS / Obj-C): 41284 # 41285 # // ... 41286 # static UIColor* fromProto(Color* protocolor) { 41287 # float red = [protocolor red]; 41288 # float green = [protocolor green]; 41289 # float blue = [protocolor blue]; 41290 # FloatValue* alpha_wrapper = [protocolor alpha]; 41291 # float alpha = 1.0; 41292 # if (alpha_wrapper != nil) { 41293 # alpha = [alpha_wrapper value]; 41294 # } 41295 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 41296 # } 41297 # 41298 # static Color* toProto(UIColor* color) { 41299 # CGFloat red, green, blue, alpha; 41300 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 41301 # return nil; 41302 # } 41303 # Color* result = [Color alloc] init]; 41304 # [result setRed:red]; 41305 # [result setGreen:green]; 41306 # [result setBlue:blue]; 41307 # if (alpha <= 0.9999) { 41308 # [result setAlpha:floatWrapperWithValue(alpha)]; 41309 # } 41310 # [result autorelease]; 41311 # return result; 41312 # } 41313 # // ... 41314 # 41315 # Example (JavaScript): 41316 # 41317 # // ... 41318 # 41319 # var protoToCssColor = function(rgb_color) { 41320 # var redFrac = rgb_color.red || 0.0; 41321 # var greenFrac = rgb_color.green || 0.0; 41322 # var blueFrac = rgb_color.blue || 0.0; 41323 # var red = Math.floor(redFrac * 255); 41324 # var green = Math.floor(greenFrac * 255); 41325 # var blue = Math.floor(blueFrac * 255); 41326 # 41327 # if (!('alpha' in rgb_color)) { 41328 # return rgbToCssColor_(red, green, blue); 41329 # } 41330 # 41331 # var alphaFrac = rgb_color.alpha.value || 0.0; 41332 # var rgbParams = [red, green, blue].join(','); 41333 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 41334 # }; 41335 # 41336 # var rgbToCssColor_ = function(red, green, blue) { 41337 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 41338 # var hexString = rgbNumber.toString(16); 41339 # var missingZeros = 6 - hexString.length; 41340 # var resultBuilder = ['#']; 41341 # for (var i = 0; i < missingZeros; i++) { 41342 # resultBuilder.push('0'); 41343 # } 41344 # resultBuilder.push(hexString); 41345 # return resultBuilder.join(''); 41346 # }; 41347 # 41348 # // ... 41349 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 41350 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 41351 # the final pixel color is defined by the equation: 41352 # 41353 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 41354 # 41355 # This means that a value of 1.0 corresponds to a solid color, whereas 41356 # a value of 0.0 corresponds to a completely transparent color. This 41357 # uses a wrapper message rather than a simple float scalar so that it is 41358 # possible to distinguish between a default value and the value being unset. 41359 # If omitted, this color object is to be rendered as a solid color 41360 # (as if the alpha value had been explicitly given with a value of 1.0). 41361 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 41362 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 41363 }, 41364 "width": 42, # The width of the border, in pixels. 41365 # Deprecated; the width is determined by the "style" field. 41366 "style": "A String", # The style of the border. 41367 }, 41368 }, 41369 "wrapStrategy": "A String", # The wrap strategy for the value in the cell. 41370 }, 41371 "dataValidation": { # A data validation rule. # A data validation rule on the cell, if any. 41372 # 41373 # When writing, the new data validation rule will overwrite any prior rule. 41374 "showCustomUi": True or False, # True if the UI should be customized based on the kind of condition. 41375 # If true, "List" conditions will show a dropdown. 41376 "strict": True or False, # True if invalid data should be rejected. 41377 "inputMessage": "A String", # A message to show the user when adding data to the cell. 41378 "condition": { # A condition that can evaluate to true or false. # The condition that data in the cell must match. 41379 # BooleanConditions are used by conditional formatting, 41380 # data validation, and the criteria in filters. 41381 "values": [ # The values of the condition. The number of supported values depends 41382 # on the condition type. Some support zero values, 41383 # others one or two values, 41384 # and ConditionType.ONE_OF_LIST supports an arbitrary number of values. 41385 { # The value of the condition. 41386 "relativeDate": "A String", # A relative date (based on the current date). 41387 # Valid only if the type is 41388 # DATE_BEFORE, 41389 # DATE_AFTER, 41390 # DATE_ON_OR_BEFORE or 41391 # DATE_ON_OR_AFTER. 41392 # 41393 # Relative dates are not supported in data validation. 41394 # They are supported only in conditional formatting and 41395 # conditional filters. 41396 "userEnteredValue": "A String", # A value the condition is based on. 41397 # The value will be parsed as if the user typed into a cell. 41398 # Formulas are supported (and must begin with an `=`). 41399 }, 41400 ], 41401 "type": "A String", # The type of condition. 41402 }, 41403 }, 41404 "textFormatRuns": [ # Runs of rich text applied to subsections of the cell. Runs are only valid 41405 # on user entered strings, not formulas, bools, or numbers. 41406 # Runs start at specific indexes in the text and continue until the next 41407 # run. Properties of a run will continue unless explicitly changed 41408 # in a subsequent run (and properties of the first run will continue 41409 # the properties of the cell unless explicitly changed). 41410 # 41411 # When writing, the new runs will overwrite any prior runs. When writing a 41412 # new user_entered_value, previous runs will be erased. 41413 { # A run of a text format. The format of this run continues until the start 41414 # index of the next run. 41415 # When updating, all fields must be set. 41416 "startIndex": 42, # The character index where this run starts. 41417 "format": { # The format of a run of text in a cell. # The format of this run. Absent values inherit the cell's format. 41418 # Absent values indicate that the field isn't specified. 41419 "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text. 41420 # for simplicity of conversion to/from color representations in various 41421 # languages over compactness; for example, the fields of this representation 41422 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 41423 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 41424 # method in iOS; and, with just a little work, it can be easily formatted into 41425 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 41426 # 41427 # Example (Java): 41428 # 41429 # import com.google.type.Color; 41430 # 41431 # // ... 41432 # public static java.awt.Color fromProto(Color protocolor) { 41433 # float alpha = protocolor.hasAlpha() 41434 # ? protocolor.getAlpha().getValue() 41435 # : 1.0; 41436 # 41437 # return new java.awt.Color( 41438 # protocolor.getRed(), 41439 # protocolor.getGreen(), 41440 # protocolor.getBlue(), 41441 # alpha); 41442 # } 41443 # 41444 # public static Color toProto(java.awt.Color color) { 41445 # float red = (float) color.getRed(); 41446 # float green = (float) color.getGreen(); 41447 # float blue = (float) color.getBlue(); 41448 # float denominator = 255.0; 41449 # Color.Builder resultBuilder = 41450 # Color 41451 # .newBuilder() 41452 # .setRed(red / denominator) 41453 # .setGreen(green / denominator) 41454 # .setBlue(blue / denominator); 41455 # int alpha = color.getAlpha(); 41456 # if (alpha != 255) { 41457 # result.setAlpha( 41458 # FloatValue 41459 # .newBuilder() 41460 # .setValue(((float) alpha) / denominator) 41461 # .build()); 41462 # } 41463 # return resultBuilder.build(); 41464 # } 41465 # // ... 41466 # 41467 # Example (iOS / Obj-C): 41468 # 41469 # // ... 41470 # static UIColor* fromProto(Color* protocolor) { 41471 # float red = [protocolor red]; 41472 # float green = [protocolor green]; 41473 # float blue = [protocolor blue]; 41474 # FloatValue* alpha_wrapper = [protocolor alpha]; 41475 # float alpha = 1.0; 41476 # if (alpha_wrapper != nil) { 41477 # alpha = [alpha_wrapper value]; 41478 # } 41479 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 41480 # } 41481 # 41482 # static Color* toProto(UIColor* color) { 41483 # CGFloat red, green, blue, alpha; 41484 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 41485 # return nil; 41486 # } 41487 # Color* result = [Color alloc] init]; 41488 # [result setRed:red]; 41489 # [result setGreen:green]; 41490 # [result setBlue:blue]; 41491 # if (alpha <= 0.9999) { 41492 # [result setAlpha:floatWrapperWithValue(alpha)]; 41493 # } 41494 # [result autorelease]; 41495 # return result; 41496 # } 41497 # // ... 41498 # 41499 # Example (JavaScript): 41500 # 41501 # // ... 41502 # 41503 # var protoToCssColor = function(rgb_color) { 41504 # var redFrac = rgb_color.red || 0.0; 41505 # var greenFrac = rgb_color.green || 0.0; 41506 # var blueFrac = rgb_color.blue || 0.0; 41507 # var red = Math.floor(redFrac * 255); 41508 # var green = Math.floor(greenFrac * 255); 41509 # var blue = Math.floor(blueFrac * 255); 41510 # 41511 # if (!('alpha' in rgb_color)) { 41512 # return rgbToCssColor_(red, green, blue); 41513 # } 41514 # 41515 # var alphaFrac = rgb_color.alpha.value || 0.0; 41516 # var rgbParams = [red, green, blue].join(','); 41517 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 41518 # }; 41519 # 41520 # var rgbToCssColor_ = function(red, green, blue) { 41521 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 41522 # var hexString = rgbNumber.toString(16); 41523 # var missingZeros = 6 - hexString.length; 41524 # var resultBuilder = ['#']; 41525 # for (var i = 0; i < missingZeros; i++) { 41526 # resultBuilder.push('0'); 41527 # } 41528 # resultBuilder.push(hexString); 41529 # return resultBuilder.join(''); 41530 # }; 41531 # 41532 # // ... 41533 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 41534 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 41535 # the final pixel color is defined by the equation: 41536 # 41537 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 41538 # 41539 # This means that a value of 1.0 corresponds to a solid color, whereas 41540 # a value of 0.0 corresponds to a completely transparent color. This 41541 # uses a wrapper message rather than a simple float scalar so that it is 41542 # possible to distinguish between a default value and the value being unset. 41543 # If omitted, this color object is to be rendered as a solid color 41544 # (as if the alpha value had been explicitly given with a value of 1.0). 41545 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 41546 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 41547 }, 41548 "bold": True or False, # True if the text is bold. 41549 "strikethrough": True or False, # True if the text has a strikethrough. 41550 "fontFamily": "A String", # The font family. 41551 "fontSize": 42, # The size of the font. 41552 "italic": True or False, # True if the text is italicized. 41553 "underline": True or False, # True if the text is underlined. 41554 }, 41555 }, 41556 ], 41557 }, 41558 ], 41559 }, 41560 ], 41561 "startRow": 42, # The first row this GridData refers to, zero-based. 41562 "columnMetadata": [ # Metadata about the requested columns in the grid, starting with the column 41563 # in start_column. 41564 { # Properties about a dimension. 41565 "pixelSize": 42, # The height (if a row) or width (if a column) of the dimension in pixels. 41566 "hiddenByUser": True or False, # True if this dimension is explicitly hidden. 41567 "hiddenByFilter": True or False, # True if this dimension is being filtered. 41568 # This field is read-only. 41569 }, 41570 ], 41571 }, 41572 ], 41573 "properties": { # Properties of a sheet. # The properties of the sheet. 41574 "sheetType": "A String", # The type of sheet. Defaults to GRID. 41575 # This field cannot be changed once set. 41576 "index": 42, # The index of the sheet within the spreadsheet. 41577 # When adding or updating sheet properties, if this field 41578 # is excluded then the sheet will be added or moved to the end 41579 # of the sheet list. When updating sheet indices or inserting 41580 # sheets, movement is considered in "before the move" indexes. 41581 # For example, if there were 3 sheets (S1, S2, S3) in order to 41582 # move S1 ahead of S2 the index would have to be set to 2. A sheet 41583 # index update request will be ignored if the requested index is 41584 # identical to the sheets current index or if the requested new 41585 # index is equal to the current sheet index + 1. 41586 "title": "A String", # The name of the sheet. 41587 "gridProperties": { # Properties of a grid. # Additional properties of the sheet if this sheet is a grid. 41588 # (If the sheet is an object sheet, containing a chart or image, then 41589 # this field will be absent.) 41590 # When writing it is an error to set any grid properties on non-grid sheets. 41591 "columnCount": 42, # The number of columns in the grid. 41592 "frozenRowCount": 42, # The number of rows that are frozen in the grid. 41593 "frozenColumnCount": 42, # The number of columns that are frozen in the grid. 41594 "hideGridlines": True or False, # True if the grid isn't showing gridlines in the UI. 41595 "rowCount": 42, # The number of rows in the grid. 41596 }, 41597 "rightToLeft": True or False, # True if the sheet is an RTL sheet instead of an LTR sheet. 41598 "tabColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the tab in the UI. 41599 # for simplicity of conversion to/from color representations in various 41600 # languages over compactness; for example, the fields of this representation 41601 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 41602 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 41603 # method in iOS; and, with just a little work, it can be easily formatted into 41604 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 41605 # 41606 # Example (Java): 41607 # 41608 # import com.google.type.Color; 41609 # 41610 # // ... 41611 # public static java.awt.Color fromProto(Color protocolor) { 41612 # float alpha = protocolor.hasAlpha() 41613 # ? protocolor.getAlpha().getValue() 41614 # : 1.0; 41615 # 41616 # return new java.awt.Color( 41617 # protocolor.getRed(), 41618 # protocolor.getGreen(), 41619 # protocolor.getBlue(), 41620 # alpha); 41621 # } 41622 # 41623 # public static Color toProto(java.awt.Color color) { 41624 # float red = (float) color.getRed(); 41625 # float green = (float) color.getGreen(); 41626 # float blue = (float) color.getBlue(); 41627 # float denominator = 255.0; 41628 # Color.Builder resultBuilder = 41629 # Color 41630 # .newBuilder() 41631 # .setRed(red / denominator) 41632 # .setGreen(green / denominator) 41633 # .setBlue(blue / denominator); 41634 # int alpha = color.getAlpha(); 41635 # if (alpha != 255) { 41636 # result.setAlpha( 41637 # FloatValue 41638 # .newBuilder() 41639 # .setValue(((float) alpha) / denominator) 41640 # .build()); 41641 # } 41642 # return resultBuilder.build(); 41643 # } 41644 # // ... 41645 # 41646 # Example (iOS / Obj-C): 41647 # 41648 # // ... 41649 # static UIColor* fromProto(Color* protocolor) { 41650 # float red = [protocolor red]; 41651 # float green = [protocolor green]; 41652 # float blue = [protocolor blue]; 41653 # FloatValue* alpha_wrapper = [protocolor alpha]; 41654 # float alpha = 1.0; 41655 # if (alpha_wrapper != nil) { 41656 # alpha = [alpha_wrapper value]; 41657 # } 41658 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 41659 # } 41660 # 41661 # static Color* toProto(UIColor* color) { 41662 # CGFloat red, green, blue, alpha; 41663 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 41664 # return nil; 41665 # } 41666 # Color* result = [Color alloc] init]; 41667 # [result setRed:red]; 41668 # [result setGreen:green]; 41669 # [result setBlue:blue]; 41670 # if (alpha <= 0.9999) { 41671 # [result setAlpha:floatWrapperWithValue(alpha)]; 41672 # } 41673 # [result autorelease]; 41674 # return result; 41675 # } 41676 # // ... 41677 # 41678 # Example (JavaScript): 41679 # 41680 # // ... 41681 # 41682 # var protoToCssColor = function(rgb_color) { 41683 # var redFrac = rgb_color.red || 0.0; 41684 # var greenFrac = rgb_color.green || 0.0; 41685 # var blueFrac = rgb_color.blue || 0.0; 41686 # var red = Math.floor(redFrac * 255); 41687 # var green = Math.floor(greenFrac * 255); 41688 # var blue = Math.floor(blueFrac * 255); 41689 # 41690 # if (!('alpha' in rgb_color)) { 41691 # return rgbToCssColor_(red, green, blue); 41692 # } 41693 # 41694 # var alphaFrac = rgb_color.alpha.value || 0.0; 41695 # var rgbParams = [red, green, blue].join(','); 41696 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 41697 # }; 41698 # 41699 # var rgbToCssColor_ = function(red, green, blue) { 41700 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 41701 # var hexString = rgbNumber.toString(16); 41702 # var missingZeros = 6 - hexString.length; 41703 # var resultBuilder = ['#']; 41704 # for (var i = 0; i < missingZeros; i++) { 41705 # resultBuilder.push('0'); 41706 # } 41707 # resultBuilder.push(hexString); 41708 # return resultBuilder.join(''); 41709 # }; 41710 # 41711 # // ... 41712 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 41713 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 41714 # the final pixel color is defined by the equation: 41715 # 41716 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 41717 # 41718 # This means that a value of 1.0 corresponds to a solid color, whereas 41719 # a value of 0.0 corresponds to a completely transparent color. This 41720 # uses a wrapper message rather than a simple float scalar so that it is 41721 # possible to distinguish between a default value and the value being unset. 41722 # If omitted, this color object is to be rendered as a solid color 41723 # (as if the alpha value had been explicitly given with a value of 1.0). 41724 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 41725 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 41726 }, 41727 "hidden": True or False, # True if the sheet is hidden in the UI, false if it's visible. 41728 "sheetId": 42, # The ID of the sheet. Must be non-negative. 41729 # This field cannot be changed once set. 41730 }, 41731 }, 41732 ], 41733 "spreadsheetUrl": "A String", # The url of the spreadsheet. 41734 # This field is read-only. 41735 }</pre> 41736 </div> 41737 41738 <div class="method"> 41739 <code class="details" id="get">get(spreadsheetId, ranges=None, x__xgafv=None, includeGridData=None)</code> 41740 <pre>Returns the spreadsheet at the given ID. 41741 The caller must specify the spreadsheet ID. 41742 41743 By default, data within grids will not be returned. 41744 You can include grid data one of two ways: 41745 41746 * Specify a field mask listing your desired fields using the `fields` URL 41747 parameter in HTTP 41748 41749 * Set the includeGridData 41750 URL parameter to true. If a field mask is set, the `includeGridData` 41751 parameter is ignored 41752 41753 For large spreadsheets, it is recommended to retrieve only the specific 41754 fields of the spreadsheet that you want. 41755 41756 To retrieve only subsets of the spreadsheet, use the 41757 ranges URL parameter. 41758 Multiple ranges can be specified. Limiting the range will 41759 return only the portions of the spreadsheet that intersect the requested 41760 ranges. Ranges are specified using A1 notation. 41761 41762 Args: 41763 spreadsheetId: string, The spreadsheet to request. (required) 41764 ranges: string, The ranges to retrieve from the spreadsheet. (repeated) 41765 x__xgafv: string, V1 error format. 41766 Allowed values 41767 1 - v1 error format 41768 2 - v2 error format 41769 includeGridData: boolean, True if grid data should be returned. 41770 This parameter is ignored if a field mask was set in the request. 41771 41772 Returns: 41773 An object of the form: 41774 41775 { # Resource that represents a spreadsheet. 41776 "spreadsheetId": "A String", # The ID of the spreadsheet. 41777 # This field is read-only. 41778 "namedRanges": [ # The named ranges defined in a spreadsheet. 41779 { # A named range. 41780 "namedRangeId": "A String", # The ID of the named range. 41781 "range": { # A range on a sheet. # The range this represents. 41782 # All indexes are zero-based. 41783 # Indexes are half open, e.g the start index is inclusive 41784 # and the end index is exclusive -- [start_index, end_index). 41785 # Missing indexes indicate the range is unbounded on that side. 41786 # 41787 # For example, if `"Sheet1"` is sheet ID 0, then: 41788 # 41789 # `Sheet1!A1:A1 == sheet_id: 0, 41790 # start_row_index: 0, end_row_index: 1, 41791 # start_column_index: 0, end_column_index: 1` 41792 # 41793 # `Sheet1!A3:B4 == sheet_id: 0, 41794 # start_row_index: 2, end_row_index: 4, 41795 # start_column_index: 0, end_column_index: 2` 41796 # 41797 # `Sheet1!A:B == sheet_id: 0, 41798 # start_column_index: 0, end_column_index: 2` 41799 # 41800 # `Sheet1!A5:B == sheet_id: 0, 41801 # start_row_index: 4, 41802 # start_column_index: 0, end_column_index: 2` 41803 # 41804 # `Sheet1 == sheet_id:0` 41805 # 41806 # The start index must always be less than or equal to the end index. 41807 # If the start index equals the end index, then the range is empty. 41808 # Empty ranges are typically not meaningful and are usually rendered in the 41809 # UI as `#REF!`. 41810 "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded. 41811 "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded. 41812 "sheetId": 42, # The sheet this range is on. 41813 "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded. 41814 "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded. 41815 }, 41816 "name": "A String", # The name of the named range. 41817 }, 41818 ], 41819 "properties": { # Properties of a spreadsheet. # Overall properties of a spreadsheet. 41820 "title": "A String", # The title of the spreadsheet. 41821 "locale": "A String", # The locale of the spreadsheet in one of the following formats: 41822 # 41823 # * an ISO 639-1 language code such as `en` 41824 # 41825 # * an ISO 639-2 language code such as `fil`, if no 639-1 code exists 41826 # 41827 # * a combination of the ISO language code and country code, such as `en_US` 41828 # 41829 # Note: when updating this field, not all locales/languages are supported. 41830 "defaultFormat": { # The format of a cell. # The default format of all cells in the spreadsheet. 41831 # CellData.effectiveFormat will not be set if the 41832 # cell's format is equal to this default format. 41833 # This field is read-only. 41834 "numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user. 41835 "pattern": "A String", # Pattern string used for formatting. If not set, a default pattern based on 41836 # the user's locale will be used if necessary for the given type. 41837 # See the [Date and Number Formats guide](/sheets/api/guides/formats) for more 41838 # information about the supported patterns. 41839 "type": "A String", # The type of the number format. 41840 # When writing, this field must be set. 41841 }, 41842 "textDirection": "A String", # The direction of the text in the cell. 41843 "padding": { # The amount of padding around the cell, in pixels. # The padding of the cell. 41844 # When updating padding, every field must be specified. 41845 "top": 42, # The top padding of the cell. 41846 "right": 42, # The right padding of the cell. 41847 "bottom": 42, # The bottom padding of the cell. 41848 "left": 42, # The left padding of the cell. 41849 }, 41850 "verticalAlignment": "A String", # The vertical alignment of the value in the cell. 41851 "backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell. 41852 # for simplicity of conversion to/from color representations in various 41853 # languages over compactness; for example, the fields of this representation 41854 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 41855 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 41856 # method in iOS; and, with just a little work, it can be easily formatted into 41857 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 41858 # 41859 # Example (Java): 41860 # 41861 # import com.google.type.Color; 41862 # 41863 # // ... 41864 # public static java.awt.Color fromProto(Color protocolor) { 41865 # float alpha = protocolor.hasAlpha() 41866 # ? protocolor.getAlpha().getValue() 41867 # : 1.0; 41868 # 41869 # return new java.awt.Color( 41870 # protocolor.getRed(), 41871 # protocolor.getGreen(), 41872 # protocolor.getBlue(), 41873 # alpha); 41874 # } 41875 # 41876 # public static Color toProto(java.awt.Color color) { 41877 # float red = (float) color.getRed(); 41878 # float green = (float) color.getGreen(); 41879 # float blue = (float) color.getBlue(); 41880 # float denominator = 255.0; 41881 # Color.Builder resultBuilder = 41882 # Color 41883 # .newBuilder() 41884 # .setRed(red / denominator) 41885 # .setGreen(green / denominator) 41886 # .setBlue(blue / denominator); 41887 # int alpha = color.getAlpha(); 41888 # if (alpha != 255) { 41889 # result.setAlpha( 41890 # FloatValue 41891 # .newBuilder() 41892 # .setValue(((float) alpha) / denominator) 41893 # .build()); 41894 # } 41895 # return resultBuilder.build(); 41896 # } 41897 # // ... 41898 # 41899 # Example (iOS / Obj-C): 41900 # 41901 # // ... 41902 # static UIColor* fromProto(Color* protocolor) { 41903 # float red = [protocolor red]; 41904 # float green = [protocolor green]; 41905 # float blue = [protocolor blue]; 41906 # FloatValue* alpha_wrapper = [protocolor alpha]; 41907 # float alpha = 1.0; 41908 # if (alpha_wrapper != nil) { 41909 # alpha = [alpha_wrapper value]; 41910 # } 41911 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 41912 # } 41913 # 41914 # static Color* toProto(UIColor* color) { 41915 # CGFloat red, green, blue, alpha; 41916 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 41917 # return nil; 41918 # } 41919 # Color* result = [Color alloc] init]; 41920 # [result setRed:red]; 41921 # [result setGreen:green]; 41922 # [result setBlue:blue]; 41923 # if (alpha <= 0.9999) { 41924 # [result setAlpha:floatWrapperWithValue(alpha)]; 41925 # } 41926 # [result autorelease]; 41927 # return result; 41928 # } 41929 # // ... 41930 # 41931 # Example (JavaScript): 41932 # 41933 # // ... 41934 # 41935 # var protoToCssColor = function(rgb_color) { 41936 # var redFrac = rgb_color.red || 0.0; 41937 # var greenFrac = rgb_color.green || 0.0; 41938 # var blueFrac = rgb_color.blue || 0.0; 41939 # var red = Math.floor(redFrac * 255); 41940 # var green = Math.floor(greenFrac * 255); 41941 # var blue = Math.floor(blueFrac * 255); 41942 # 41943 # if (!('alpha' in rgb_color)) { 41944 # return rgbToCssColor_(red, green, blue); 41945 # } 41946 # 41947 # var alphaFrac = rgb_color.alpha.value || 0.0; 41948 # var rgbParams = [red, green, blue].join(','); 41949 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 41950 # }; 41951 # 41952 # var rgbToCssColor_ = function(red, green, blue) { 41953 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 41954 # var hexString = rgbNumber.toString(16); 41955 # var missingZeros = 6 - hexString.length; 41956 # var resultBuilder = ['#']; 41957 # for (var i = 0; i < missingZeros; i++) { 41958 # resultBuilder.push('0'); 41959 # } 41960 # resultBuilder.push(hexString); 41961 # return resultBuilder.join(''); 41962 # }; 41963 # 41964 # // ... 41965 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 41966 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 41967 # the final pixel color is defined by the equation: 41968 # 41969 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 41970 # 41971 # This means that a value of 1.0 corresponds to a solid color, whereas 41972 # a value of 0.0 corresponds to a completely transparent color. This 41973 # uses a wrapper message rather than a simple float scalar so that it is 41974 # possible to distinguish between a default value and the value being unset. 41975 # If omitted, this color object is to be rendered as a solid color 41976 # (as if the alpha value had been explicitly given with a value of 1.0). 41977 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 41978 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 41979 }, 41980 "horizontalAlignment": "A String", # The horizontal alignment of the value in the cell. 41981 "textFormat": { # The format of a run of text in a cell. # The format of the text in the cell (unless overridden by a format run). 41982 # Absent values indicate that the field isn't specified. 41983 "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text. 41984 # for simplicity of conversion to/from color representations in various 41985 # languages over compactness; for example, the fields of this representation 41986 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 41987 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 41988 # method in iOS; and, with just a little work, it can be easily formatted into 41989 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 41990 # 41991 # Example (Java): 41992 # 41993 # import com.google.type.Color; 41994 # 41995 # // ... 41996 # public static java.awt.Color fromProto(Color protocolor) { 41997 # float alpha = protocolor.hasAlpha() 41998 # ? protocolor.getAlpha().getValue() 41999 # : 1.0; 42000 # 42001 # return new java.awt.Color( 42002 # protocolor.getRed(), 42003 # protocolor.getGreen(), 42004 # protocolor.getBlue(), 42005 # alpha); 42006 # } 42007 # 42008 # public static Color toProto(java.awt.Color color) { 42009 # float red = (float) color.getRed(); 42010 # float green = (float) color.getGreen(); 42011 # float blue = (float) color.getBlue(); 42012 # float denominator = 255.0; 42013 # Color.Builder resultBuilder = 42014 # Color 42015 # .newBuilder() 42016 # .setRed(red / denominator) 42017 # .setGreen(green / denominator) 42018 # .setBlue(blue / denominator); 42019 # int alpha = color.getAlpha(); 42020 # if (alpha != 255) { 42021 # result.setAlpha( 42022 # FloatValue 42023 # .newBuilder() 42024 # .setValue(((float) alpha) / denominator) 42025 # .build()); 42026 # } 42027 # return resultBuilder.build(); 42028 # } 42029 # // ... 42030 # 42031 # Example (iOS / Obj-C): 42032 # 42033 # // ... 42034 # static UIColor* fromProto(Color* protocolor) { 42035 # float red = [protocolor red]; 42036 # float green = [protocolor green]; 42037 # float blue = [protocolor blue]; 42038 # FloatValue* alpha_wrapper = [protocolor alpha]; 42039 # float alpha = 1.0; 42040 # if (alpha_wrapper != nil) { 42041 # alpha = [alpha_wrapper value]; 42042 # } 42043 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 42044 # } 42045 # 42046 # static Color* toProto(UIColor* color) { 42047 # CGFloat red, green, blue, alpha; 42048 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 42049 # return nil; 42050 # } 42051 # Color* result = [Color alloc] init]; 42052 # [result setRed:red]; 42053 # [result setGreen:green]; 42054 # [result setBlue:blue]; 42055 # if (alpha <= 0.9999) { 42056 # [result setAlpha:floatWrapperWithValue(alpha)]; 42057 # } 42058 # [result autorelease]; 42059 # return result; 42060 # } 42061 # // ... 42062 # 42063 # Example (JavaScript): 42064 # 42065 # // ... 42066 # 42067 # var protoToCssColor = function(rgb_color) { 42068 # var redFrac = rgb_color.red || 0.0; 42069 # var greenFrac = rgb_color.green || 0.0; 42070 # var blueFrac = rgb_color.blue || 0.0; 42071 # var red = Math.floor(redFrac * 255); 42072 # var green = Math.floor(greenFrac * 255); 42073 # var blue = Math.floor(blueFrac * 255); 42074 # 42075 # if (!('alpha' in rgb_color)) { 42076 # return rgbToCssColor_(red, green, blue); 42077 # } 42078 # 42079 # var alphaFrac = rgb_color.alpha.value || 0.0; 42080 # var rgbParams = [red, green, blue].join(','); 42081 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 42082 # }; 42083 # 42084 # var rgbToCssColor_ = function(red, green, blue) { 42085 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 42086 # var hexString = rgbNumber.toString(16); 42087 # var missingZeros = 6 - hexString.length; 42088 # var resultBuilder = ['#']; 42089 # for (var i = 0; i < missingZeros; i++) { 42090 # resultBuilder.push('0'); 42091 # } 42092 # resultBuilder.push(hexString); 42093 # return resultBuilder.join(''); 42094 # }; 42095 # 42096 # // ... 42097 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 42098 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 42099 # the final pixel color is defined by the equation: 42100 # 42101 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 42102 # 42103 # This means that a value of 1.0 corresponds to a solid color, whereas 42104 # a value of 0.0 corresponds to a completely transparent color. This 42105 # uses a wrapper message rather than a simple float scalar so that it is 42106 # possible to distinguish between a default value and the value being unset. 42107 # If omitted, this color object is to be rendered as a solid color 42108 # (as if the alpha value had been explicitly given with a value of 1.0). 42109 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 42110 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 42111 }, 42112 "bold": True or False, # True if the text is bold. 42113 "strikethrough": True or False, # True if the text has a strikethrough. 42114 "fontFamily": "A String", # The font family. 42115 "fontSize": 42, # The size of the font. 42116 "italic": True or False, # True if the text is italicized. 42117 "underline": True or False, # True if the text is underlined. 42118 }, 42119 "textRotation": { # The rotation applied to text in a cell. # The rotation applied to text in a cell 42120 "angle": 42, # The angle between the standard orientation and the desired orientation. 42121 # Measured in degrees. Valid values are between -90 and 90. Positive 42122 # angles are angled upwards, negative are angled downwards. 42123 # 42124 # Note: For LTR text direction positive angles are in the counterclockwise 42125 # direction, whereas for RTL they are in the clockwise direction 42126 "vertical": True or False, # If true, text reads top to bottom, but the orientation of individual 42127 # characters is unchanged. 42128 # For example: 42129 # 42130 # | V | 42131 # | e | 42132 # | r | 42133 # | t | 42134 # | i | 42135 # | c | 42136 # | a | 42137 # | l | 42138 }, 42139 "hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell. 42140 "borders": { # The borders of the cell. # The borders of the cell. 42141 "top": { # A border along a cell. # The top border of the cell. 42142 "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border. 42143 # for simplicity of conversion to/from color representations in various 42144 # languages over compactness; for example, the fields of this representation 42145 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 42146 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 42147 # method in iOS; and, with just a little work, it can be easily formatted into 42148 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 42149 # 42150 # Example (Java): 42151 # 42152 # import com.google.type.Color; 42153 # 42154 # // ... 42155 # public static java.awt.Color fromProto(Color protocolor) { 42156 # float alpha = protocolor.hasAlpha() 42157 # ? protocolor.getAlpha().getValue() 42158 # : 1.0; 42159 # 42160 # return new java.awt.Color( 42161 # protocolor.getRed(), 42162 # protocolor.getGreen(), 42163 # protocolor.getBlue(), 42164 # alpha); 42165 # } 42166 # 42167 # public static Color toProto(java.awt.Color color) { 42168 # float red = (float) color.getRed(); 42169 # float green = (float) color.getGreen(); 42170 # float blue = (float) color.getBlue(); 42171 # float denominator = 255.0; 42172 # Color.Builder resultBuilder = 42173 # Color 42174 # .newBuilder() 42175 # .setRed(red / denominator) 42176 # .setGreen(green / denominator) 42177 # .setBlue(blue / denominator); 42178 # int alpha = color.getAlpha(); 42179 # if (alpha != 255) { 42180 # result.setAlpha( 42181 # FloatValue 42182 # .newBuilder() 42183 # .setValue(((float) alpha) / denominator) 42184 # .build()); 42185 # } 42186 # return resultBuilder.build(); 42187 # } 42188 # // ... 42189 # 42190 # Example (iOS / Obj-C): 42191 # 42192 # // ... 42193 # static UIColor* fromProto(Color* protocolor) { 42194 # float red = [protocolor red]; 42195 # float green = [protocolor green]; 42196 # float blue = [protocolor blue]; 42197 # FloatValue* alpha_wrapper = [protocolor alpha]; 42198 # float alpha = 1.0; 42199 # if (alpha_wrapper != nil) { 42200 # alpha = [alpha_wrapper value]; 42201 # } 42202 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 42203 # } 42204 # 42205 # static Color* toProto(UIColor* color) { 42206 # CGFloat red, green, blue, alpha; 42207 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 42208 # return nil; 42209 # } 42210 # Color* result = [Color alloc] init]; 42211 # [result setRed:red]; 42212 # [result setGreen:green]; 42213 # [result setBlue:blue]; 42214 # if (alpha <= 0.9999) { 42215 # [result setAlpha:floatWrapperWithValue(alpha)]; 42216 # } 42217 # [result autorelease]; 42218 # return result; 42219 # } 42220 # // ... 42221 # 42222 # Example (JavaScript): 42223 # 42224 # // ... 42225 # 42226 # var protoToCssColor = function(rgb_color) { 42227 # var redFrac = rgb_color.red || 0.0; 42228 # var greenFrac = rgb_color.green || 0.0; 42229 # var blueFrac = rgb_color.blue || 0.0; 42230 # var red = Math.floor(redFrac * 255); 42231 # var green = Math.floor(greenFrac * 255); 42232 # var blue = Math.floor(blueFrac * 255); 42233 # 42234 # if (!('alpha' in rgb_color)) { 42235 # return rgbToCssColor_(red, green, blue); 42236 # } 42237 # 42238 # var alphaFrac = rgb_color.alpha.value || 0.0; 42239 # var rgbParams = [red, green, blue].join(','); 42240 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 42241 # }; 42242 # 42243 # var rgbToCssColor_ = function(red, green, blue) { 42244 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 42245 # var hexString = rgbNumber.toString(16); 42246 # var missingZeros = 6 - hexString.length; 42247 # var resultBuilder = ['#']; 42248 # for (var i = 0; i < missingZeros; i++) { 42249 # resultBuilder.push('0'); 42250 # } 42251 # resultBuilder.push(hexString); 42252 # return resultBuilder.join(''); 42253 # }; 42254 # 42255 # // ... 42256 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 42257 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 42258 # the final pixel color is defined by the equation: 42259 # 42260 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 42261 # 42262 # This means that a value of 1.0 corresponds to a solid color, whereas 42263 # a value of 0.0 corresponds to a completely transparent color. This 42264 # uses a wrapper message rather than a simple float scalar so that it is 42265 # possible to distinguish between a default value and the value being unset. 42266 # If omitted, this color object is to be rendered as a solid color 42267 # (as if the alpha value had been explicitly given with a value of 1.0). 42268 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 42269 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 42270 }, 42271 "width": 42, # The width of the border, in pixels. 42272 # Deprecated; the width is determined by the "style" field. 42273 "style": "A String", # The style of the border. 42274 }, 42275 "right": { # A border along a cell. # The right border of the cell. 42276 "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border. 42277 # for simplicity of conversion to/from color representations in various 42278 # languages over compactness; for example, the fields of this representation 42279 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 42280 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 42281 # method in iOS; and, with just a little work, it can be easily formatted into 42282 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 42283 # 42284 # Example (Java): 42285 # 42286 # import com.google.type.Color; 42287 # 42288 # // ... 42289 # public static java.awt.Color fromProto(Color protocolor) { 42290 # float alpha = protocolor.hasAlpha() 42291 # ? protocolor.getAlpha().getValue() 42292 # : 1.0; 42293 # 42294 # return new java.awt.Color( 42295 # protocolor.getRed(), 42296 # protocolor.getGreen(), 42297 # protocolor.getBlue(), 42298 # alpha); 42299 # } 42300 # 42301 # public static Color toProto(java.awt.Color color) { 42302 # float red = (float) color.getRed(); 42303 # float green = (float) color.getGreen(); 42304 # float blue = (float) color.getBlue(); 42305 # float denominator = 255.0; 42306 # Color.Builder resultBuilder = 42307 # Color 42308 # .newBuilder() 42309 # .setRed(red / denominator) 42310 # .setGreen(green / denominator) 42311 # .setBlue(blue / denominator); 42312 # int alpha = color.getAlpha(); 42313 # if (alpha != 255) { 42314 # result.setAlpha( 42315 # FloatValue 42316 # .newBuilder() 42317 # .setValue(((float) alpha) / denominator) 42318 # .build()); 42319 # } 42320 # return resultBuilder.build(); 42321 # } 42322 # // ... 42323 # 42324 # Example (iOS / Obj-C): 42325 # 42326 # // ... 42327 # static UIColor* fromProto(Color* protocolor) { 42328 # float red = [protocolor red]; 42329 # float green = [protocolor green]; 42330 # float blue = [protocolor blue]; 42331 # FloatValue* alpha_wrapper = [protocolor alpha]; 42332 # float alpha = 1.0; 42333 # if (alpha_wrapper != nil) { 42334 # alpha = [alpha_wrapper value]; 42335 # } 42336 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 42337 # } 42338 # 42339 # static Color* toProto(UIColor* color) { 42340 # CGFloat red, green, blue, alpha; 42341 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 42342 # return nil; 42343 # } 42344 # Color* result = [Color alloc] init]; 42345 # [result setRed:red]; 42346 # [result setGreen:green]; 42347 # [result setBlue:blue]; 42348 # if (alpha <= 0.9999) { 42349 # [result setAlpha:floatWrapperWithValue(alpha)]; 42350 # } 42351 # [result autorelease]; 42352 # return result; 42353 # } 42354 # // ... 42355 # 42356 # Example (JavaScript): 42357 # 42358 # // ... 42359 # 42360 # var protoToCssColor = function(rgb_color) { 42361 # var redFrac = rgb_color.red || 0.0; 42362 # var greenFrac = rgb_color.green || 0.0; 42363 # var blueFrac = rgb_color.blue || 0.0; 42364 # var red = Math.floor(redFrac * 255); 42365 # var green = Math.floor(greenFrac * 255); 42366 # var blue = Math.floor(blueFrac * 255); 42367 # 42368 # if (!('alpha' in rgb_color)) { 42369 # return rgbToCssColor_(red, green, blue); 42370 # } 42371 # 42372 # var alphaFrac = rgb_color.alpha.value || 0.0; 42373 # var rgbParams = [red, green, blue].join(','); 42374 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 42375 # }; 42376 # 42377 # var rgbToCssColor_ = function(red, green, blue) { 42378 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 42379 # var hexString = rgbNumber.toString(16); 42380 # var missingZeros = 6 - hexString.length; 42381 # var resultBuilder = ['#']; 42382 # for (var i = 0; i < missingZeros; i++) { 42383 # resultBuilder.push('0'); 42384 # } 42385 # resultBuilder.push(hexString); 42386 # return resultBuilder.join(''); 42387 # }; 42388 # 42389 # // ... 42390 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 42391 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 42392 # the final pixel color is defined by the equation: 42393 # 42394 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 42395 # 42396 # This means that a value of 1.0 corresponds to a solid color, whereas 42397 # a value of 0.0 corresponds to a completely transparent color. This 42398 # uses a wrapper message rather than a simple float scalar so that it is 42399 # possible to distinguish between a default value and the value being unset. 42400 # If omitted, this color object is to be rendered as a solid color 42401 # (as if the alpha value had been explicitly given with a value of 1.0). 42402 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 42403 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 42404 }, 42405 "width": 42, # The width of the border, in pixels. 42406 # Deprecated; the width is determined by the "style" field. 42407 "style": "A String", # The style of the border. 42408 }, 42409 "bottom": { # A border along a cell. # The bottom border of the cell. 42410 "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border. 42411 # for simplicity of conversion to/from color representations in various 42412 # languages over compactness; for example, the fields of this representation 42413 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 42414 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 42415 # method in iOS; and, with just a little work, it can be easily formatted into 42416 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 42417 # 42418 # Example (Java): 42419 # 42420 # import com.google.type.Color; 42421 # 42422 # // ... 42423 # public static java.awt.Color fromProto(Color protocolor) { 42424 # float alpha = protocolor.hasAlpha() 42425 # ? protocolor.getAlpha().getValue() 42426 # : 1.0; 42427 # 42428 # return new java.awt.Color( 42429 # protocolor.getRed(), 42430 # protocolor.getGreen(), 42431 # protocolor.getBlue(), 42432 # alpha); 42433 # } 42434 # 42435 # public static Color toProto(java.awt.Color color) { 42436 # float red = (float) color.getRed(); 42437 # float green = (float) color.getGreen(); 42438 # float blue = (float) color.getBlue(); 42439 # float denominator = 255.0; 42440 # Color.Builder resultBuilder = 42441 # Color 42442 # .newBuilder() 42443 # .setRed(red / denominator) 42444 # .setGreen(green / denominator) 42445 # .setBlue(blue / denominator); 42446 # int alpha = color.getAlpha(); 42447 # if (alpha != 255) { 42448 # result.setAlpha( 42449 # FloatValue 42450 # .newBuilder() 42451 # .setValue(((float) alpha) / denominator) 42452 # .build()); 42453 # } 42454 # return resultBuilder.build(); 42455 # } 42456 # // ... 42457 # 42458 # Example (iOS / Obj-C): 42459 # 42460 # // ... 42461 # static UIColor* fromProto(Color* protocolor) { 42462 # float red = [protocolor red]; 42463 # float green = [protocolor green]; 42464 # float blue = [protocolor blue]; 42465 # FloatValue* alpha_wrapper = [protocolor alpha]; 42466 # float alpha = 1.0; 42467 # if (alpha_wrapper != nil) { 42468 # alpha = [alpha_wrapper value]; 42469 # } 42470 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 42471 # } 42472 # 42473 # static Color* toProto(UIColor* color) { 42474 # CGFloat red, green, blue, alpha; 42475 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 42476 # return nil; 42477 # } 42478 # Color* result = [Color alloc] init]; 42479 # [result setRed:red]; 42480 # [result setGreen:green]; 42481 # [result setBlue:blue]; 42482 # if (alpha <= 0.9999) { 42483 # [result setAlpha:floatWrapperWithValue(alpha)]; 42484 # } 42485 # [result autorelease]; 42486 # return result; 42487 # } 42488 # // ... 42489 # 42490 # Example (JavaScript): 42491 # 42492 # // ... 42493 # 42494 # var protoToCssColor = function(rgb_color) { 42495 # var redFrac = rgb_color.red || 0.0; 42496 # var greenFrac = rgb_color.green || 0.0; 42497 # var blueFrac = rgb_color.blue || 0.0; 42498 # var red = Math.floor(redFrac * 255); 42499 # var green = Math.floor(greenFrac * 255); 42500 # var blue = Math.floor(blueFrac * 255); 42501 # 42502 # if (!('alpha' in rgb_color)) { 42503 # return rgbToCssColor_(red, green, blue); 42504 # } 42505 # 42506 # var alphaFrac = rgb_color.alpha.value || 0.0; 42507 # var rgbParams = [red, green, blue].join(','); 42508 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 42509 # }; 42510 # 42511 # var rgbToCssColor_ = function(red, green, blue) { 42512 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 42513 # var hexString = rgbNumber.toString(16); 42514 # var missingZeros = 6 - hexString.length; 42515 # var resultBuilder = ['#']; 42516 # for (var i = 0; i < missingZeros; i++) { 42517 # resultBuilder.push('0'); 42518 # } 42519 # resultBuilder.push(hexString); 42520 # return resultBuilder.join(''); 42521 # }; 42522 # 42523 # // ... 42524 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 42525 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 42526 # the final pixel color is defined by the equation: 42527 # 42528 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 42529 # 42530 # This means that a value of 1.0 corresponds to a solid color, whereas 42531 # a value of 0.0 corresponds to a completely transparent color. This 42532 # uses a wrapper message rather than a simple float scalar so that it is 42533 # possible to distinguish between a default value and the value being unset. 42534 # If omitted, this color object is to be rendered as a solid color 42535 # (as if the alpha value had been explicitly given with a value of 1.0). 42536 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 42537 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 42538 }, 42539 "width": 42, # The width of the border, in pixels. 42540 # Deprecated; the width is determined by the "style" field. 42541 "style": "A String", # The style of the border. 42542 }, 42543 "left": { # A border along a cell. # The left border of the cell. 42544 "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border. 42545 # for simplicity of conversion to/from color representations in various 42546 # languages over compactness; for example, the fields of this representation 42547 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 42548 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 42549 # method in iOS; and, with just a little work, it can be easily formatted into 42550 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 42551 # 42552 # Example (Java): 42553 # 42554 # import com.google.type.Color; 42555 # 42556 # // ... 42557 # public static java.awt.Color fromProto(Color protocolor) { 42558 # float alpha = protocolor.hasAlpha() 42559 # ? protocolor.getAlpha().getValue() 42560 # : 1.0; 42561 # 42562 # return new java.awt.Color( 42563 # protocolor.getRed(), 42564 # protocolor.getGreen(), 42565 # protocolor.getBlue(), 42566 # alpha); 42567 # } 42568 # 42569 # public static Color toProto(java.awt.Color color) { 42570 # float red = (float) color.getRed(); 42571 # float green = (float) color.getGreen(); 42572 # float blue = (float) color.getBlue(); 42573 # float denominator = 255.0; 42574 # Color.Builder resultBuilder = 42575 # Color 42576 # .newBuilder() 42577 # .setRed(red / denominator) 42578 # .setGreen(green / denominator) 42579 # .setBlue(blue / denominator); 42580 # int alpha = color.getAlpha(); 42581 # if (alpha != 255) { 42582 # result.setAlpha( 42583 # FloatValue 42584 # .newBuilder() 42585 # .setValue(((float) alpha) / denominator) 42586 # .build()); 42587 # } 42588 # return resultBuilder.build(); 42589 # } 42590 # // ... 42591 # 42592 # Example (iOS / Obj-C): 42593 # 42594 # // ... 42595 # static UIColor* fromProto(Color* protocolor) { 42596 # float red = [protocolor red]; 42597 # float green = [protocolor green]; 42598 # float blue = [protocolor blue]; 42599 # FloatValue* alpha_wrapper = [protocolor alpha]; 42600 # float alpha = 1.0; 42601 # if (alpha_wrapper != nil) { 42602 # alpha = [alpha_wrapper value]; 42603 # } 42604 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 42605 # } 42606 # 42607 # static Color* toProto(UIColor* color) { 42608 # CGFloat red, green, blue, alpha; 42609 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 42610 # return nil; 42611 # } 42612 # Color* result = [Color alloc] init]; 42613 # [result setRed:red]; 42614 # [result setGreen:green]; 42615 # [result setBlue:blue]; 42616 # if (alpha <= 0.9999) { 42617 # [result setAlpha:floatWrapperWithValue(alpha)]; 42618 # } 42619 # [result autorelease]; 42620 # return result; 42621 # } 42622 # // ... 42623 # 42624 # Example (JavaScript): 42625 # 42626 # // ... 42627 # 42628 # var protoToCssColor = function(rgb_color) { 42629 # var redFrac = rgb_color.red || 0.0; 42630 # var greenFrac = rgb_color.green || 0.0; 42631 # var blueFrac = rgb_color.blue || 0.0; 42632 # var red = Math.floor(redFrac * 255); 42633 # var green = Math.floor(greenFrac * 255); 42634 # var blue = Math.floor(blueFrac * 255); 42635 # 42636 # if (!('alpha' in rgb_color)) { 42637 # return rgbToCssColor_(red, green, blue); 42638 # } 42639 # 42640 # var alphaFrac = rgb_color.alpha.value || 0.0; 42641 # var rgbParams = [red, green, blue].join(','); 42642 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 42643 # }; 42644 # 42645 # var rgbToCssColor_ = function(red, green, blue) { 42646 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 42647 # var hexString = rgbNumber.toString(16); 42648 # var missingZeros = 6 - hexString.length; 42649 # var resultBuilder = ['#']; 42650 # for (var i = 0; i < missingZeros; i++) { 42651 # resultBuilder.push('0'); 42652 # } 42653 # resultBuilder.push(hexString); 42654 # return resultBuilder.join(''); 42655 # }; 42656 # 42657 # // ... 42658 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 42659 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 42660 # the final pixel color is defined by the equation: 42661 # 42662 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 42663 # 42664 # This means that a value of 1.0 corresponds to a solid color, whereas 42665 # a value of 0.0 corresponds to a completely transparent color. This 42666 # uses a wrapper message rather than a simple float scalar so that it is 42667 # possible to distinguish between a default value and the value being unset. 42668 # If omitted, this color object is to be rendered as a solid color 42669 # (as if the alpha value had been explicitly given with a value of 1.0). 42670 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 42671 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 42672 }, 42673 "width": 42, # The width of the border, in pixels. 42674 # Deprecated; the width is determined by the "style" field. 42675 "style": "A String", # The style of the border. 42676 }, 42677 }, 42678 "wrapStrategy": "A String", # The wrap strategy for the value in the cell. 42679 }, 42680 "autoRecalc": "A String", # The amount of time to wait before volatile functions are recalculated. 42681 "iterativeCalculationSettings": { # Settings to control how circular dependencies are resolved with iterative # Determines whether and how circular references are resolved with iterative 42682 # calculation. Absence of this field means that circular references will 42683 # result in calculation errors. 42684 # calculation. 42685 "convergenceThreshold": 3.14, # When iterative calculation is enabled and successive results differ by 42686 # less than this threshold value, the calculation rounds stop. 42687 "maxIterations": 42, # When iterative calculation is enabled, the maximum number of calculation 42688 # rounds to perform. 42689 }, 42690 "timeZone": "A String", # The time zone of the spreadsheet, in CLDR format such as 42691 # `America/New_York`. If the time zone isn't recognized, this may 42692 # be a custom time zone such as `GMT-07:00`. 42693 }, 42694 "sheets": [ # The sheets that are part of a spreadsheet. 42695 { # A sheet in a spreadsheet. 42696 "conditionalFormats": [ # The conditional format rules in this sheet. 42697 { # A rule describing a conditional format. 42698 "ranges": [ # The ranges that will be formatted if the condition is true. 42699 # All the ranges must be on the same grid. 42700 { # A range on a sheet. 42701 # All indexes are zero-based. 42702 # Indexes are half open, e.g the start index is inclusive 42703 # and the end index is exclusive -- [start_index, end_index). 42704 # Missing indexes indicate the range is unbounded on that side. 42705 # 42706 # For example, if `"Sheet1"` is sheet ID 0, then: 42707 # 42708 # `Sheet1!A1:A1 == sheet_id: 0, 42709 # start_row_index: 0, end_row_index: 1, 42710 # start_column_index: 0, end_column_index: 1` 42711 # 42712 # `Sheet1!A3:B4 == sheet_id: 0, 42713 # start_row_index: 2, end_row_index: 4, 42714 # start_column_index: 0, end_column_index: 2` 42715 # 42716 # `Sheet1!A:B == sheet_id: 0, 42717 # start_column_index: 0, end_column_index: 2` 42718 # 42719 # `Sheet1!A5:B == sheet_id: 0, 42720 # start_row_index: 4, 42721 # start_column_index: 0, end_column_index: 2` 42722 # 42723 # `Sheet1 == sheet_id:0` 42724 # 42725 # The start index must always be less than or equal to the end index. 42726 # If the start index equals the end index, then the range is empty. 42727 # Empty ranges are typically not meaningful and are usually rendered in the 42728 # UI as `#REF!`. 42729 "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded. 42730 "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded. 42731 "sheetId": 42, # The sheet this range is on. 42732 "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded. 42733 "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded. 42734 }, 42735 ], 42736 "booleanRule": { # A rule that may or may not match, depending on the condition. # The formatting is either "on" or "off" according to the rule. 42737 "condition": { # A condition that can evaluate to true or false. # The condition of the rule. If the condition evaluates to true, 42738 # the format will be applied. 42739 # BooleanConditions are used by conditional formatting, 42740 # data validation, and the criteria in filters. 42741 "values": [ # The values of the condition. The number of supported values depends 42742 # on the condition type. Some support zero values, 42743 # others one or two values, 42744 # and ConditionType.ONE_OF_LIST supports an arbitrary number of values. 42745 { # The value of the condition. 42746 "relativeDate": "A String", # A relative date (based on the current date). 42747 # Valid only if the type is 42748 # DATE_BEFORE, 42749 # DATE_AFTER, 42750 # DATE_ON_OR_BEFORE or 42751 # DATE_ON_OR_AFTER. 42752 # 42753 # Relative dates are not supported in data validation. 42754 # They are supported only in conditional formatting and 42755 # conditional filters. 42756 "userEnteredValue": "A String", # A value the condition is based on. 42757 # The value will be parsed as if the user typed into a cell. 42758 # Formulas are supported (and must begin with an `=`). 42759 }, 42760 ], 42761 "type": "A String", # The type of condition. 42762 }, 42763 "format": { # The format of a cell. # The format to apply. 42764 # Conditional formatting can only apply a subset of formatting: 42765 # bold, italic, 42766 # strikethrough, 42767 # foreground color & 42768 # background color. 42769 "numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user. 42770 "pattern": "A String", # Pattern string used for formatting. If not set, a default pattern based on 42771 # the user's locale will be used if necessary for the given type. 42772 # See the [Date and Number Formats guide](/sheets/api/guides/formats) for more 42773 # information about the supported patterns. 42774 "type": "A String", # The type of the number format. 42775 # When writing, this field must be set. 42776 }, 42777 "textDirection": "A String", # The direction of the text in the cell. 42778 "padding": { # The amount of padding around the cell, in pixels. # The padding of the cell. 42779 # When updating padding, every field must be specified. 42780 "top": 42, # The top padding of the cell. 42781 "right": 42, # The right padding of the cell. 42782 "bottom": 42, # The bottom padding of the cell. 42783 "left": 42, # The left padding of the cell. 42784 }, 42785 "verticalAlignment": "A String", # The vertical alignment of the value in the cell. 42786 "backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell. 42787 # for simplicity of conversion to/from color representations in various 42788 # languages over compactness; for example, the fields of this representation 42789 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 42790 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 42791 # method in iOS; and, with just a little work, it can be easily formatted into 42792 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 42793 # 42794 # Example (Java): 42795 # 42796 # import com.google.type.Color; 42797 # 42798 # // ... 42799 # public static java.awt.Color fromProto(Color protocolor) { 42800 # float alpha = protocolor.hasAlpha() 42801 # ? protocolor.getAlpha().getValue() 42802 # : 1.0; 42803 # 42804 # return new java.awt.Color( 42805 # protocolor.getRed(), 42806 # protocolor.getGreen(), 42807 # protocolor.getBlue(), 42808 # alpha); 42809 # } 42810 # 42811 # public static Color toProto(java.awt.Color color) { 42812 # float red = (float) color.getRed(); 42813 # float green = (float) color.getGreen(); 42814 # float blue = (float) color.getBlue(); 42815 # float denominator = 255.0; 42816 # Color.Builder resultBuilder = 42817 # Color 42818 # .newBuilder() 42819 # .setRed(red / denominator) 42820 # .setGreen(green / denominator) 42821 # .setBlue(blue / denominator); 42822 # int alpha = color.getAlpha(); 42823 # if (alpha != 255) { 42824 # result.setAlpha( 42825 # FloatValue 42826 # .newBuilder() 42827 # .setValue(((float) alpha) / denominator) 42828 # .build()); 42829 # } 42830 # return resultBuilder.build(); 42831 # } 42832 # // ... 42833 # 42834 # Example (iOS / Obj-C): 42835 # 42836 # // ... 42837 # static UIColor* fromProto(Color* protocolor) { 42838 # float red = [protocolor red]; 42839 # float green = [protocolor green]; 42840 # float blue = [protocolor blue]; 42841 # FloatValue* alpha_wrapper = [protocolor alpha]; 42842 # float alpha = 1.0; 42843 # if (alpha_wrapper != nil) { 42844 # alpha = [alpha_wrapper value]; 42845 # } 42846 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 42847 # } 42848 # 42849 # static Color* toProto(UIColor* color) { 42850 # CGFloat red, green, blue, alpha; 42851 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 42852 # return nil; 42853 # } 42854 # Color* result = [Color alloc] init]; 42855 # [result setRed:red]; 42856 # [result setGreen:green]; 42857 # [result setBlue:blue]; 42858 # if (alpha <= 0.9999) { 42859 # [result setAlpha:floatWrapperWithValue(alpha)]; 42860 # } 42861 # [result autorelease]; 42862 # return result; 42863 # } 42864 # // ... 42865 # 42866 # Example (JavaScript): 42867 # 42868 # // ... 42869 # 42870 # var protoToCssColor = function(rgb_color) { 42871 # var redFrac = rgb_color.red || 0.0; 42872 # var greenFrac = rgb_color.green || 0.0; 42873 # var blueFrac = rgb_color.blue || 0.0; 42874 # var red = Math.floor(redFrac * 255); 42875 # var green = Math.floor(greenFrac * 255); 42876 # var blue = Math.floor(blueFrac * 255); 42877 # 42878 # if (!('alpha' in rgb_color)) { 42879 # return rgbToCssColor_(red, green, blue); 42880 # } 42881 # 42882 # var alphaFrac = rgb_color.alpha.value || 0.0; 42883 # var rgbParams = [red, green, blue].join(','); 42884 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 42885 # }; 42886 # 42887 # var rgbToCssColor_ = function(red, green, blue) { 42888 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 42889 # var hexString = rgbNumber.toString(16); 42890 # var missingZeros = 6 - hexString.length; 42891 # var resultBuilder = ['#']; 42892 # for (var i = 0; i < missingZeros; i++) { 42893 # resultBuilder.push('0'); 42894 # } 42895 # resultBuilder.push(hexString); 42896 # return resultBuilder.join(''); 42897 # }; 42898 # 42899 # // ... 42900 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 42901 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 42902 # the final pixel color is defined by the equation: 42903 # 42904 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 42905 # 42906 # This means that a value of 1.0 corresponds to a solid color, whereas 42907 # a value of 0.0 corresponds to a completely transparent color. This 42908 # uses a wrapper message rather than a simple float scalar so that it is 42909 # possible to distinguish between a default value and the value being unset. 42910 # If omitted, this color object is to be rendered as a solid color 42911 # (as if the alpha value had been explicitly given with a value of 1.0). 42912 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 42913 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 42914 }, 42915 "horizontalAlignment": "A String", # The horizontal alignment of the value in the cell. 42916 "textFormat": { # The format of a run of text in a cell. # The format of the text in the cell (unless overridden by a format run). 42917 # Absent values indicate that the field isn't specified. 42918 "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text. 42919 # for simplicity of conversion to/from color representations in various 42920 # languages over compactness; for example, the fields of this representation 42921 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 42922 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 42923 # method in iOS; and, with just a little work, it can be easily formatted into 42924 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 42925 # 42926 # Example (Java): 42927 # 42928 # import com.google.type.Color; 42929 # 42930 # // ... 42931 # public static java.awt.Color fromProto(Color protocolor) { 42932 # float alpha = protocolor.hasAlpha() 42933 # ? protocolor.getAlpha().getValue() 42934 # : 1.0; 42935 # 42936 # return new java.awt.Color( 42937 # protocolor.getRed(), 42938 # protocolor.getGreen(), 42939 # protocolor.getBlue(), 42940 # alpha); 42941 # } 42942 # 42943 # public static Color toProto(java.awt.Color color) { 42944 # float red = (float) color.getRed(); 42945 # float green = (float) color.getGreen(); 42946 # float blue = (float) color.getBlue(); 42947 # float denominator = 255.0; 42948 # Color.Builder resultBuilder = 42949 # Color 42950 # .newBuilder() 42951 # .setRed(red / denominator) 42952 # .setGreen(green / denominator) 42953 # .setBlue(blue / denominator); 42954 # int alpha = color.getAlpha(); 42955 # if (alpha != 255) { 42956 # result.setAlpha( 42957 # FloatValue 42958 # .newBuilder() 42959 # .setValue(((float) alpha) / denominator) 42960 # .build()); 42961 # } 42962 # return resultBuilder.build(); 42963 # } 42964 # // ... 42965 # 42966 # Example (iOS / Obj-C): 42967 # 42968 # // ... 42969 # static UIColor* fromProto(Color* protocolor) { 42970 # float red = [protocolor red]; 42971 # float green = [protocolor green]; 42972 # float blue = [protocolor blue]; 42973 # FloatValue* alpha_wrapper = [protocolor alpha]; 42974 # float alpha = 1.0; 42975 # if (alpha_wrapper != nil) { 42976 # alpha = [alpha_wrapper value]; 42977 # } 42978 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 42979 # } 42980 # 42981 # static Color* toProto(UIColor* color) { 42982 # CGFloat red, green, blue, alpha; 42983 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 42984 # return nil; 42985 # } 42986 # Color* result = [Color alloc] init]; 42987 # [result setRed:red]; 42988 # [result setGreen:green]; 42989 # [result setBlue:blue]; 42990 # if (alpha <= 0.9999) { 42991 # [result setAlpha:floatWrapperWithValue(alpha)]; 42992 # } 42993 # [result autorelease]; 42994 # return result; 42995 # } 42996 # // ... 42997 # 42998 # Example (JavaScript): 42999 # 43000 # // ... 43001 # 43002 # var protoToCssColor = function(rgb_color) { 43003 # var redFrac = rgb_color.red || 0.0; 43004 # var greenFrac = rgb_color.green || 0.0; 43005 # var blueFrac = rgb_color.blue || 0.0; 43006 # var red = Math.floor(redFrac * 255); 43007 # var green = Math.floor(greenFrac * 255); 43008 # var blue = Math.floor(blueFrac * 255); 43009 # 43010 # if (!('alpha' in rgb_color)) { 43011 # return rgbToCssColor_(red, green, blue); 43012 # } 43013 # 43014 # var alphaFrac = rgb_color.alpha.value || 0.0; 43015 # var rgbParams = [red, green, blue].join(','); 43016 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 43017 # }; 43018 # 43019 # var rgbToCssColor_ = function(red, green, blue) { 43020 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 43021 # var hexString = rgbNumber.toString(16); 43022 # var missingZeros = 6 - hexString.length; 43023 # var resultBuilder = ['#']; 43024 # for (var i = 0; i < missingZeros; i++) { 43025 # resultBuilder.push('0'); 43026 # } 43027 # resultBuilder.push(hexString); 43028 # return resultBuilder.join(''); 43029 # }; 43030 # 43031 # // ... 43032 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 43033 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 43034 # the final pixel color is defined by the equation: 43035 # 43036 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 43037 # 43038 # This means that a value of 1.0 corresponds to a solid color, whereas 43039 # a value of 0.0 corresponds to a completely transparent color. This 43040 # uses a wrapper message rather than a simple float scalar so that it is 43041 # possible to distinguish between a default value and the value being unset. 43042 # If omitted, this color object is to be rendered as a solid color 43043 # (as if the alpha value had been explicitly given with a value of 1.0). 43044 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 43045 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 43046 }, 43047 "bold": True or False, # True if the text is bold. 43048 "strikethrough": True or False, # True if the text has a strikethrough. 43049 "fontFamily": "A String", # The font family. 43050 "fontSize": 42, # The size of the font. 43051 "italic": True or False, # True if the text is italicized. 43052 "underline": True or False, # True if the text is underlined. 43053 }, 43054 "textRotation": { # The rotation applied to text in a cell. # The rotation applied to text in a cell 43055 "angle": 42, # The angle between the standard orientation and the desired orientation. 43056 # Measured in degrees. Valid values are between -90 and 90. Positive 43057 # angles are angled upwards, negative are angled downwards. 43058 # 43059 # Note: For LTR text direction positive angles are in the counterclockwise 43060 # direction, whereas for RTL they are in the clockwise direction 43061 "vertical": True or False, # If true, text reads top to bottom, but the orientation of individual 43062 # characters is unchanged. 43063 # For example: 43064 # 43065 # | V | 43066 # | e | 43067 # | r | 43068 # | t | 43069 # | i | 43070 # | c | 43071 # | a | 43072 # | l | 43073 }, 43074 "hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell. 43075 "borders": { # The borders of the cell. # The borders of the cell. 43076 "top": { # A border along a cell. # The top border of the cell. 43077 "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border. 43078 # for simplicity of conversion to/from color representations in various 43079 # languages over compactness; for example, the fields of this representation 43080 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 43081 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 43082 # method in iOS; and, with just a little work, it can be easily formatted into 43083 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 43084 # 43085 # Example (Java): 43086 # 43087 # import com.google.type.Color; 43088 # 43089 # // ... 43090 # public static java.awt.Color fromProto(Color protocolor) { 43091 # float alpha = protocolor.hasAlpha() 43092 # ? protocolor.getAlpha().getValue() 43093 # : 1.0; 43094 # 43095 # return new java.awt.Color( 43096 # protocolor.getRed(), 43097 # protocolor.getGreen(), 43098 # protocolor.getBlue(), 43099 # alpha); 43100 # } 43101 # 43102 # public static Color toProto(java.awt.Color color) { 43103 # float red = (float) color.getRed(); 43104 # float green = (float) color.getGreen(); 43105 # float blue = (float) color.getBlue(); 43106 # float denominator = 255.0; 43107 # Color.Builder resultBuilder = 43108 # Color 43109 # .newBuilder() 43110 # .setRed(red / denominator) 43111 # .setGreen(green / denominator) 43112 # .setBlue(blue / denominator); 43113 # int alpha = color.getAlpha(); 43114 # if (alpha != 255) { 43115 # result.setAlpha( 43116 # FloatValue 43117 # .newBuilder() 43118 # .setValue(((float) alpha) / denominator) 43119 # .build()); 43120 # } 43121 # return resultBuilder.build(); 43122 # } 43123 # // ... 43124 # 43125 # Example (iOS / Obj-C): 43126 # 43127 # // ... 43128 # static UIColor* fromProto(Color* protocolor) { 43129 # float red = [protocolor red]; 43130 # float green = [protocolor green]; 43131 # float blue = [protocolor blue]; 43132 # FloatValue* alpha_wrapper = [protocolor alpha]; 43133 # float alpha = 1.0; 43134 # if (alpha_wrapper != nil) { 43135 # alpha = [alpha_wrapper value]; 43136 # } 43137 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 43138 # } 43139 # 43140 # static Color* toProto(UIColor* color) { 43141 # CGFloat red, green, blue, alpha; 43142 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 43143 # return nil; 43144 # } 43145 # Color* result = [Color alloc] init]; 43146 # [result setRed:red]; 43147 # [result setGreen:green]; 43148 # [result setBlue:blue]; 43149 # if (alpha <= 0.9999) { 43150 # [result setAlpha:floatWrapperWithValue(alpha)]; 43151 # } 43152 # [result autorelease]; 43153 # return result; 43154 # } 43155 # // ... 43156 # 43157 # Example (JavaScript): 43158 # 43159 # // ... 43160 # 43161 # var protoToCssColor = function(rgb_color) { 43162 # var redFrac = rgb_color.red || 0.0; 43163 # var greenFrac = rgb_color.green || 0.0; 43164 # var blueFrac = rgb_color.blue || 0.0; 43165 # var red = Math.floor(redFrac * 255); 43166 # var green = Math.floor(greenFrac * 255); 43167 # var blue = Math.floor(blueFrac * 255); 43168 # 43169 # if (!('alpha' in rgb_color)) { 43170 # return rgbToCssColor_(red, green, blue); 43171 # } 43172 # 43173 # var alphaFrac = rgb_color.alpha.value || 0.0; 43174 # var rgbParams = [red, green, blue].join(','); 43175 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 43176 # }; 43177 # 43178 # var rgbToCssColor_ = function(red, green, blue) { 43179 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 43180 # var hexString = rgbNumber.toString(16); 43181 # var missingZeros = 6 - hexString.length; 43182 # var resultBuilder = ['#']; 43183 # for (var i = 0; i < missingZeros; i++) { 43184 # resultBuilder.push('0'); 43185 # } 43186 # resultBuilder.push(hexString); 43187 # return resultBuilder.join(''); 43188 # }; 43189 # 43190 # // ... 43191 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 43192 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 43193 # the final pixel color is defined by the equation: 43194 # 43195 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 43196 # 43197 # This means that a value of 1.0 corresponds to a solid color, whereas 43198 # a value of 0.0 corresponds to a completely transparent color. This 43199 # uses a wrapper message rather than a simple float scalar so that it is 43200 # possible to distinguish between a default value and the value being unset. 43201 # If omitted, this color object is to be rendered as a solid color 43202 # (as if the alpha value had been explicitly given with a value of 1.0). 43203 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 43204 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 43205 }, 43206 "width": 42, # The width of the border, in pixels. 43207 # Deprecated; the width is determined by the "style" field. 43208 "style": "A String", # The style of the border. 43209 }, 43210 "right": { # A border along a cell. # The right border of the cell. 43211 "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border. 43212 # for simplicity of conversion to/from color representations in various 43213 # languages over compactness; for example, the fields of this representation 43214 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 43215 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 43216 # method in iOS; and, with just a little work, it can be easily formatted into 43217 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 43218 # 43219 # Example (Java): 43220 # 43221 # import com.google.type.Color; 43222 # 43223 # // ... 43224 # public static java.awt.Color fromProto(Color protocolor) { 43225 # float alpha = protocolor.hasAlpha() 43226 # ? protocolor.getAlpha().getValue() 43227 # : 1.0; 43228 # 43229 # return new java.awt.Color( 43230 # protocolor.getRed(), 43231 # protocolor.getGreen(), 43232 # protocolor.getBlue(), 43233 # alpha); 43234 # } 43235 # 43236 # public static Color toProto(java.awt.Color color) { 43237 # float red = (float) color.getRed(); 43238 # float green = (float) color.getGreen(); 43239 # float blue = (float) color.getBlue(); 43240 # float denominator = 255.0; 43241 # Color.Builder resultBuilder = 43242 # Color 43243 # .newBuilder() 43244 # .setRed(red / denominator) 43245 # .setGreen(green / denominator) 43246 # .setBlue(blue / denominator); 43247 # int alpha = color.getAlpha(); 43248 # if (alpha != 255) { 43249 # result.setAlpha( 43250 # FloatValue 43251 # .newBuilder() 43252 # .setValue(((float) alpha) / denominator) 43253 # .build()); 43254 # } 43255 # return resultBuilder.build(); 43256 # } 43257 # // ... 43258 # 43259 # Example (iOS / Obj-C): 43260 # 43261 # // ... 43262 # static UIColor* fromProto(Color* protocolor) { 43263 # float red = [protocolor red]; 43264 # float green = [protocolor green]; 43265 # float blue = [protocolor blue]; 43266 # FloatValue* alpha_wrapper = [protocolor alpha]; 43267 # float alpha = 1.0; 43268 # if (alpha_wrapper != nil) { 43269 # alpha = [alpha_wrapper value]; 43270 # } 43271 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 43272 # } 43273 # 43274 # static Color* toProto(UIColor* color) { 43275 # CGFloat red, green, blue, alpha; 43276 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 43277 # return nil; 43278 # } 43279 # Color* result = [Color alloc] init]; 43280 # [result setRed:red]; 43281 # [result setGreen:green]; 43282 # [result setBlue:blue]; 43283 # if (alpha <= 0.9999) { 43284 # [result setAlpha:floatWrapperWithValue(alpha)]; 43285 # } 43286 # [result autorelease]; 43287 # return result; 43288 # } 43289 # // ... 43290 # 43291 # Example (JavaScript): 43292 # 43293 # // ... 43294 # 43295 # var protoToCssColor = function(rgb_color) { 43296 # var redFrac = rgb_color.red || 0.0; 43297 # var greenFrac = rgb_color.green || 0.0; 43298 # var blueFrac = rgb_color.blue || 0.0; 43299 # var red = Math.floor(redFrac * 255); 43300 # var green = Math.floor(greenFrac * 255); 43301 # var blue = Math.floor(blueFrac * 255); 43302 # 43303 # if (!('alpha' in rgb_color)) { 43304 # return rgbToCssColor_(red, green, blue); 43305 # } 43306 # 43307 # var alphaFrac = rgb_color.alpha.value || 0.0; 43308 # var rgbParams = [red, green, blue].join(','); 43309 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 43310 # }; 43311 # 43312 # var rgbToCssColor_ = function(red, green, blue) { 43313 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 43314 # var hexString = rgbNumber.toString(16); 43315 # var missingZeros = 6 - hexString.length; 43316 # var resultBuilder = ['#']; 43317 # for (var i = 0; i < missingZeros; i++) { 43318 # resultBuilder.push('0'); 43319 # } 43320 # resultBuilder.push(hexString); 43321 # return resultBuilder.join(''); 43322 # }; 43323 # 43324 # // ... 43325 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 43326 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 43327 # the final pixel color is defined by the equation: 43328 # 43329 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 43330 # 43331 # This means that a value of 1.0 corresponds to a solid color, whereas 43332 # a value of 0.0 corresponds to a completely transparent color. This 43333 # uses a wrapper message rather than a simple float scalar so that it is 43334 # possible to distinguish between a default value and the value being unset. 43335 # If omitted, this color object is to be rendered as a solid color 43336 # (as if the alpha value had been explicitly given with a value of 1.0). 43337 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 43338 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 43339 }, 43340 "width": 42, # The width of the border, in pixels. 43341 # Deprecated; the width is determined by the "style" field. 43342 "style": "A String", # The style of the border. 43343 }, 43344 "bottom": { # A border along a cell. # The bottom border of the cell. 43345 "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border. 43346 # for simplicity of conversion to/from color representations in various 43347 # languages over compactness; for example, the fields of this representation 43348 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 43349 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 43350 # method in iOS; and, with just a little work, it can be easily formatted into 43351 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 43352 # 43353 # Example (Java): 43354 # 43355 # import com.google.type.Color; 43356 # 43357 # // ... 43358 # public static java.awt.Color fromProto(Color protocolor) { 43359 # float alpha = protocolor.hasAlpha() 43360 # ? protocolor.getAlpha().getValue() 43361 # : 1.0; 43362 # 43363 # return new java.awt.Color( 43364 # protocolor.getRed(), 43365 # protocolor.getGreen(), 43366 # protocolor.getBlue(), 43367 # alpha); 43368 # } 43369 # 43370 # public static Color toProto(java.awt.Color color) { 43371 # float red = (float) color.getRed(); 43372 # float green = (float) color.getGreen(); 43373 # float blue = (float) color.getBlue(); 43374 # float denominator = 255.0; 43375 # Color.Builder resultBuilder = 43376 # Color 43377 # .newBuilder() 43378 # .setRed(red / denominator) 43379 # .setGreen(green / denominator) 43380 # .setBlue(blue / denominator); 43381 # int alpha = color.getAlpha(); 43382 # if (alpha != 255) { 43383 # result.setAlpha( 43384 # FloatValue 43385 # .newBuilder() 43386 # .setValue(((float) alpha) / denominator) 43387 # .build()); 43388 # } 43389 # return resultBuilder.build(); 43390 # } 43391 # // ... 43392 # 43393 # Example (iOS / Obj-C): 43394 # 43395 # // ... 43396 # static UIColor* fromProto(Color* protocolor) { 43397 # float red = [protocolor red]; 43398 # float green = [protocolor green]; 43399 # float blue = [protocolor blue]; 43400 # FloatValue* alpha_wrapper = [protocolor alpha]; 43401 # float alpha = 1.0; 43402 # if (alpha_wrapper != nil) { 43403 # alpha = [alpha_wrapper value]; 43404 # } 43405 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 43406 # } 43407 # 43408 # static Color* toProto(UIColor* color) { 43409 # CGFloat red, green, blue, alpha; 43410 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 43411 # return nil; 43412 # } 43413 # Color* result = [Color alloc] init]; 43414 # [result setRed:red]; 43415 # [result setGreen:green]; 43416 # [result setBlue:blue]; 43417 # if (alpha <= 0.9999) { 43418 # [result setAlpha:floatWrapperWithValue(alpha)]; 43419 # } 43420 # [result autorelease]; 43421 # return result; 43422 # } 43423 # // ... 43424 # 43425 # Example (JavaScript): 43426 # 43427 # // ... 43428 # 43429 # var protoToCssColor = function(rgb_color) { 43430 # var redFrac = rgb_color.red || 0.0; 43431 # var greenFrac = rgb_color.green || 0.0; 43432 # var blueFrac = rgb_color.blue || 0.0; 43433 # var red = Math.floor(redFrac * 255); 43434 # var green = Math.floor(greenFrac * 255); 43435 # var blue = Math.floor(blueFrac * 255); 43436 # 43437 # if (!('alpha' in rgb_color)) { 43438 # return rgbToCssColor_(red, green, blue); 43439 # } 43440 # 43441 # var alphaFrac = rgb_color.alpha.value || 0.0; 43442 # var rgbParams = [red, green, blue].join(','); 43443 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 43444 # }; 43445 # 43446 # var rgbToCssColor_ = function(red, green, blue) { 43447 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 43448 # var hexString = rgbNumber.toString(16); 43449 # var missingZeros = 6 - hexString.length; 43450 # var resultBuilder = ['#']; 43451 # for (var i = 0; i < missingZeros; i++) { 43452 # resultBuilder.push('0'); 43453 # } 43454 # resultBuilder.push(hexString); 43455 # return resultBuilder.join(''); 43456 # }; 43457 # 43458 # // ... 43459 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 43460 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 43461 # the final pixel color is defined by the equation: 43462 # 43463 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 43464 # 43465 # This means that a value of 1.0 corresponds to a solid color, whereas 43466 # a value of 0.0 corresponds to a completely transparent color. This 43467 # uses a wrapper message rather than a simple float scalar so that it is 43468 # possible to distinguish between a default value and the value being unset. 43469 # If omitted, this color object is to be rendered as a solid color 43470 # (as if the alpha value had been explicitly given with a value of 1.0). 43471 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 43472 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 43473 }, 43474 "width": 42, # The width of the border, in pixels. 43475 # Deprecated; the width is determined by the "style" field. 43476 "style": "A String", # The style of the border. 43477 }, 43478 "left": { # A border along a cell. # The left border of the cell. 43479 "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border. 43480 # for simplicity of conversion to/from color representations in various 43481 # languages over compactness; for example, the fields of this representation 43482 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 43483 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 43484 # method in iOS; and, with just a little work, it can be easily formatted into 43485 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 43486 # 43487 # Example (Java): 43488 # 43489 # import com.google.type.Color; 43490 # 43491 # // ... 43492 # public static java.awt.Color fromProto(Color protocolor) { 43493 # float alpha = protocolor.hasAlpha() 43494 # ? protocolor.getAlpha().getValue() 43495 # : 1.0; 43496 # 43497 # return new java.awt.Color( 43498 # protocolor.getRed(), 43499 # protocolor.getGreen(), 43500 # protocolor.getBlue(), 43501 # alpha); 43502 # } 43503 # 43504 # public static Color toProto(java.awt.Color color) { 43505 # float red = (float) color.getRed(); 43506 # float green = (float) color.getGreen(); 43507 # float blue = (float) color.getBlue(); 43508 # float denominator = 255.0; 43509 # Color.Builder resultBuilder = 43510 # Color 43511 # .newBuilder() 43512 # .setRed(red / denominator) 43513 # .setGreen(green / denominator) 43514 # .setBlue(blue / denominator); 43515 # int alpha = color.getAlpha(); 43516 # if (alpha != 255) { 43517 # result.setAlpha( 43518 # FloatValue 43519 # .newBuilder() 43520 # .setValue(((float) alpha) / denominator) 43521 # .build()); 43522 # } 43523 # return resultBuilder.build(); 43524 # } 43525 # // ... 43526 # 43527 # Example (iOS / Obj-C): 43528 # 43529 # // ... 43530 # static UIColor* fromProto(Color* protocolor) { 43531 # float red = [protocolor red]; 43532 # float green = [protocolor green]; 43533 # float blue = [protocolor blue]; 43534 # FloatValue* alpha_wrapper = [protocolor alpha]; 43535 # float alpha = 1.0; 43536 # if (alpha_wrapper != nil) { 43537 # alpha = [alpha_wrapper value]; 43538 # } 43539 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 43540 # } 43541 # 43542 # static Color* toProto(UIColor* color) { 43543 # CGFloat red, green, blue, alpha; 43544 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 43545 # return nil; 43546 # } 43547 # Color* result = [Color alloc] init]; 43548 # [result setRed:red]; 43549 # [result setGreen:green]; 43550 # [result setBlue:blue]; 43551 # if (alpha <= 0.9999) { 43552 # [result setAlpha:floatWrapperWithValue(alpha)]; 43553 # } 43554 # [result autorelease]; 43555 # return result; 43556 # } 43557 # // ... 43558 # 43559 # Example (JavaScript): 43560 # 43561 # // ... 43562 # 43563 # var protoToCssColor = function(rgb_color) { 43564 # var redFrac = rgb_color.red || 0.0; 43565 # var greenFrac = rgb_color.green || 0.0; 43566 # var blueFrac = rgb_color.blue || 0.0; 43567 # var red = Math.floor(redFrac * 255); 43568 # var green = Math.floor(greenFrac * 255); 43569 # var blue = Math.floor(blueFrac * 255); 43570 # 43571 # if (!('alpha' in rgb_color)) { 43572 # return rgbToCssColor_(red, green, blue); 43573 # } 43574 # 43575 # var alphaFrac = rgb_color.alpha.value || 0.0; 43576 # var rgbParams = [red, green, blue].join(','); 43577 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 43578 # }; 43579 # 43580 # var rgbToCssColor_ = function(red, green, blue) { 43581 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 43582 # var hexString = rgbNumber.toString(16); 43583 # var missingZeros = 6 - hexString.length; 43584 # var resultBuilder = ['#']; 43585 # for (var i = 0; i < missingZeros; i++) { 43586 # resultBuilder.push('0'); 43587 # } 43588 # resultBuilder.push(hexString); 43589 # return resultBuilder.join(''); 43590 # }; 43591 # 43592 # // ... 43593 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 43594 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 43595 # the final pixel color is defined by the equation: 43596 # 43597 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 43598 # 43599 # This means that a value of 1.0 corresponds to a solid color, whereas 43600 # a value of 0.0 corresponds to a completely transparent color. This 43601 # uses a wrapper message rather than a simple float scalar so that it is 43602 # possible to distinguish between a default value and the value being unset. 43603 # If omitted, this color object is to be rendered as a solid color 43604 # (as if the alpha value had been explicitly given with a value of 1.0). 43605 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 43606 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 43607 }, 43608 "width": 42, # The width of the border, in pixels. 43609 # Deprecated; the width is determined by the "style" field. 43610 "style": "A String", # The style of the border. 43611 }, 43612 }, 43613 "wrapStrategy": "A String", # The wrap strategy for the value in the cell. 43614 }, 43615 }, 43616 "gradientRule": { # A rule that applies a gradient color scale format, based on # The formatting will vary based on the gradients in the rule. 43617 # the interpolation points listed. The format of a cell will vary 43618 # based on its contents as compared to the values of the interpolation 43619 # points. 43620 "maxpoint": { # A single interpolation point on a gradient conditional format. # The final interpolation point. 43621 # These pin the gradient color scale according to the color, 43622 # type and value chosen. 43623 "color": { # Represents a color in the RGBA color space. This representation is designed # The color this interpolation point should use. 43624 # for simplicity of conversion to/from color representations in various 43625 # languages over compactness; for example, the fields of this representation 43626 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 43627 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 43628 # method in iOS; and, with just a little work, it can be easily formatted into 43629 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 43630 # 43631 # Example (Java): 43632 # 43633 # import com.google.type.Color; 43634 # 43635 # // ... 43636 # public static java.awt.Color fromProto(Color protocolor) { 43637 # float alpha = protocolor.hasAlpha() 43638 # ? protocolor.getAlpha().getValue() 43639 # : 1.0; 43640 # 43641 # return new java.awt.Color( 43642 # protocolor.getRed(), 43643 # protocolor.getGreen(), 43644 # protocolor.getBlue(), 43645 # alpha); 43646 # } 43647 # 43648 # public static Color toProto(java.awt.Color color) { 43649 # float red = (float) color.getRed(); 43650 # float green = (float) color.getGreen(); 43651 # float blue = (float) color.getBlue(); 43652 # float denominator = 255.0; 43653 # Color.Builder resultBuilder = 43654 # Color 43655 # .newBuilder() 43656 # .setRed(red / denominator) 43657 # .setGreen(green / denominator) 43658 # .setBlue(blue / denominator); 43659 # int alpha = color.getAlpha(); 43660 # if (alpha != 255) { 43661 # result.setAlpha( 43662 # FloatValue 43663 # .newBuilder() 43664 # .setValue(((float) alpha) / denominator) 43665 # .build()); 43666 # } 43667 # return resultBuilder.build(); 43668 # } 43669 # // ... 43670 # 43671 # Example (iOS / Obj-C): 43672 # 43673 # // ... 43674 # static UIColor* fromProto(Color* protocolor) { 43675 # float red = [protocolor red]; 43676 # float green = [protocolor green]; 43677 # float blue = [protocolor blue]; 43678 # FloatValue* alpha_wrapper = [protocolor alpha]; 43679 # float alpha = 1.0; 43680 # if (alpha_wrapper != nil) { 43681 # alpha = [alpha_wrapper value]; 43682 # } 43683 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 43684 # } 43685 # 43686 # static Color* toProto(UIColor* color) { 43687 # CGFloat red, green, blue, alpha; 43688 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 43689 # return nil; 43690 # } 43691 # Color* result = [Color alloc] init]; 43692 # [result setRed:red]; 43693 # [result setGreen:green]; 43694 # [result setBlue:blue]; 43695 # if (alpha <= 0.9999) { 43696 # [result setAlpha:floatWrapperWithValue(alpha)]; 43697 # } 43698 # [result autorelease]; 43699 # return result; 43700 # } 43701 # // ... 43702 # 43703 # Example (JavaScript): 43704 # 43705 # // ... 43706 # 43707 # var protoToCssColor = function(rgb_color) { 43708 # var redFrac = rgb_color.red || 0.0; 43709 # var greenFrac = rgb_color.green || 0.0; 43710 # var blueFrac = rgb_color.blue || 0.0; 43711 # var red = Math.floor(redFrac * 255); 43712 # var green = Math.floor(greenFrac * 255); 43713 # var blue = Math.floor(blueFrac * 255); 43714 # 43715 # if (!('alpha' in rgb_color)) { 43716 # return rgbToCssColor_(red, green, blue); 43717 # } 43718 # 43719 # var alphaFrac = rgb_color.alpha.value || 0.0; 43720 # var rgbParams = [red, green, blue].join(','); 43721 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 43722 # }; 43723 # 43724 # var rgbToCssColor_ = function(red, green, blue) { 43725 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 43726 # var hexString = rgbNumber.toString(16); 43727 # var missingZeros = 6 - hexString.length; 43728 # var resultBuilder = ['#']; 43729 # for (var i = 0; i < missingZeros; i++) { 43730 # resultBuilder.push('0'); 43731 # } 43732 # resultBuilder.push(hexString); 43733 # return resultBuilder.join(''); 43734 # }; 43735 # 43736 # // ... 43737 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 43738 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 43739 # the final pixel color is defined by the equation: 43740 # 43741 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 43742 # 43743 # This means that a value of 1.0 corresponds to a solid color, whereas 43744 # a value of 0.0 corresponds to a completely transparent color. This 43745 # uses a wrapper message rather than a simple float scalar so that it is 43746 # possible to distinguish between a default value and the value being unset. 43747 # If omitted, this color object is to be rendered as a solid color 43748 # (as if the alpha value had been explicitly given with a value of 1.0). 43749 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 43750 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 43751 }, 43752 "type": "A String", # How the value should be interpreted. 43753 "value": "A String", # The value this interpolation point uses. May be a formula. 43754 # Unused if type is MIN or 43755 # MAX. 43756 }, 43757 "midpoint": { # A single interpolation point on a gradient conditional format. # An optional midway interpolation point. 43758 # These pin the gradient color scale according to the color, 43759 # type and value chosen. 43760 "color": { # Represents a color in the RGBA color space. This representation is designed # The color this interpolation point should use. 43761 # for simplicity of conversion to/from color representations in various 43762 # languages over compactness; for example, the fields of this representation 43763 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 43764 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 43765 # method in iOS; and, with just a little work, it can be easily formatted into 43766 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 43767 # 43768 # Example (Java): 43769 # 43770 # import com.google.type.Color; 43771 # 43772 # // ... 43773 # public static java.awt.Color fromProto(Color protocolor) { 43774 # float alpha = protocolor.hasAlpha() 43775 # ? protocolor.getAlpha().getValue() 43776 # : 1.0; 43777 # 43778 # return new java.awt.Color( 43779 # protocolor.getRed(), 43780 # protocolor.getGreen(), 43781 # protocolor.getBlue(), 43782 # alpha); 43783 # } 43784 # 43785 # public static Color toProto(java.awt.Color color) { 43786 # float red = (float) color.getRed(); 43787 # float green = (float) color.getGreen(); 43788 # float blue = (float) color.getBlue(); 43789 # float denominator = 255.0; 43790 # Color.Builder resultBuilder = 43791 # Color 43792 # .newBuilder() 43793 # .setRed(red / denominator) 43794 # .setGreen(green / denominator) 43795 # .setBlue(blue / denominator); 43796 # int alpha = color.getAlpha(); 43797 # if (alpha != 255) { 43798 # result.setAlpha( 43799 # FloatValue 43800 # .newBuilder() 43801 # .setValue(((float) alpha) / denominator) 43802 # .build()); 43803 # } 43804 # return resultBuilder.build(); 43805 # } 43806 # // ... 43807 # 43808 # Example (iOS / Obj-C): 43809 # 43810 # // ... 43811 # static UIColor* fromProto(Color* protocolor) { 43812 # float red = [protocolor red]; 43813 # float green = [protocolor green]; 43814 # float blue = [protocolor blue]; 43815 # FloatValue* alpha_wrapper = [protocolor alpha]; 43816 # float alpha = 1.0; 43817 # if (alpha_wrapper != nil) { 43818 # alpha = [alpha_wrapper value]; 43819 # } 43820 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 43821 # } 43822 # 43823 # static Color* toProto(UIColor* color) { 43824 # CGFloat red, green, blue, alpha; 43825 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 43826 # return nil; 43827 # } 43828 # Color* result = [Color alloc] init]; 43829 # [result setRed:red]; 43830 # [result setGreen:green]; 43831 # [result setBlue:blue]; 43832 # if (alpha <= 0.9999) { 43833 # [result setAlpha:floatWrapperWithValue(alpha)]; 43834 # } 43835 # [result autorelease]; 43836 # return result; 43837 # } 43838 # // ... 43839 # 43840 # Example (JavaScript): 43841 # 43842 # // ... 43843 # 43844 # var protoToCssColor = function(rgb_color) { 43845 # var redFrac = rgb_color.red || 0.0; 43846 # var greenFrac = rgb_color.green || 0.0; 43847 # var blueFrac = rgb_color.blue || 0.0; 43848 # var red = Math.floor(redFrac * 255); 43849 # var green = Math.floor(greenFrac * 255); 43850 # var blue = Math.floor(blueFrac * 255); 43851 # 43852 # if (!('alpha' in rgb_color)) { 43853 # return rgbToCssColor_(red, green, blue); 43854 # } 43855 # 43856 # var alphaFrac = rgb_color.alpha.value || 0.0; 43857 # var rgbParams = [red, green, blue].join(','); 43858 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 43859 # }; 43860 # 43861 # var rgbToCssColor_ = function(red, green, blue) { 43862 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 43863 # var hexString = rgbNumber.toString(16); 43864 # var missingZeros = 6 - hexString.length; 43865 # var resultBuilder = ['#']; 43866 # for (var i = 0; i < missingZeros; i++) { 43867 # resultBuilder.push('0'); 43868 # } 43869 # resultBuilder.push(hexString); 43870 # return resultBuilder.join(''); 43871 # }; 43872 # 43873 # // ... 43874 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 43875 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 43876 # the final pixel color is defined by the equation: 43877 # 43878 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 43879 # 43880 # This means that a value of 1.0 corresponds to a solid color, whereas 43881 # a value of 0.0 corresponds to a completely transparent color. This 43882 # uses a wrapper message rather than a simple float scalar so that it is 43883 # possible to distinguish between a default value and the value being unset. 43884 # If omitted, this color object is to be rendered as a solid color 43885 # (as if the alpha value had been explicitly given with a value of 1.0). 43886 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 43887 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 43888 }, 43889 "type": "A String", # How the value should be interpreted. 43890 "value": "A String", # The value this interpolation point uses. May be a formula. 43891 # Unused if type is MIN or 43892 # MAX. 43893 }, 43894 "minpoint": { # A single interpolation point on a gradient conditional format. # The starting interpolation point. 43895 # These pin the gradient color scale according to the color, 43896 # type and value chosen. 43897 "color": { # Represents a color in the RGBA color space. This representation is designed # The color this interpolation point should use. 43898 # for simplicity of conversion to/from color representations in various 43899 # languages over compactness; for example, the fields of this representation 43900 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 43901 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 43902 # method in iOS; and, with just a little work, it can be easily formatted into 43903 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 43904 # 43905 # Example (Java): 43906 # 43907 # import com.google.type.Color; 43908 # 43909 # // ... 43910 # public static java.awt.Color fromProto(Color protocolor) { 43911 # float alpha = protocolor.hasAlpha() 43912 # ? protocolor.getAlpha().getValue() 43913 # : 1.0; 43914 # 43915 # return new java.awt.Color( 43916 # protocolor.getRed(), 43917 # protocolor.getGreen(), 43918 # protocolor.getBlue(), 43919 # alpha); 43920 # } 43921 # 43922 # public static Color toProto(java.awt.Color color) { 43923 # float red = (float) color.getRed(); 43924 # float green = (float) color.getGreen(); 43925 # float blue = (float) color.getBlue(); 43926 # float denominator = 255.0; 43927 # Color.Builder resultBuilder = 43928 # Color 43929 # .newBuilder() 43930 # .setRed(red / denominator) 43931 # .setGreen(green / denominator) 43932 # .setBlue(blue / denominator); 43933 # int alpha = color.getAlpha(); 43934 # if (alpha != 255) { 43935 # result.setAlpha( 43936 # FloatValue 43937 # .newBuilder() 43938 # .setValue(((float) alpha) / denominator) 43939 # .build()); 43940 # } 43941 # return resultBuilder.build(); 43942 # } 43943 # // ... 43944 # 43945 # Example (iOS / Obj-C): 43946 # 43947 # // ... 43948 # static UIColor* fromProto(Color* protocolor) { 43949 # float red = [protocolor red]; 43950 # float green = [protocolor green]; 43951 # float blue = [protocolor blue]; 43952 # FloatValue* alpha_wrapper = [protocolor alpha]; 43953 # float alpha = 1.0; 43954 # if (alpha_wrapper != nil) { 43955 # alpha = [alpha_wrapper value]; 43956 # } 43957 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 43958 # } 43959 # 43960 # static Color* toProto(UIColor* color) { 43961 # CGFloat red, green, blue, alpha; 43962 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 43963 # return nil; 43964 # } 43965 # Color* result = [Color alloc] init]; 43966 # [result setRed:red]; 43967 # [result setGreen:green]; 43968 # [result setBlue:blue]; 43969 # if (alpha <= 0.9999) { 43970 # [result setAlpha:floatWrapperWithValue(alpha)]; 43971 # } 43972 # [result autorelease]; 43973 # return result; 43974 # } 43975 # // ... 43976 # 43977 # Example (JavaScript): 43978 # 43979 # // ... 43980 # 43981 # var protoToCssColor = function(rgb_color) { 43982 # var redFrac = rgb_color.red || 0.0; 43983 # var greenFrac = rgb_color.green || 0.0; 43984 # var blueFrac = rgb_color.blue || 0.0; 43985 # var red = Math.floor(redFrac * 255); 43986 # var green = Math.floor(greenFrac * 255); 43987 # var blue = Math.floor(blueFrac * 255); 43988 # 43989 # if (!('alpha' in rgb_color)) { 43990 # return rgbToCssColor_(red, green, blue); 43991 # } 43992 # 43993 # var alphaFrac = rgb_color.alpha.value || 0.0; 43994 # var rgbParams = [red, green, blue].join(','); 43995 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 43996 # }; 43997 # 43998 # var rgbToCssColor_ = function(red, green, blue) { 43999 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 44000 # var hexString = rgbNumber.toString(16); 44001 # var missingZeros = 6 - hexString.length; 44002 # var resultBuilder = ['#']; 44003 # for (var i = 0; i < missingZeros; i++) { 44004 # resultBuilder.push('0'); 44005 # } 44006 # resultBuilder.push(hexString); 44007 # return resultBuilder.join(''); 44008 # }; 44009 # 44010 # // ... 44011 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 44012 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 44013 # the final pixel color is defined by the equation: 44014 # 44015 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 44016 # 44017 # This means that a value of 1.0 corresponds to a solid color, whereas 44018 # a value of 0.0 corresponds to a completely transparent color. This 44019 # uses a wrapper message rather than a simple float scalar so that it is 44020 # possible to distinguish between a default value and the value being unset. 44021 # If omitted, this color object is to be rendered as a solid color 44022 # (as if the alpha value had been explicitly given with a value of 1.0). 44023 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 44024 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 44025 }, 44026 "type": "A String", # How the value should be interpreted. 44027 "value": "A String", # The value this interpolation point uses. May be a formula. 44028 # Unused if type is MIN or 44029 # MAX. 44030 }, 44031 }, 44032 }, 44033 ], 44034 "bandedRanges": [ # The banded (i.e. alternating colors) ranges on this sheet. 44035 { # A banded (alternating colors) range in a sheet. 44036 "range": { # A range on a sheet. # The range over which these properties are applied. 44037 # All indexes are zero-based. 44038 # Indexes are half open, e.g the start index is inclusive 44039 # and the end index is exclusive -- [start_index, end_index). 44040 # Missing indexes indicate the range is unbounded on that side. 44041 # 44042 # For example, if `"Sheet1"` is sheet ID 0, then: 44043 # 44044 # `Sheet1!A1:A1 == sheet_id: 0, 44045 # start_row_index: 0, end_row_index: 1, 44046 # start_column_index: 0, end_column_index: 1` 44047 # 44048 # `Sheet1!A3:B4 == sheet_id: 0, 44049 # start_row_index: 2, end_row_index: 4, 44050 # start_column_index: 0, end_column_index: 2` 44051 # 44052 # `Sheet1!A:B == sheet_id: 0, 44053 # start_column_index: 0, end_column_index: 2` 44054 # 44055 # `Sheet1!A5:B == sheet_id: 0, 44056 # start_row_index: 4, 44057 # start_column_index: 0, end_column_index: 2` 44058 # 44059 # `Sheet1 == sheet_id:0` 44060 # 44061 # The start index must always be less than or equal to the end index. 44062 # If the start index equals the end index, then the range is empty. 44063 # Empty ranges are typically not meaningful and are usually rendered in the 44064 # UI as `#REF!`. 44065 "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded. 44066 "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded. 44067 "sheetId": 42, # The sheet this range is on. 44068 "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded. 44069 "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded. 44070 }, 44071 "columnProperties": { # Properties referring a single dimension (either row or column). If both # Properties for column bands. These properties will be applied on a column- 44072 # by-column basis throughout all the columns in the range. At least one of 44073 # row_properties or column_properties must be specified. 44074 # BandedRange.row_properties and BandedRange.column_properties are 44075 # set, the fill colors are applied to cells according to the following rules: 44076 # 44077 # * header_color and footer_color take priority over band colors. 44078 # * first_band_color takes priority over second_band_color. 44079 # * row_properties takes priority over column_properties. 44080 # 44081 # For example, the first row color takes priority over the first column 44082 # color, but the first column color takes priority over the second row color. 44083 # Similarly, the row header takes priority over the column header in the 44084 # top left cell, but the column header takes priority over the first row 44085 # color if the row header is not set. 44086 "secondBandColor": { # Represents a color in the RGBA color space. This representation is designed # The second color that is alternating. (Required) 44087 # for simplicity of conversion to/from color representations in various 44088 # languages over compactness; for example, the fields of this representation 44089 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 44090 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 44091 # method in iOS; and, with just a little work, it can be easily formatted into 44092 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 44093 # 44094 # Example (Java): 44095 # 44096 # import com.google.type.Color; 44097 # 44098 # // ... 44099 # public static java.awt.Color fromProto(Color protocolor) { 44100 # float alpha = protocolor.hasAlpha() 44101 # ? protocolor.getAlpha().getValue() 44102 # : 1.0; 44103 # 44104 # return new java.awt.Color( 44105 # protocolor.getRed(), 44106 # protocolor.getGreen(), 44107 # protocolor.getBlue(), 44108 # alpha); 44109 # } 44110 # 44111 # public static Color toProto(java.awt.Color color) { 44112 # float red = (float) color.getRed(); 44113 # float green = (float) color.getGreen(); 44114 # float blue = (float) color.getBlue(); 44115 # float denominator = 255.0; 44116 # Color.Builder resultBuilder = 44117 # Color 44118 # .newBuilder() 44119 # .setRed(red / denominator) 44120 # .setGreen(green / denominator) 44121 # .setBlue(blue / denominator); 44122 # int alpha = color.getAlpha(); 44123 # if (alpha != 255) { 44124 # result.setAlpha( 44125 # FloatValue 44126 # .newBuilder() 44127 # .setValue(((float) alpha) / denominator) 44128 # .build()); 44129 # } 44130 # return resultBuilder.build(); 44131 # } 44132 # // ... 44133 # 44134 # Example (iOS / Obj-C): 44135 # 44136 # // ... 44137 # static UIColor* fromProto(Color* protocolor) { 44138 # float red = [protocolor red]; 44139 # float green = [protocolor green]; 44140 # float blue = [protocolor blue]; 44141 # FloatValue* alpha_wrapper = [protocolor alpha]; 44142 # float alpha = 1.0; 44143 # if (alpha_wrapper != nil) { 44144 # alpha = [alpha_wrapper value]; 44145 # } 44146 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 44147 # } 44148 # 44149 # static Color* toProto(UIColor* color) { 44150 # CGFloat red, green, blue, alpha; 44151 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 44152 # return nil; 44153 # } 44154 # Color* result = [Color alloc] init]; 44155 # [result setRed:red]; 44156 # [result setGreen:green]; 44157 # [result setBlue:blue]; 44158 # if (alpha <= 0.9999) { 44159 # [result setAlpha:floatWrapperWithValue(alpha)]; 44160 # } 44161 # [result autorelease]; 44162 # return result; 44163 # } 44164 # // ... 44165 # 44166 # Example (JavaScript): 44167 # 44168 # // ... 44169 # 44170 # var protoToCssColor = function(rgb_color) { 44171 # var redFrac = rgb_color.red || 0.0; 44172 # var greenFrac = rgb_color.green || 0.0; 44173 # var blueFrac = rgb_color.blue || 0.0; 44174 # var red = Math.floor(redFrac * 255); 44175 # var green = Math.floor(greenFrac * 255); 44176 # var blue = Math.floor(blueFrac * 255); 44177 # 44178 # if (!('alpha' in rgb_color)) { 44179 # return rgbToCssColor_(red, green, blue); 44180 # } 44181 # 44182 # var alphaFrac = rgb_color.alpha.value || 0.0; 44183 # var rgbParams = [red, green, blue].join(','); 44184 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 44185 # }; 44186 # 44187 # var rgbToCssColor_ = function(red, green, blue) { 44188 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 44189 # var hexString = rgbNumber.toString(16); 44190 # var missingZeros = 6 - hexString.length; 44191 # var resultBuilder = ['#']; 44192 # for (var i = 0; i < missingZeros; i++) { 44193 # resultBuilder.push('0'); 44194 # } 44195 # resultBuilder.push(hexString); 44196 # return resultBuilder.join(''); 44197 # }; 44198 # 44199 # // ... 44200 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 44201 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 44202 # the final pixel color is defined by the equation: 44203 # 44204 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 44205 # 44206 # This means that a value of 1.0 corresponds to a solid color, whereas 44207 # a value of 0.0 corresponds to a completely transparent color. This 44208 # uses a wrapper message rather than a simple float scalar so that it is 44209 # possible to distinguish between a default value and the value being unset. 44210 # If omitted, this color object is to be rendered as a solid color 44211 # (as if the alpha value had been explicitly given with a value of 1.0). 44212 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 44213 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 44214 }, 44215 "headerColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the first row or column. If this field is set, the first 44216 # row or column will be filled with this color and the colors will 44217 # alternate between first_band_color and second_band_color starting 44218 # from the second row or column. Otherwise, the first row or column will be 44219 # filled with first_band_color and the colors will proceed to alternate 44220 # as they normally would. 44221 # for simplicity of conversion to/from color representations in various 44222 # languages over compactness; for example, the fields of this representation 44223 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 44224 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 44225 # method in iOS; and, with just a little work, it can be easily formatted into 44226 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 44227 # 44228 # Example (Java): 44229 # 44230 # import com.google.type.Color; 44231 # 44232 # // ... 44233 # public static java.awt.Color fromProto(Color protocolor) { 44234 # float alpha = protocolor.hasAlpha() 44235 # ? protocolor.getAlpha().getValue() 44236 # : 1.0; 44237 # 44238 # return new java.awt.Color( 44239 # protocolor.getRed(), 44240 # protocolor.getGreen(), 44241 # protocolor.getBlue(), 44242 # alpha); 44243 # } 44244 # 44245 # public static Color toProto(java.awt.Color color) { 44246 # float red = (float) color.getRed(); 44247 # float green = (float) color.getGreen(); 44248 # float blue = (float) color.getBlue(); 44249 # float denominator = 255.0; 44250 # Color.Builder resultBuilder = 44251 # Color 44252 # .newBuilder() 44253 # .setRed(red / denominator) 44254 # .setGreen(green / denominator) 44255 # .setBlue(blue / denominator); 44256 # int alpha = color.getAlpha(); 44257 # if (alpha != 255) { 44258 # result.setAlpha( 44259 # FloatValue 44260 # .newBuilder() 44261 # .setValue(((float) alpha) / denominator) 44262 # .build()); 44263 # } 44264 # return resultBuilder.build(); 44265 # } 44266 # // ... 44267 # 44268 # Example (iOS / Obj-C): 44269 # 44270 # // ... 44271 # static UIColor* fromProto(Color* protocolor) { 44272 # float red = [protocolor red]; 44273 # float green = [protocolor green]; 44274 # float blue = [protocolor blue]; 44275 # FloatValue* alpha_wrapper = [protocolor alpha]; 44276 # float alpha = 1.0; 44277 # if (alpha_wrapper != nil) { 44278 # alpha = [alpha_wrapper value]; 44279 # } 44280 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 44281 # } 44282 # 44283 # static Color* toProto(UIColor* color) { 44284 # CGFloat red, green, blue, alpha; 44285 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 44286 # return nil; 44287 # } 44288 # Color* result = [Color alloc] init]; 44289 # [result setRed:red]; 44290 # [result setGreen:green]; 44291 # [result setBlue:blue]; 44292 # if (alpha <= 0.9999) { 44293 # [result setAlpha:floatWrapperWithValue(alpha)]; 44294 # } 44295 # [result autorelease]; 44296 # return result; 44297 # } 44298 # // ... 44299 # 44300 # Example (JavaScript): 44301 # 44302 # // ... 44303 # 44304 # var protoToCssColor = function(rgb_color) { 44305 # var redFrac = rgb_color.red || 0.0; 44306 # var greenFrac = rgb_color.green || 0.0; 44307 # var blueFrac = rgb_color.blue || 0.0; 44308 # var red = Math.floor(redFrac * 255); 44309 # var green = Math.floor(greenFrac * 255); 44310 # var blue = Math.floor(blueFrac * 255); 44311 # 44312 # if (!('alpha' in rgb_color)) { 44313 # return rgbToCssColor_(red, green, blue); 44314 # } 44315 # 44316 # var alphaFrac = rgb_color.alpha.value || 0.0; 44317 # var rgbParams = [red, green, blue].join(','); 44318 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 44319 # }; 44320 # 44321 # var rgbToCssColor_ = function(red, green, blue) { 44322 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 44323 # var hexString = rgbNumber.toString(16); 44324 # var missingZeros = 6 - hexString.length; 44325 # var resultBuilder = ['#']; 44326 # for (var i = 0; i < missingZeros; i++) { 44327 # resultBuilder.push('0'); 44328 # } 44329 # resultBuilder.push(hexString); 44330 # return resultBuilder.join(''); 44331 # }; 44332 # 44333 # // ... 44334 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 44335 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 44336 # the final pixel color is defined by the equation: 44337 # 44338 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 44339 # 44340 # This means that a value of 1.0 corresponds to a solid color, whereas 44341 # a value of 0.0 corresponds to a completely transparent color. This 44342 # uses a wrapper message rather than a simple float scalar so that it is 44343 # possible to distinguish between a default value and the value being unset. 44344 # If omitted, this color object is to be rendered as a solid color 44345 # (as if the alpha value had been explicitly given with a value of 1.0). 44346 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 44347 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 44348 }, 44349 "footerColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the last row or column. If this field is not set, the last 44350 # row or column will be filled with either first_band_color or 44351 # second_band_color, depending on the color of the previous row or 44352 # column. 44353 # for simplicity of conversion to/from color representations in various 44354 # languages over compactness; for example, the fields of this representation 44355 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 44356 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 44357 # method in iOS; and, with just a little work, it can be easily formatted into 44358 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 44359 # 44360 # Example (Java): 44361 # 44362 # import com.google.type.Color; 44363 # 44364 # // ... 44365 # public static java.awt.Color fromProto(Color protocolor) { 44366 # float alpha = protocolor.hasAlpha() 44367 # ? protocolor.getAlpha().getValue() 44368 # : 1.0; 44369 # 44370 # return new java.awt.Color( 44371 # protocolor.getRed(), 44372 # protocolor.getGreen(), 44373 # protocolor.getBlue(), 44374 # alpha); 44375 # } 44376 # 44377 # public static Color toProto(java.awt.Color color) { 44378 # float red = (float) color.getRed(); 44379 # float green = (float) color.getGreen(); 44380 # float blue = (float) color.getBlue(); 44381 # float denominator = 255.0; 44382 # Color.Builder resultBuilder = 44383 # Color 44384 # .newBuilder() 44385 # .setRed(red / denominator) 44386 # .setGreen(green / denominator) 44387 # .setBlue(blue / denominator); 44388 # int alpha = color.getAlpha(); 44389 # if (alpha != 255) { 44390 # result.setAlpha( 44391 # FloatValue 44392 # .newBuilder() 44393 # .setValue(((float) alpha) / denominator) 44394 # .build()); 44395 # } 44396 # return resultBuilder.build(); 44397 # } 44398 # // ... 44399 # 44400 # Example (iOS / Obj-C): 44401 # 44402 # // ... 44403 # static UIColor* fromProto(Color* protocolor) { 44404 # float red = [protocolor red]; 44405 # float green = [protocolor green]; 44406 # float blue = [protocolor blue]; 44407 # FloatValue* alpha_wrapper = [protocolor alpha]; 44408 # float alpha = 1.0; 44409 # if (alpha_wrapper != nil) { 44410 # alpha = [alpha_wrapper value]; 44411 # } 44412 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 44413 # } 44414 # 44415 # static Color* toProto(UIColor* color) { 44416 # CGFloat red, green, blue, alpha; 44417 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 44418 # return nil; 44419 # } 44420 # Color* result = [Color alloc] init]; 44421 # [result setRed:red]; 44422 # [result setGreen:green]; 44423 # [result setBlue:blue]; 44424 # if (alpha <= 0.9999) { 44425 # [result setAlpha:floatWrapperWithValue(alpha)]; 44426 # } 44427 # [result autorelease]; 44428 # return result; 44429 # } 44430 # // ... 44431 # 44432 # Example (JavaScript): 44433 # 44434 # // ... 44435 # 44436 # var protoToCssColor = function(rgb_color) { 44437 # var redFrac = rgb_color.red || 0.0; 44438 # var greenFrac = rgb_color.green || 0.0; 44439 # var blueFrac = rgb_color.blue || 0.0; 44440 # var red = Math.floor(redFrac * 255); 44441 # var green = Math.floor(greenFrac * 255); 44442 # var blue = Math.floor(blueFrac * 255); 44443 # 44444 # if (!('alpha' in rgb_color)) { 44445 # return rgbToCssColor_(red, green, blue); 44446 # } 44447 # 44448 # var alphaFrac = rgb_color.alpha.value || 0.0; 44449 # var rgbParams = [red, green, blue].join(','); 44450 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 44451 # }; 44452 # 44453 # var rgbToCssColor_ = function(red, green, blue) { 44454 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 44455 # var hexString = rgbNumber.toString(16); 44456 # var missingZeros = 6 - hexString.length; 44457 # var resultBuilder = ['#']; 44458 # for (var i = 0; i < missingZeros; i++) { 44459 # resultBuilder.push('0'); 44460 # } 44461 # resultBuilder.push(hexString); 44462 # return resultBuilder.join(''); 44463 # }; 44464 # 44465 # // ... 44466 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 44467 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 44468 # the final pixel color is defined by the equation: 44469 # 44470 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 44471 # 44472 # This means that a value of 1.0 corresponds to a solid color, whereas 44473 # a value of 0.0 corresponds to a completely transparent color. This 44474 # uses a wrapper message rather than a simple float scalar so that it is 44475 # possible to distinguish between a default value and the value being unset. 44476 # If omitted, this color object is to be rendered as a solid color 44477 # (as if the alpha value had been explicitly given with a value of 1.0). 44478 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 44479 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 44480 }, 44481 "firstBandColor": { # Represents a color in the RGBA color space. This representation is designed # The first color that is alternating. (Required) 44482 # for simplicity of conversion to/from color representations in various 44483 # languages over compactness; for example, the fields of this representation 44484 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 44485 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 44486 # method in iOS; and, with just a little work, it can be easily formatted into 44487 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 44488 # 44489 # Example (Java): 44490 # 44491 # import com.google.type.Color; 44492 # 44493 # // ... 44494 # public static java.awt.Color fromProto(Color protocolor) { 44495 # float alpha = protocolor.hasAlpha() 44496 # ? protocolor.getAlpha().getValue() 44497 # : 1.0; 44498 # 44499 # return new java.awt.Color( 44500 # protocolor.getRed(), 44501 # protocolor.getGreen(), 44502 # protocolor.getBlue(), 44503 # alpha); 44504 # } 44505 # 44506 # public static Color toProto(java.awt.Color color) { 44507 # float red = (float) color.getRed(); 44508 # float green = (float) color.getGreen(); 44509 # float blue = (float) color.getBlue(); 44510 # float denominator = 255.0; 44511 # Color.Builder resultBuilder = 44512 # Color 44513 # .newBuilder() 44514 # .setRed(red / denominator) 44515 # .setGreen(green / denominator) 44516 # .setBlue(blue / denominator); 44517 # int alpha = color.getAlpha(); 44518 # if (alpha != 255) { 44519 # result.setAlpha( 44520 # FloatValue 44521 # .newBuilder() 44522 # .setValue(((float) alpha) / denominator) 44523 # .build()); 44524 # } 44525 # return resultBuilder.build(); 44526 # } 44527 # // ... 44528 # 44529 # Example (iOS / Obj-C): 44530 # 44531 # // ... 44532 # static UIColor* fromProto(Color* protocolor) { 44533 # float red = [protocolor red]; 44534 # float green = [protocolor green]; 44535 # float blue = [protocolor blue]; 44536 # FloatValue* alpha_wrapper = [protocolor alpha]; 44537 # float alpha = 1.0; 44538 # if (alpha_wrapper != nil) { 44539 # alpha = [alpha_wrapper value]; 44540 # } 44541 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 44542 # } 44543 # 44544 # static Color* toProto(UIColor* color) { 44545 # CGFloat red, green, blue, alpha; 44546 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 44547 # return nil; 44548 # } 44549 # Color* result = [Color alloc] init]; 44550 # [result setRed:red]; 44551 # [result setGreen:green]; 44552 # [result setBlue:blue]; 44553 # if (alpha <= 0.9999) { 44554 # [result setAlpha:floatWrapperWithValue(alpha)]; 44555 # } 44556 # [result autorelease]; 44557 # return result; 44558 # } 44559 # // ... 44560 # 44561 # Example (JavaScript): 44562 # 44563 # // ... 44564 # 44565 # var protoToCssColor = function(rgb_color) { 44566 # var redFrac = rgb_color.red || 0.0; 44567 # var greenFrac = rgb_color.green || 0.0; 44568 # var blueFrac = rgb_color.blue || 0.0; 44569 # var red = Math.floor(redFrac * 255); 44570 # var green = Math.floor(greenFrac * 255); 44571 # var blue = Math.floor(blueFrac * 255); 44572 # 44573 # if (!('alpha' in rgb_color)) { 44574 # return rgbToCssColor_(red, green, blue); 44575 # } 44576 # 44577 # var alphaFrac = rgb_color.alpha.value || 0.0; 44578 # var rgbParams = [red, green, blue].join(','); 44579 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 44580 # }; 44581 # 44582 # var rgbToCssColor_ = function(red, green, blue) { 44583 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 44584 # var hexString = rgbNumber.toString(16); 44585 # var missingZeros = 6 - hexString.length; 44586 # var resultBuilder = ['#']; 44587 # for (var i = 0; i < missingZeros; i++) { 44588 # resultBuilder.push('0'); 44589 # } 44590 # resultBuilder.push(hexString); 44591 # return resultBuilder.join(''); 44592 # }; 44593 # 44594 # // ... 44595 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 44596 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 44597 # the final pixel color is defined by the equation: 44598 # 44599 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 44600 # 44601 # This means that a value of 1.0 corresponds to a solid color, whereas 44602 # a value of 0.0 corresponds to a completely transparent color. This 44603 # uses a wrapper message rather than a simple float scalar so that it is 44604 # possible to distinguish between a default value and the value being unset. 44605 # If omitted, this color object is to be rendered as a solid color 44606 # (as if the alpha value had been explicitly given with a value of 1.0). 44607 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 44608 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 44609 }, 44610 }, 44611 "rowProperties": { # Properties referring a single dimension (either row or column). If both # Properties for row bands. These properties will be applied on a row-by-row 44612 # basis throughout all the rows in the range. At least one of 44613 # row_properties or column_properties must be specified. 44614 # BandedRange.row_properties and BandedRange.column_properties are 44615 # set, the fill colors are applied to cells according to the following rules: 44616 # 44617 # * header_color and footer_color take priority over band colors. 44618 # * first_band_color takes priority over second_band_color. 44619 # * row_properties takes priority over column_properties. 44620 # 44621 # For example, the first row color takes priority over the first column 44622 # color, but the first column color takes priority over the second row color. 44623 # Similarly, the row header takes priority over the column header in the 44624 # top left cell, but the column header takes priority over the first row 44625 # color if the row header is not set. 44626 "secondBandColor": { # Represents a color in the RGBA color space. This representation is designed # The second color that is alternating. (Required) 44627 # for simplicity of conversion to/from color representations in various 44628 # languages over compactness; for example, the fields of this representation 44629 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 44630 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 44631 # method in iOS; and, with just a little work, it can be easily formatted into 44632 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 44633 # 44634 # Example (Java): 44635 # 44636 # import com.google.type.Color; 44637 # 44638 # // ... 44639 # public static java.awt.Color fromProto(Color protocolor) { 44640 # float alpha = protocolor.hasAlpha() 44641 # ? protocolor.getAlpha().getValue() 44642 # : 1.0; 44643 # 44644 # return new java.awt.Color( 44645 # protocolor.getRed(), 44646 # protocolor.getGreen(), 44647 # protocolor.getBlue(), 44648 # alpha); 44649 # } 44650 # 44651 # public static Color toProto(java.awt.Color color) { 44652 # float red = (float) color.getRed(); 44653 # float green = (float) color.getGreen(); 44654 # float blue = (float) color.getBlue(); 44655 # float denominator = 255.0; 44656 # Color.Builder resultBuilder = 44657 # Color 44658 # .newBuilder() 44659 # .setRed(red / denominator) 44660 # .setGreen(green / denominator) 44661 # .setBlue(blue / denominator); 44662 # int alpha = color.getAlpha(); 44663 # if (alpha != 255) { 44664 # result.setAlpha( 44665 # FloatValue 44666 # .newBuilder() 44667 # .setValue(((float) alpha) / denominator) 44668 # .build()); 44669 # } 44670 # return resultBuilder.build(); 44671 # } 44672 # // ... 44673 # 44674 # Example (iOS / Obj-C): 44675 # 44676 # // ... 44677 # static UIColor* fromProto(Color* protocolor) { 44678 # float red = [protocolor red]; 44679 # float green = [protocolor green]; 44680 # float blue = [protocolor blue]; 44681 # FloatValue* alpha_wrapper = [protocolor alpha]; 44682 # float alpha = 1.0; 44683 # if (alpha_wrapper != nil) { 44684 # alpha = [alpha_wrapper value]; 44685 # } 44686 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 44687 # } 44688 # 44689 # static Color* toProto(UIColor* color) { 44690 # CGFloat red, green, blue, alpha; 44691 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 44692 # return nil; 44693 # } 44694 # Color* result = [Color alloc] init]; 44695 # [result setRed:red]; 44696 # [result setGreen:green]; 44697 # [result setBlue:blue]; 44698 # if (alpha <= 0.9999) { 44699 # [result setAlpha:floatWrapperWithValue(alpha)]; 44700 # } 44701 # [result autorelease]; 44702 # return result; 44703 # } 44704 # // ... 44705 # 44706 # Example (JavaScript): 44707 # 44708 # // ... 44709 # 44710 # var protoToCssColor = function(rgb_color) { 44711 # var redFrac = rgb_color.red || 0.0; 44712 # var greenFrac = rgb_color.green || 0.0; 44713 # var blueFrac = rgb_color.blue || 0.0; 44714 # var red = Math.floor(redFrac * 255); 44715 # var green = Math.floor(greenFrac * 255); 44716 # var blue = Math.floor(blueFrac * 255); 44717 # 44718 # if (!('alpha' in rgb_color)) { 44719 # return rgbToCssColor_(red, green, blue); 44720 # } 44721 # 44722 # var alphaFrac = rgb_color.alpha.value || 0.0; 44723 # var rgbParams = [red, green, blue].join(','); 44724 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 44725 # }; 44726 # 44727 # var rgbToCssColor_ = function(red, green, blue) { 44728 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 44729 # var hexString = rgbNumber.toString(16); 44730 # var missingZeros = 6 - hexString.length; 44731 # var resultBuilder = ['#']; 44732 # for (var i = 0; i < missingZeros; i++) { 44733 # resultBuilder.push('0'); 44734 # } 44735 # resultBuilder.push(hexString); 44736 # return resultBuilder.join(''); 44737 # }; 44738 # 44739 # // ... 44740 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 44741 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 44742 # the final pixel color is defined by the equation: 44743 # 44744 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 44745 # 44746 # This means that a value of 1.0 corresponds to a solid color, whereas 44747 # a value of 0.0 corresponds to a completely transparent color. This 44748 # uses a wrapper message rather than a simple float scalar so that it is 44749 # possible to distinguish between a default value and the value being unset. 44750 # If omitted, this color object is to be rendered as a solid color 44751 # (as if the alpha value had been explicitly given with a value of 1.0). 44752 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 44753 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 44754 }, 44755 "headerColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the first row or column. If this field is set, the first 44756 # row or column will be filled with this color and the colors will 44757 # alternate between first_band_color and second_band_color starting 44758 # from the second row or column. Otherwise, the first row or column will be 44759 # filled with first_band_color and the colors will proceed to alternate 44760 # as they normally would. 44761 # for simplicity of conversion to/from color representations in various 44762 # languages over compactness; for example, the fields of this representation 44763 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 44764 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 44765 # method in iOS; and, with just a little work, it can be easily formatted into 44766 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 44767 # 44768 # Example (Java): 44769 # 44770 # import com.google.type.Color; 44771 # 44772 # // ... 44773 # public static java.awt.Color fromProto(Color protocolor) { 44774 # float alpha = protocolor.hasAlpha() 44775 # ? protocolor.getAlpha().getValue() 44776 # : 1.0; 44777 # 44778 # return new java.awt.Color( 44779 # protocolor.getRed(), 44780 # protocolor.getGreen(), 44781 # protocolor.getBlue(), 44782 # alpha); 44783 # } 44784 # 44785 # public static Color toProto(java.awt.Color color) { 44786 # float red = (float) color.getRed(); 44787 # float green = (float) color.getGreen(); 44788 # float blue = (float) color.getBlue(); 44789 # float denominator = 255.0; 44790 # Color.Builder resultBuilder = 44791 # Color 44792 # .newBuilder() 44793 # .setRed(red / denominator) 44794 # .setGreen(green / denominator) 44795 # .setBlue(blue / denominator); 44796 # int alpha = color.getAlpha(); 44797 # if (alpha != 255) { 44798 # result.setAlpha( 44799 # FloatValue 44800 # .newBuilder() 44801 # .setValue(((float) alpha) / denominator) 44802 # .build()); 44803 # } 44804 # return resultBuilder.build(); 44805 # } 44806 # // ... 44807 # 44808 # Example (iOS / Obj-C): 44809 # 44810 # // ... 44811 # static UIColor* fromProto(Color* protocolor) { 44812 # float red = [protocolor red]; 44813 # float green = [protocolor green]; 44814 # float blue = [protocolor blue]; 44815 # FloatValue* alpha_wrapper = [protocolor alpha]; 44816 # float alpha = 1.0; 44817 # if (alpha_wrapper != nil) { 44818 # alpha = [alpha_wrapper value]; 44819 # } 44820 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 44821 # } 44822 # 44823 # static Color* toProto(UIColor* color) { 44824 # CGFloat red, green, blue, alpha; 44825 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 44826 # return nil; 44827 # } 44828 # Color* result = [Color alloc] init]; 44829 # [result setRed:red]; 44830 # [result setGreen:green]; 44831 # [result setBlue:blue]; 44832 # if (alpha <= 0.9999) { 44833 # [result setAlpha:floatWrapperWithValue(alpha)]; 44834 # } 44835 # [result autorelease]; 44836 # return result; 44837 # } 44838 # // ... 44839 # 44840 # Example (JavaScript): 44841 # 44842 # // ... 44843 # 44844 # var protoToCssColor = function(rgb_color) { 44845 # var redFrac = rgb_color.red || 0.0; 44846 # var greenFrac = rgb_color.green || 0.0; 44847 # var blueFrac = rgb_color.blue || 0.0; 44848 # var red = Math.floor(redFrac * 255); 44849 # var green = Math.floor(greenFrac * 255); 44850 # var blue = Math.floor(blueFrac * 255); 44851 # 44852 # if (!('alpha' in rgb_color)) { 44853 # return rgbToCssColor_(red, green, blue); 44854 # } 44855 # 44856 # var alphaFrac = rgb_color.alpha.value || 0.0; 44857 # var rgbParams = [red, green, blue].join(','); 44858 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 44859 # }; 44860 # 44861 # var rgbToCssColor_ = function(red, green, blue) { 44862 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 44863 # var hexString = rgbNumber.toString(16); 44864 # var missingZeros = 6 - hexString.length; 44865 # var resultBuilder = ['#']; 44866 # for (var i = 0; i < missingZeros; i++) { 44867 # resultBuilder.push('0'); 44868 # } 44869 # resultBuilder.push(hexString); 44870 # return resultBuilder.join(''); 44871 # }; 44872 # 44873 # // ... 44874 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 44875 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 44876 # the final pixel color is defined by the equation: 44877 # 44878 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 44879 # 44880 # This means that a value of 1.0 corresponds to a solid color, whereas 44881 # a value of 0.0 corresponds to a completely transparent color. This 44882 # uses a wrapper message rather than a simple float scalar so that it is 44883 # possible to distinguish between a default value and the value being unset. 44884 # If omitted, this color object is to be rendered as a solid color 44885 # (as if the alpha value had been explicitly given with a value of 1.0). 44886 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 44887 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 44888 }, 44889 "footerColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the last row or column. If this field is not set, the last 44890 # row or column will be filled with either first_band_color or 44891 # second_band_color, depending on the color of the previous row or 44892 # column. 44893 # for simplicity of conversion to/from color representations in various 44894 # languages over compactness; for example, the fields of this representation 44895 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 44896 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 44897 # method in iOS; and, with just a little work, it can be easily formatted into 44898 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 44899 # 44900 # Example (Java): 44901 # 44902 # import com.google.type.Color; 44903 # 44904 # // ... 44905 # public static java.awt.Color fromProto(Color protocolor) { 44906 # float alpha = protocolor.hasAlpha() 44907 # ? protocolor.getAlpha().getValue() 44908 # : 1.0; 44909 # 44910 # return new java.awt.Color( 44911 # protocolor.getRed(), 44912 # protocolor.getGreen(), 44913 # protocolor.getBlue(), 44914 # alpha); 44915 # } 44916 # 44917 # public static Color toProto(java.awt.Color color) { 44918 # float red = (float) color.getRed(); 44919 # float green = (float) color.getGreen(); 44920 # float blue = (float) color.getBlue(); 44921 # float denominator = 255.0; 44922 # Color.Builder resultBuilder = 44923 # Color 44924 # .newBuilder() 44925 # .setRed(red / denominator) 44926 # .setGreen(green / denominator) 44927 # .setBlue(blue / denominator); 44928 # int alpha = color.getAlpha(); 44929 # if (alpha != 255) { 44930 # result.setAlpha( 44931 # FloatValue 44932 # .newBuilder() 44933 # .setValue(((float) alpha) / denominator) 44934 # .build()); 44935 # } 44936 # return resultBuilder.build(); 44937 # } 44938 # // ... 44939 # 44940 # Example (iOS / Obj-C): 44941 # 44942 # // ... 44943 # static UIColor* fromProto(Color* protocolor) { 44944 # float red = [protocolor red]; 44945 # float green = [protocolor green]; 44946 # float blue = [protocolor blue]; 44947 # FloatValue* alpha_wrapper = [protocolor alpha]; 44948 # float alpha = 1.0; 44949 # if (alpha_wrapper != nil) { 44950 # alpha = [alpha_wrapper value]; 44951 # } 44952 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 44953 # } 44954 # 44955 # static Color* toProto(UIColor* color) { 44956 # CGFloat red, green, blue, alpha; 44957 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 44958 # return nil; 44959 # } 44960 # Color* result = [Color alloc] init]; 44961 # [result setRed:red]; 44962 # [result setGreen:green]; 44963 # [result setBlue:blue]; 44964 # if (alpha <= 0.9999) { 44965 # [result setAlpha:floatWrapperWithValue(alpha)]; 44966 # } 44967 # [result autorelease]; 44968 # return result; 44969 # } 44970 # // ... 44971 # 44972 # Example (JavaScript): 44973 # 44974 # // ... 44975 # 44976 # var protoToCssColor = function(rgb_color) { 44977 # var redFrac = rgb_color.red || 0.0; 44978 # var greenFrac = rgb_color.green || 0.0; 44979 # var blueFrac = rgb_color.blue || 0.0; 44980 # var red = Math.floor(redFrac * 255); 44981 # var green = Math.floor(greenFrac * 255); 44982 # var blue = Math.floor(blueFrac * 255); 44983 # 44984 # if (!('alpha' in rgb_color)) { 44985 # return rgbToCssColor_(red, green, blue); 44986 # } 44987 # 44988 # var alphaFrac = rgb_color.alpha.value || 0.0; 44989 # var rgbParams = [red, green, blue].join(','); 44990 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 44991 # }; 44992 # 44993 # var rgbToCssColor_ = function(red, green, blue) { 44994 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 44995 # var hexString = rgbNumber.toString(16); 44996 # var missingZeros = 6 - hexString.length; 44997 # var resultBuilder = ['#']; 44998 # for (var i = 0; i < missingZeros; i++) { 44999 # resultBuilder.push('0'); 45000 # } 45001 # resultBuilder.push(hexString); 45002 # return resultBuilder.join(''); 45003 # }; 45004 # 45005 # // ... 45006 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 45007 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 45008 # the final pixel color is defined by the equation: 45009 # 45010 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 45011 # 45012 # This means that a value of 1.0 corresponds to a solid color, whereas 45013 # a value of 0.0 corresponds to a completely transparent color. This 45014 # uses a wrapper message rather than a simple float scalar so that it is 45015 # possible to distinguish between a default value and the value being unset. 45016 # If omitted, this color object is to be rendered as a solid color 45017 # (as if the alpha value had been explicitly given with a value of 1.0). 45018 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 45019 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 45020 }, 45021 "firstBandColor": { # Represents a color in the RGBA color space. This representation is designed # The first color that is alternating. (Required) 45022 # for simplicity of conversion to/from color representations in various 45023 # languages over compactness; for example, the fields of this representation 45024 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 45025 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 45026 # method in iOS; and, with just a little work, it can be easily formatted into 45027 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 45028 # 45029 # Example (Java): 45030 # 45031 # import com.google.type.Color; 45032 # 45033 # // ... 45034 # public static java.awt.Color fromProto(Color protocolor) { 45035 # float alpha = protocolor.hasAlpha() 45036 # ? protocolor.getAlpha().getValue() 45037 # : 1.0; 45038 # 45039 # return new java.awt.Color( 45040 # protocolor.getRed(), 45041 # protocolor.getGreen(), 45042 # protocolor.getBlue(), 45043 # alpha); 45044 # } 45045 # 45046 # public static Color toProto(java.awt.Color color) { 45047 # float red = (float) color.getRed(); 45048 # float green = (float) color.getGreen(); 45049 # float blue = (float) color.getBlue(); 45050 # float denominator = 255.0; 45051 # Color.Builder resultBuilder = 45052 # Color 45053 # .newBuilder() 45054 # .setRed(red / denominator) 45055 # .setGreen(green / denominator) 45056 # .setBlue(blue / denominator); 45057 # int alpha = color.getAlpha(); 45058 # if (alpha != 255) { 45059 # result.setAlpha( 45060 # FloatValue 45061 # .newBuilder() 45062 # .setValue(((float) alpha) / denominator) 45063 # .build()); 45064 # } 45065 # return resultBuilder.build(); 45066 # } 45067 # // ... 45068 # 45069 # Example (iOS / Obj-C): 45070 # 45071 # // ... 45072 # static UIColor* fromProto(Color* protocolor) { 45073 # float red = [protocolor red]; 45074 # float green = [protocolor green]; 45075 # float blue = [protocolor blue]; 45076 # FloatValue* alpha_wrapper = [protocolor alpha]; 45077 # float alpha = 1.0; 45078 # if (alpha_wrapper != nil) { 45079 # alpha = [alpha_wrapper value]; 45080 # } 45081 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 45082 # } 45083 # 45084 # static Color* toProto(UIColor* color) { 45085 # CGFloat red, green, blue, alpha; 45086 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 45087 # return nil; 45088 # } 45089 # Color* result = [Color alloc] init]; 45090 # [result setRed:red]; 45091 # [result setGreen:green]; 45092 # [result setBlue:blue]; 45093 # if (alpha <= 0.9999) { 45094 # [result setAlpha:floatWrapperWithValue(alpha)]; 45095 # } 45096 # [result autorelease]; 45097 # return result; 45098 # } 45099 # // ... 45100 # 45101 # Example (JavaScript): 45102 # 45103 # // ... 45104 # 45105 # var protoToCssColor = function(rgb_color) { 45106 # var redFrac = rgb_color.red || 0.0; 45107 # var greenFrac = rgb_color.green || 0.0; 45108 # var blueFrac = rgb_color.blue || 0.0; 45109 # var red = Math.floor(redFrac * 255); 45110 # var green = Math.floor(greenFrac * 255); 45111 # var blue = Math.floor(blueFrac * 255); 45112 # 45113 # if (!('alpha' in rgb_color)) { 45114 # return rgbToCssColor_(red, green, blue); 45115 # } 45116 # 45117 # var alphaFrac = rgb_color.alpha.value || 0.0; 45118 # var rgbParams = [red, green, blue].join(','); 45119 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 45120 # }; 45121 # 45122 # var rgbToCssColor_ = function(red, green, blue) { 45123 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 45124 # var hexString = rgbNumber.toString(16); 45125 # var missingZeros = 6 - hexString.length; 45126 # var resultBuilder = ['#']; 45127 # for (var i = 0; i < missingZeros; i++) { 45128 # resultBuilder.push('0'); 45129 # } 45130 # resultBuilder.push(hexString); 45131 # return resultBuilder.join(''); 45132 # }; 45133 # 45134 # // ... 45135 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 45136 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 45137 # the final pixel color is defined by the equation: 45138 # 45139 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 45140 # 45141 # This means that a value of 1.0 corresponds to a solid color, whereas 45142 # a value of 0.0 corresponds to a completely transparent color. This 45143 # uses a wrapper message rather than a simple float scalar so that it is 45144 # possible to distinguish between a default value and the value being unset. 45145 # If omitted, this color object is to be rendered as a solid color 45146 # (as if the alpha value had been explicitly given with a value of 1.0). 45147 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 45148 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 45149 }, 45150 }, 45151 "bandedRangeId": 42, # The id of the banded range. 45152 }, 45153 ], 45154 "merges": [ # The ranges that are merged together. 45155 { # A range on a sheet. 45156 # All indexes are zero-based. 45157 # Indexes are half open, e.g the start index is inclusive 45158 # and the end index is exclusive -- [start_index, end_index). 45159 # Missing indexes indicate the range is unbounded on that side. 45160 # 45161 # For example, if `"Sheet1"` is sheet ID 0, then: 45162 # 45163 # `Sheet1!A1:A1 == sheet_id: 0, 45164 # start_row_index: 0, end_row_index: 1, 45165 # start_column_index: 0, end_column_index: 1` 45166 # 45167 # `Sheet1!A3:B4 == sheet_id: 0, 45168 # start_row_index: 2, end_row_index: 4, 45169 # start_column_index: 0, end_column_index: 2` 45170 # 45171 # `Sheet1!A:B == sheet_id: 0, 45172 # start_column_index: 0, end_column_index: 2` 45173 # 45174 # `Sheet1!A5:B == sheet_id: 0, 45175 # start_row_index: 4, 45176 # start_column_index: 0, end_column_index: 2` 45177 # 45178 # `Sheet1 == sheet_id:0` 45179 # 45180 # The start index must always be less than or equal to the end index. 45181 # If the start index equals the end index, then the range is empty. 45182 # Empty ranges are typically not meaningful and are usually rendered in the 45183 # UI as `#REF!`. 45184 "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded. 45185 "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded. 45186 "sheetId": 42, # The sheet this range is on. 45187 "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded. 45188 "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded. 45189 }, 45190 ], 45191 "basicFilter": { # The default filter associated with a sheet. # The filter on this sheet, if any. 45192 "range": { # A range on a sheet. # The range the filter covers. 45193 # All indexes are zero-based. 45194 # Indexes are half open, e.g the start index is inclusive 45195 # and the end index is exclusive -- [start_index, end_index). 45196 # Missing indexes indicate the range is unbounded on that side. 45197 # 45198 # For example, if `"Sheet1"` is sheet ID 0, then: 45199 # 45200 # `Sheet1!A1:A1 == sheet_id: 0, 45201 # start_row_index: 0, end_row_index: 1, 45202 # start_column_index: 0, end_column_index: 1` 45203 # 45204 # `Sheet1!A3:B4 == sheet_id: 0, 45205 # start_row_index: 2, end_row_index: 4, 45206 # start_column_index: 0, end_column_index: 2` 45207 # 45208 # `Sheet1!A:B == sheet_id: 0, 45209 # start_column_index: 0, end_column_index: 2` 45210 # 45211 # `Sheet1!A5:B == sheet_id: 0, 45212 # start_row_index: 4, 45213 # start_column_index: 0, end_column_index: 2` 45214 # 45215 # `Sheet1 == sheet_id:0` 45216 # 45217 # The start index must always be less than or equal to the end index. 45218 # If the start index equals the end index, then the range is empty. 45219 # Empty ranges are typically not meaningful and are usually rendered in the 45220 # UI as `#REF!`. 45221 "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded. 45222 "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded. 45223 "sheetId": 42, # The sheet this range is on. 45224 "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded. 45225 "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded. 45226 }, 45227 "sortSpecs": [ # The sort order per column. Later specifications are used when values 45228 # are equal in the earlier specifications. 45229 { # A sort order associated with a specific column or row. 45230 "sortOrder": "A String", # The order data should be sorted. 45231 "dimensionIndex": 42, # The dimension the sort should be applied to. 45232 }, 45233 ], 45234 "criteria": { # The criteria for showing/hiding values per column. 45235 # The map's key is the column index, and the value is the criteria for 45236 # that column. 45237 "a_key": { # Criteria for showing/hiding rows in a filter or filter view. 45238 "hiddenValues": [ # Values that should be hidden. 45239 "A String", 45240 ], 45241 "condition": { # A condition that can evaluate to true or false. # A condition that must be true for values to be shown. 45242 # (This does not override hiddenValues -- if a value is listed there, 45243 # it will still be hidden.) 45244 # BooleanConditions are used by conditional formatting, 45245 # data validation, and the criteria in filters. 45246 "values": [ # The values of the condition. The number of supported values depends 45247 # on the condition type. Some support zero values, 45248 # others one or two values, 45249 # and ConditionType.ONE_OF_LIST supports an arbitrary number of values. 45250 { # The value of the condition. 45251 "relativeDate": "A String", # A relative date (based on the current date). 45252 # Valid only if the type is 45253 # DATE_BEFORE, 45254 # DATE_AFTER, 45255 # DATE_ON_OR_BEFORE or 45256 # DATE_ON_OR_AFTER. 45257 # 45258 # Relative dates are not supported in data validation. 45259 # They are supported only in conditional formatting and 45260 # conditional filters. 45261 "userEnteredValue": "A String", # A value the condition is based on. 45262 # The value will be parsed as if the user typed into a cell. 45263 # Formulas are supported (and must begin with an `=`). 45264 }, 45265 ], 45266 "type": "A String", # The type of condition. 45267 }, 45268 }, 45269 }, 45270 }, 45271 "charts": [ # The specifications of every chart on this sheet. 45272 { # A chart embedded in a sheet. 45273 "chartId": 42, # The ID of the chart. 45274 "position": { # The position of an embedded object such as a chart. # The position of the chart. 45275 "newSheet": True or False, # If true, the embedded object will be put on a new sheet whose ID 45276 # is chosen for you. Used only when writing. 45277 "sheetId": 42, # The sheet this is on. Set only if the embedded object 45278 # is on its own sheet. Must be non-negative. 45279 "overlayPosition": { # The location an object is overlaid on top of a grid. # The position at which the object is overlaid on top of a grid. 45280 "anchorCell": { # A coordinate in a sheet. # The cell the object is anchored to. 45281 # All indexes are zero-based. 45282 "rowIndex": 42, # The row index of the coordinate. 45283 "columnIndex": 42, # The column index of the coordinate. 45284 "sheetId": 42, # The sheet this coordinate is on. 45285 }, 45286 "offsetYPixels": 42, # The vertical offset, in pixels, that the object is offset 45287 # from the anchor cell. 45288 "widthPixels": 42, # The width of the object, in pixels. Defaults to 600. 45289 "offsetXPixels": 42, # The horizontal offset, in pixels, that the object is offset 45290 # from the anchor cell. 45291 "heightPixels": 42, # The height of the object, in pixels. Defaults to 371. 45292 }, 45293 }, 45294 "spec": { # The specifications of a chart. # The specification of the chart. 45295 "hiddenDimensionStrategy": "A String", # Determines how the charts will use hidden rows or columns. 45296 "pieChart": { # A <a href="/chart/interactive/docs/gallery/piechart">pie chart</a>. # A pie chart specification. 45297 "series": { # The data included in a domain or series. # The data that covers the one and only series of the pie chart. 45298 "sourceRange": { # Source ranges for a chart. # The source ranges of the data. 45299 "sources": [ # The ranges of data for a series or domain. 45300 # Exactly one dimension must have a length of 1, 45301 # and all sources in the list must have the same dimension 45302 # with length 1. 45303 # The domain (if it exists) & all series must have the same number 45304 # of source ranges. If using more than one source range, then the source 45305 # range at a given offset must be contiguous across the domain and series. 45306 # 45307 # For example, these are valid configurations: 45308 # 45309 # domain sources: A1:A5 45310 # series1 sources: B1:B5 45311 # series2 sources: D6:D10 45312 # 45313 # domain sources: A1:A5, C10:C12 45314 # series1 sources: B1:B5, D10:D12 45315 # series2 sources: C1:C5, E10:E12 45316 { # A range on a sheet. 45317 # All indexes are zero-based. 45318 # Indexes are half open, e.g the start index is inclusive 45319 # and the end index is exclusive -- [start_index, end_index). 45320 # Missing indexes indicate the range is unbounded on that side. 45321 # 45322 # For example, if `"Sheet1"` is sheet ID 0, then: 45323 # 45324 # `Sheet1!A1:A1 == sheet_id: 0, 45325 # start_row_index: 0, end_row_index: 1, 45326 # start_column_index: 0, end_column_index: 1` 45327 # 45328 # `Sheet1!A3:B4 == sheet_id: 0, 45329 # start_row_index: 2, end_row_index: 4, 45330 # start_column_index: 0, end_column_index: 2` 45331 # 45332 # `Sheet1!A:B == sheet_id: 0, 45333 # start_column_index: 0, end_column_index: 2` 45334 # 45335 # `Sheet1!A5:B == sheet_id: 0, 45336 # start_row_index: 4, 45337 # start_column_index: 0, end_column_index: 2` 45338 # 45339 # `Sheet1 == sheet_id:0` 45340 # 45341 # The start index must always be less than or equal to the end index. 45342 # If the start index equals the end index, then the range is empty. 45343 # Empty ranges are typically not meaningful and are usually rendered in the 45344 # UI as `#REF!`. 45345 "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded. 45346 "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded. 45347 "sheetId": 42, # The sheet this range is on. 45348 "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded. 45349 "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded. 45350 }, 45351 ], 45352 }, 45353 }, 45354 "domain": { # The data included in a domain or series. # The data that covers the domain of the pie chart. 45355 "sourceRange": { # Source ranges for a chart. # The source ranges of the data. 45356 "sources": [ # The ranges of data for a series or domain. 45357 # Exactly one dimension must have a length of 1, 45358 # and all sources in the list must have the same dimension 45359 # with length 1. 45360 # The domain (if it exists) & all series must have the same number 45361 # of source ranges. If using more than one source range, then the source 45362 # range at a given offset must be contiguous across the domain and series. 45363 # 45364 # For example, these are valid configurations: 45365 # 45366 # domain sources: A1:A5 45367 # series1 sources: B1:B5 45368 # series2 sources: D6:D10 45369 # 45370 # domain sources: A1:A5, C10:C12 45371 # series1 sources: B1:B5, D10:D12 45372 # series2 sources: C1:C5, E10:E12 45373 { # A range on a sheet. 45374 # All indexes are zero-based. 45375 # Indexes are half open, e.g the start index is inclusive 45376 # and the end index is exclusive -- [start_index, end_index). 45377 # Missing indexes indicate the range is unbounded on that side. 45378 # 45379 # For example, if `"Sheet1"` is sheet ID 0, then: 45380 # 45381 # `Sheet1!A1:A1 == sheet_id: 0, 45382 # start_row_index: 0, end_row_index: 1, 45383 # start_column_index: 0, end_column_index: 1` 45384 # 45385 # `Sheet1!A3:B4 == sheet_id: 0, 45386 # start_row_index: 2, end_row_index: 4, 45387 # start_column_index: 0, end_column_index: 2` 45388 # 45389 # `Sheet1!A:B == sheet_id: 0, 45390 # start_column_index: 0, end_column_index: 2` 45391 # 45392 # `Sheet1!A5:B == sheet_id: 0, 45393 # start_row_index: 4, 45394 # start_column_index: 0, end_column_index: 2` 45395 # 45396 # `Sheet1 == sheet_id:0` 45397 # 45398 # The start index must always be less than or equal to the end index. 45399 # If the start index equals the end index, then the range is empty. 45400 # Empty ranges are typically not meaningful and are usually rendered in the 45401 # UI as `#REF!`. 45402 "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded. 45403 "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded. 45404 "sheetId": 42, # The sheet this range is on. 45405 "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded. 45406 "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded. 45407 }, 45408 ], 45409 }, 45410 }, 45411 "threeDimensional": True or False, # True if the pie is three dimensional. 45412 "legendPosition": "A String", # Where the legend of the pie chart should be drawn. 45413 "pieHole": 3.14, # The size of the hole in the pie chart. 45414 }, 45415 "basicChart": { # The specification for a basic chart. See BasicChartType for the list # A basic chart specification, can be one of many kinds of charts. 45416 # See BasicChartType for the list of all 45417 # charts this supports. 45418 # of charts this supports. 45419 "headerCount": 42, # The number of rows or columns in the data that are "headers". 45420 # If not set, Google Sheets will guess how many rows are headers based 45421 # on the data. 45422 # 45423 # (Note that BasicChartAxis.title may override the axis title 45424 # inferred from the header values.) 45425 "series": [ # The data this chart is visualizing. 45426 { # A single series of data in a chart. 45427 # For example, if charting stock prices over time, multiple series may exist, 45428 # one for the "Open Price", "High Price", "Low Price" and "Close Price". 45429 "series": { # The data included in a domain or series. # The data being visualized in this chart series. 45430 "sourceRange": { # Source ranges for a chart. # The source ranges of the data. 45431 "sources": [ # The ranges of data for a series or domain. 45432 # Exactly one dimension must have a length of 1, 45433 # and all sources in the list must have the same dimension 45434 # with length 1. 45435 # The domain (if it exists) & all series must have the same number 45436 # of source ranges. If using more than one source range, then the source 45437 # range at a given offset must be contiguous across the domain and series. 45438 # 45439 # For example, these are valid configurations: 45440 # 45441 # domain sources: A1:A5 45442 # series1 sources: B1:B5 45443 # series2 sources: D6:D10 45444 # 45445 # domain sources: A1:A5, C10:C12 45446 # series1 sources: B1:B5, D10:D12 45447 # series2 sources: C1:C5, E10:E12 45448 { # A range on a sheet. 45449 # All indexes are zero-based. 45450 # Indexes are half open, e.g the start index is inclusive 45451 # and the end index is exclusive -- [start_index, end_index). 45452 # Missing indexes indicate the range is unbounded on that side. 45453 # 45454 # For example, if `"Sheet1"` is sheet ID 0, then: 45455 # 45456 # `Sheet1!A1:A1 == sheet_id: 0, 45457 # start_row_index: 0, end_row_index: 1, 45458 # start_column_index: 0, end_column_index: 1` 45459 # 45460 # `Sheet1!A3:B4 == sheet_id: 0, 45461 # start_row_index: 2, end_row_index: 4, 45462 # start_column_index: 0, end_column_index: 2` 45463 # 45464 # `Sheet1!A:B == sheet_id: 0, 45465 # start_column_index: 0, end_column_index: 2` 45466 # 45467 # `Sheet1!A5:B == sheet_id: 0, 45468 # start_row_index: 4, 45469 # start_column_index: 0, end_column_index: 2` 45470 # 45471 # `Sheet1 == sheet_id:0` 45472 # 45473 # The start index must always be less than or equal to the end index. 45474 # If the start index equals the end index, then the range is empty. 45475 # Empty ranges are typically not meaningful and are usually rendered in the 45476 # UI as `#REF!`. 45477 "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded. 45478 "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded. 45479 "sheetId": 42, # The sheet this range is on. 45480 "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded. 45481 "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded. 45482 }, 45483 ], 45484 }, 45485 }, 45486 "targetAxis": "A String", # The minor axis that will specify the range of values for this series. 45487 # For example, if charting stocks over time, the "Volume" series 45488 # may want to be pinned to the right with the prices pinned to the left, 45489 # because the scale of trading volume is different than the scale of 45490 # prices. 45491 # It is an error to specify an axis that isn't a valid minor axis 45492 # for the chart's type. 45493 "type": "A String", # The type of this series. Valid only if the 45494 # chartType is 45495 # COMBO. 45496 # Different types will change the way the series is visualized. 45497 # Only LINE, AREA, 45498 # and COLUMN are supported. 45499 }, 45500 ], 45501 "legendPosition": "A String", # The position of the chart legend. 45502 "domains": [ # The domain of data this is charting. 45503 # Only a single domain is supported. 45504 { # The domain of a chart. 45505 # For example, if charting stock prices over time, this would be the date. 45506 "domain": { # The data included in a domain or series. # The data of the domain. For example, if charting stock prices over time, 45507 # this is the data representing the dates. 45508 "sourceRange": { # Source ranges for a chart. # The source ranges of the data. 45509 "sources": [ # The ranges of data for a series or domain. 45510 # Exactly one dimension must have a length of 1, 45511 # and all sources in the list must have the same dimension 45512 # with length 1. 45513 # The domain (if it exists) & all series must have the same number 45514 # of source ranges. If using more than one source range, then the source 45515 # range at a given offset must be contiguous across the domain and series. 45516 # 45517 # For example, these are valid configurations: 45518 # 45519 # domain sources: A1:A5 45520 # series1 sources: B1:B5 45521 # series2 sources: D6:D10 45522 # 45523 # domain sources: A1:A5, C10:C12 45524 # series1 sources: B1:B5, D10:D12 45525 # series2 sources: C1:C5, E10:E12 45526 { # A range on a sheet. 45527 # All indexes are zero-based. 45528 # Indexes are half open, e.g the start index is inclusive 45529 # and the end index is exclusive -- [start_index, end_index). 45530 # Missing indexes indicate the range is unbounded on that side. 45531 # 45532 # For example, if `"Sheet1"` is sheet ID 0, then: 45533 # 45534 # `Sheet1!A1:A1 == sheet_id: 0, 45535 # start_row_index: 0, end_row_index: 1, 45536 # start_column_index: 0, end_column_index: 1` 45537 # 45538 # `Sheet1!A3:B4 == sheet_id: 0, 45539 # start_row_index: 2, end_row_index: 4, 45540 # start_column_index: 0, end_column_index: 2` 45541 # 45542 # `Sheet1!A:B == sheet_id: 0, 45543 # start_column_index: 0, end_column_index: 2` 45544 # 45545 # `Sheet1!A5:B == sheet_id: 0, 45546 # start_row_index: 4, 45547 # start_column_index: 0, end_column_index: 2` 45548 # 45549 # `Sheet1 == sheet_id:0` 45550 # 45551 # The start index must always be less than or equal to the end index. 45552 # If the start index equals the end index, then the range is empty. 45553 # Empty ranges are typically not meaningful and are usually rendered in the 45554 # UI as `#REF!`. 45555 "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded. 45556 "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded. 45557 "sheetId": 42, # The sheet this range is on. 45558 "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded. 45559 "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded. 45560 }, 45561 ], 45562 }, 45563 }, 45564 }, 45565 ], 45566 "chartType": "A String", # The type of the chart. 45567 "axis": [ # The axis on the chart. 45568 { # An axis of the chart. 45569 # A chart may not have more than one axis per 45570 # axis position. 45571 "position": "A String", # The position of this axis. 45572 "format": { # The format of a run of text in a cell. # The format of the title. 45573 # Only valid if the axis is not associated with the domain. 45574 # Absent values indicate that the field isn't specified. 45575 "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text. 45576 # for simplicity of conversion to/from color representations in various 45577 # languages over compactness; for example, the fields of this representation 45578 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 45579 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 45580 # method in iOS; and, with just a little work, it can be easily formatted into 45581 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 45582 # 45583 # Example (Java): 45584 # 45585 # import com.google.type.Color; 45586 # 45587 # // ... 45588 # public static java.awt.Color fromProto(Color protocolor) { 45589 # float alpha = protocolor.hasAlpha() 45590 # ? protocolor.getAlpha().getValue() 45591 # : 1.0; 45592 # 45593 # return new java.awt.Color( 45594 # protocolor.getRed(), 45595 # protocolor.getGreen(), 45596 # protocolor.getBlue(), 45597 # alpha); 45598 # } 45599 # 45600 # public static Color toProto(java.awt.Color color) { 45601 # float red = (float) color.getRed(); 45602 # float green = (float) color.getGreen(); 45603 # float blue = (float) color.getBlue(); 45604 # float denominator = 255.0; 45605 # Color.Builder resultBuilder = 45606 # Color 45607 # .newBuilder() 45608 # .setRed(red / denominator) 45609 # .setGreen(green / denominator) 45610 # .setBlue(blue / denominator); 45611 # int alpha = color.getAlpha(); 45612 # if (alpha != 255) { 45613 # result.setAlpha( 45614 # FloatValue 45615 # .newBuilder() 45616 # .setValue(((float) alpha) / denominator) 45617 # .build()); 45618 # } 45619 # return resultBuilder.build(); 45620 # } 45621 # // ... 45622 # 45623 # Example (iOS / Obj-C): 45624 # 45625 # // ... 45626 # static UIColor* fromProto(Color* protocolor) { 45627 # float red = [protocolor red]; 45628 # float green = [protocolor green]; 45629 # float blue = [protocolor blue]; 45630 # FloatValue* alpha_wrapper = [protocolor alpha]; 45631 # float alpha = 1.0; 45632 # if (alpha_wrapper != nil) { 45633 # alpha = [alpha_wrapper value]; 45634 # } 45635 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 45636 # } 45637 # 45638 # static Color* toProto(UIColor* color) { 45639 # CGFloat red, green, blue, alpha; 45640 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 45641 # return nil; 45642 # } 45643 # Color* result = [Color alloc] init]; 45644 # [result setRed:red]; 45645 # [result setGreen:green]; 45646 # [result setBlue:blue]; 45647 # if (alpha <= 0.9999) { 45648 # [result setAlpha:floatWrapperWithValue(alpha)]; 45649 # } 45650 # [result autorelease]; 45651 # return result; 45652 # } 45653 # // ... 45654 # 45655 # Example (JavaScript): 45656 # 45657 # // ... 45658 # 45659 # var protoToCssColor = function(rgb_color) { 45660 # var redFrac = rgb_color.red || 0.0; 45661 # var greenFrac = rgb_color.green || 0.0; 45662 # var blueFrac = rgb_color.blue || 0.0; 45663 # var red = Math.floor(redFrac * 255); 45664 # var green = Math.floor(greenFrac * 255); 45665 # var blue = Math.floor(blueFrac * 255); 45666 # 45667 # if (!('alpha' in rgb_color)) { 45668 # return rgbToCssColor_(red, green, blue); 45669 # } 45670 # 45671 # var alphaFrac = rgb_color.alpha.value || 0.0; 45672 # var rgbParams = [red, green, blue].join(','); 45673 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 45674 # }; 45675 # 45676 # var rgbToCssColor_ = function(red, green, blue) { 45677 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 45678 # var hexString = rgbNumber.toString(16); 45679 # var missingZeros = 6 - hexString.length; 45680 # var resultBuilder = ['#']; 45681 # for (var i = 0; i < missingZeros; i++) { 45682 # resultBuilder.push('0'); 45683 # } 45684 # resultBuilder.push(hexString); 45685 # return resultBuilder.join(''); 45686 # }; 45687 # 45688 # // ... 45689 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 45690 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 45691 # the final pixel color is defined by the equation: 45692 # 45693 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 45694 # 45695 # This means that a value of 1.0 corresponds to a solid color, whereas 45696 # a value of 0.0 corresponds to a completely transparent color. This 45697 # uses a wrapper message rather than a simple float scalar so that it is 45698 # possible to distinguish between a default value and the value being unset. 45699 # If omitted, this color object is to be rendered as a solid color 45700 # (as if the alpha value had been explicitly given with a value of 1.0). 45701 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 45702 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 45703 }, 45704 "bold": True or False, # True if the text is bold. 45705 "strikethrough": True or False, # True if the text has a strikethrough. 45706 "fontFamily": "A String", # The font family. 45707 "fontSize": 42, # The size of the font. 45708 "italic": True or False, # True if the text is italicized. 45709 "underline": True or False, # True if the text is underlined. 45710 }, 45711 "title": "A String", # The title of this axis. If set, this overrides any title inferred 45712 # from headers of the data. 45713 }, 45714 ], 45715 }, 45716 "title": "A String", # The title of the chart. 45717 }, 45718 }, 45719 ], 45720 "filterViews": [ # The filter views in this sheet. 45721 { # A filter view. 45722 "title": "A String", # The name of the filter view. 45723 "namedRangeId": "A String", # The named range this filter view is backed by, if any. 45724 # 45725 # When writing, only one of range or named_range_id 45726 # may be set. 45727 "filterViewId": 42, # The ID of the filter view. 45728 "range": { # A range on a sheet. # The range this filter view covers. 45729 # 45730 # When writing, only one of range or named_range_id 45731 # may be set. 45732 # All indexes are zero-based. 45733 # Indexes are half open, e.g the start index is inclusive 45734 # and the end index is exclusive -- [start_index, end_index). 45735 # Missing indexes indicate the range is unbounded on that side. 45736 # 45737 # For example, if `"Sheet1"` is sheet ID 0, then: 45738 # 45739 # `Sheet1!A1:A1 == sheet_id: 0, 45740 # start_row_index: 0, end_row_index: 1, 45741 # start_column_index: 0, end_column_index: 1` 45742 # 45743 # `Sheet1!A3:B4 == sheet_id: 0, 45744 # start_row_index: 2, end_row_index: 4, 45745 # start_column_index: 0, end_column_index: 2` 45746 # 45747 # `Sheet1!A:B == sheet_id: 0, 45748 # start_column_index: 0, end_column_index: 2` 45749 # 45750 # `Sheet1!A5:B == sheet_id: 0, 45751 # start_row_index: 4, 45752 # start_column_index: 0, end_column_index: 2` 45753 # 45754 # `Sheet1 == sheet_id:0` 45755 # 45756 # The start index must always be less than or equal to the end index. 45757 # If the start index equals the end index, then the range is empty. 45758 # Empty ranges are typically not meaningful and are usually rendered in the 45759 # UI as `#REF!`. 45760 "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded. 45761 "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded. 45762 "sheetId": 42, # The sheet this range is on. 45763 "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded. 45764 "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded. 45765 }, 45766 "sortSpecs": [ # The sort order per column. Later specifications are used when values 45767 # are equal in the earlier specifications. 45768 { # A sort order associated with a specific column or row. 45769 "sortOrder": "A String", # The order data should be sorted. 45770 "dimensionIndex": 42, # The dimension the sort should be applied to. 45771 }, 45772 ], 45773 "criteria": { # The criteria for showing/hiding values per column. 45774 # The map's key is the column index, and the value is the criteria for 45775 # that column. 45776 "a_key": { # Criteria for showing/hiding rows in a filter or filter view. 45777 "hiddenValues": [ # Values that should be hidden. 45778 "A String", 45779 ], 45780 "condition": { # A condition that can evaluate to true or false. # A condition that must be true for values to be shown. 45781 # (This does not override hiddenValues -- if a value is listed there, 45782 # it will still be hidden.) 45783 # BooleanConditions are used by conditional formatting, 45784 # data validation, and the criteria in filters. 45785 "values": [ # The values of the condition. The number of supported values depends 45786 # on the condition type. Some support zero values, 45787 # others one or two values, 45788 # and ConditionType.ONE_OF_LIST supports an arbitrary number of values. 45789 { # The value of the condition. 45790 "relativeDate": "A String", # A relative date (based on the current date). 45791 # Valid only if the type is 45792 # DATE_BEFORE, 45793 # DATE_AFTER, 45794 # DATE_ON_OR_BEFORE or 45795 # DATE_ON_OR_AFTER. 45796 # 45797 # Relative dates are not supported in data validation. 45798 # They are supported only in conditional formatting and 45799 # conditional filters. 45800 "userEnteredValue": "A String", # A value the condition is based on. 45801 # The value will be parsed as if the user typed into a cell. 45802 # Formulas are supported (and must begin with an `=`). 45803 }, 45804 ], 45805 "type": "A String", # The type of condition. 45806 }, 45807 }, 45808 }, 45809 }, 45810 ], 45811 "protectedRanges": [ # The protected ranges in this sheet. 45812 { # A protected range. 45813 "unprotectedRanges": [ # The list of unprotected ranges within a protected sheet. 45814 # Unprotected ranges are only supported on protected sheets. 45815 { # A range on a sheet. 45816 # All indexes are zero-based. 45817 # Indexes are half open, e.g the start index is inclusive 45818 # and the end index is exclusive -- [start_index, end_index). 45819 # Missing indexes indicate the range is unbounded on that side. 45820 # 45821 # For example, if `"Sheet1"` is sheet ID 0, then: 45822 # 45823 # `Sheet1!A1:A1 == sheet_id: 0, 45824 # start_row_index: 0, end_row_index: 1, 45825 # start_column_index: 0, end_column_index: 1` 45826 # 45827 # `Sheet1!A3:B4 == sheet_id: 0, 45828 # start_row_index: 2, end_row_index: 4, 45829 # start_column_index: 0, end_column_index: 2` 45830 # 45831 # `Sheet1!A:B == sheet_id: 0, 45832 # start_column_index: 0, end_column_index: 2` 45833 # 45834 # `Sheet1!A5:B == sheet_id: 0, 45835 # start_row_index: 4, 45836 # start_column_index: 0, end_column_index: 2` 45837 # 45838 # `Sheet1 == sheet_id:0` 45839 # 45840 # The start index must always be less than or equal to the end index. 45841 # If the start index equals the end index, then the range is empty. 45842 # Empty ranges are typically not meaningful and are usually rendered in the 45843 # UI as `#REF!`. 45844 "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded. 45845 "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded. 45846 "sheetId": 42, # The sheet this range is on. 45847 "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded. 45848 "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded. 45849 }, 45850 ], 45851 "requestingUserCanEdit": True or False, # True if the user who requested this protected range can edit the 45852 # protected area. 45853 # This field is read-only. 45854 "description": "A String", # The description of this protected range. 45855 "namedRangeId": "A String", # The named range this protected range is backed by, if any. 45856 # 45857 # When writing, only one of range or named_range_id 45858 # may be set. 45859 "editors": { # The editors of a protected range. # The users and groups with edit access to the protected range. 45860 # This field is only visible to users with edit access to the protected 45861 # range and the document. 45862 # Editors are not supported with warning_only protection. 45863 "domainUsersCanEdit": True or False, # True if anyone in the document's domain has edit access to the protected 45864 # range. Domain protection is only supported on documents within a domain. 45865 "users": [ # The email addresses of users with edit access to the protected range. 45866 "A String", 45867 ], 45868 "groups": [ # The email addresses of groups with edit access to the protected range. 45869 "A String", 45870 ], 45871 }, 45872 "protectedRangeId": 42, # The ID of the protected range. 45873 # This field is read-only. 45874 "warningOnly": True or False, # True if this protected range will show a warning when editing. 45875 # Warning-based protection means that every user can edit data in the 45876 # protected range, except editing will prompt a warning asking the user 45877 # to confirm the edit. 45878 # 45879 # When writing: if this field is true, then editors is ignored. 45880 # Additionally, if this field is changed from true to false and the 45881 # `editors` field is not set (nor included in the field mask), then 45882 # the editors will be set to all the editors in the document. 45883 "range": { # A range on a sheet. # The range that is being protected. 45884 # The range may be fully unbounded, in which case this is considered 45885 # a protected sheet. 45886 # 45887 # When writing, only one of range or named_range_id 45888 # may be set. 45889 # All indexes are zero-based. 45890 # Indexes are half open, e.g the start index is inclusive 45891 # and the end index is exclusive -- [start_index, end_index). 45892 # Missing indexes indicate the range is unbounded on that side. 45893 # 45894 # For example, if `"Sheet1"` is sheet ID 0, then: 45895 # 45896 # `Sheet1!A1:A1 == sheet_id: 0, 45897 # start_row_index: 0, end_row_index: 1, 45898 # start_column_index: 0, end_column_index: 1` 45899 # 45900 # `Sheet1!A3:B4 == sheet_id: 0, 45901 # start_row_index: 2, end_row_index: 4, 45902 # start_column_index: 0, end_column_index: 2` 45903 # 45904 # `Sheet1!A:B == sheet_id: 0, 45905 # start_column_index: 0, end_column_index: 2` 45906 # 45907 # `Sheet1!A5:B == sheet_id: 0, 45908 # start_row_index: 4, 45909 # start_column_index: 0, end_column_index: 2` 45910 # 45911 # `Sheet1 == sheet_id:0` 45912 # 45913 # The start index must always be less than or equal to the end index. 45914 # If the start index equals the end index, then the range is empty. 45915 # Empty ranges are typically not meaningful and are usually rendered in the 45916 # UI as `#REF!`. 45917 "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded. 45918 "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded. 45919 "sheetId": 42, # The sheet this range is on. 45920 "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded. 45921 "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded. 45922 }, 45923 }, 45924 ], 45925 "data": [ # Data in the grid, if this is a grid sheet. 45926 # The number of GridData objects returned is dependent on the number of 45927 # ranges requested on this sheet. For example, if this is representing 45928 # `Sheet1`, and the spreadsheet was requested with ranges 45929 # `Sheet1!A1:C10` and `Sheet1!D15:E20`, then the first GridData will have a 45930 # startRow/startColumn of `0`, 45931 # while the second one will have `startRow 14` (zero-based row 15), 45932 # and `startColumn 3` (zero-based column D). 45933 { # Data in the grid, as well as metadata about the dimensions. 45934 "rowMetadata": [ # Metadata about the requested rows in the grid, starting with the row 45935 # in start_row. 45936 { # Properties about a dimension. 45937 "pixelSize": 42, # The height (if a row) or width (if a column) of the dimension in pixels. 45938 "hiddenByUser": True or False, # True if this dimension is explicitly hidden. 45939 "hiddenByFilter": True or False, # True if this dimension is being filtered. 45940 # This field is read-only. 45941 }, 45942 ], 45943 "startColumn": 42, # The first column this GridData refers to, zero-based. 45944 "rowData": [ # The data in the grid, one entry per row, 45945 # starting with the row in startRow. 45946 # The values in RowData will correspond to columns starting 45947 # at start_column. 45948 { # Data about each cell in a row. 45949 "values": [ # The values in the row, one per column. 45950 { # Data about a specific cell. 45951 "pivotTable": { # A pivot table. # A pivot table anchored at this cell. The size of pivot table itself 45952 # is computed dynamically based on its data, grouping, filters, values, 45953 # etc. Only the top-left cell of the pivot table contains the pivot table 45954 # definition. The other cells will contain the calculated values of the 45955 # results of the pivot in their effective_value fields. 45956 "valueLayout": "A String", # Whether values should be listed horizontally (as columns) 45957 # or vertically (as rows). 45958 "rows": [ # Each row grouping in the pivot table. 45959 { # A single grouping (either row or column) in a pivot table. 45960 "showTotals": True or False, # True if the pivot table should include the totals for this grouping. 45961 "valueMetadata": [ # Metadata about values in the grouping. 45962 { # Metadata about a value in a pivot grouping. 45963 "collapsed": True or False, # True if the data corresponding to the value is collapsed. 45964 "value": { # The kinds of value that a cell in a spreadsheet can have. # The calculated value the metadata corresponds to. 45965 # (Note that formulaValue is not valid, 45966 # because the values will be calculated.) 45967 "stringValue": "A String", # Represents a string value. 45968 # Leading single quotes are not included. For example, if the user typed 45969 # `'123` into the UI, this would be represented as a `stringValue` of 45970 # `"123"`. 45971 "boolValue": True or False, # Represents a boolean value. 45972 "errorValue": { # An error in a cell. # Represents an error. 45973 # This field is read-only. 45974 "message": "A String", # A message with more information about the error 45975 # (in the spreadsheet's locale). 45976 "type": "A String", # The type of error. 45977 }, 45978 "formulaValue": "A String", # Represents a formula. 45979 "numberValue": 3.14, # Represents a double value. 45980 # Note: Dates, Times and DateTimes are represented as doubles in 45981 # "serial number" format. 45982 }, 45983 }, 45984 ], 45985 "valueBucket": { # Information about which values in a pivot group should be used for sorting. # The bucket of the opposite pivot group to sort by. 45986 # If not specified, sorting is alphabetical by this group's values. 45987 "buckets": [ # Determines the bucket from which values are chosen to sort. 45988 # 45989 # For example, in a pivot table with one row group & two column groups, 45990 # the row group can list up to two values. The first value corresponds 45991 # to a value within the first column group, and the second value 45992 # corresponds to a value in the second column group. If no values 45993 # are listed, this would indicate that the row should be sorted according 45994 # to the "Grand Total" over the column groups. If a single value is listed, 45995 # this would correspond to using the "Total" of that bucket. 45996 { # The kinds of value that a cell in a spreadsheet can have. 45997 "stringValue": "A String", # Represents a string value. 45998 # Leading single quotes are not included. For example, if the user typed 45999 # `'123` into the UI, this would be represented as a `stringValue` of 46000 # `"123"`. 46001 "boolValue": True or False, # Represents a boolean value. 46002 "errorValue": { # An error in a cell. # Represents an error. 46003 # This field is read-only. 46004 "message": "A String", # A message with more information about the error 46005 # (in the spreadsheet's locale). 46006 "type": "A String", # The type of error. 46007 }, 46008 "formulaValue": "A String", # Represents a formula. 46009 "numberValue": 3.14, # Represents a double value. 46010 # Note: Dates, Times and DateTimes are represented as doubles in 46011 # "serial number" format. 46012 }, 46013 ], 46014 "valuesIndex": 42, # The offset in the PivotTable.values list which the values in this 46015 # grouping should be sorted by. 46016 }, 46017 "sortOrder": "A String", # The order the values in this group should be sorted. 46018 "sourceColumnOffset": 42, # The column offset of the source range that this grouping is based on. 46019 # 46020 # For example, if the source was `C10:E15`, a `sourceColumnOffset` of `0` 46021 # means this group refers to column `C`, whereas the offset `1` would refer 46022 # to column `D`. 46023 }, 46024 ], 46025 "source": { # A range on a sheet. # The range the pivot table is reading data from. 46026 # All indexes are zero-based. 46027 # Indexes are half open, e.g the start index is inclusive 46028 # and the end index is exclusive -- [start_index, end_index). 46029 # Missing indexes indicate the range is unbounded on that side. 46030 # 46031 # For example, if `"Sheet1"` is sheet ID 0, then: 46032 # 46033 # `Sheet1!A1:A1 == sheet_id: 0, 46034 # start_row_index: 0, end_row_index: 1, 46035 # start_column_index: 0, end_column_index: 1` 46036 # 46037 # `Sheet1!A3:B4 == sheet_id: 0, 46038 # start_row_index: 2, end_row_index: 4, 46039 # start_column_index: 0, end_column_index: 2` 46040 # 46041 # `Sheet1!A:B == sheet_id: 0, 46042 # start_column_index: 0, end_column_index: 2` 46043 # 46044 # `Sheet1!A5:B == sheet_id: 0, 46045 # start_row_index: 4, 46046 # start_column_index: 0, end_column_index: 2` 46047 # 46048 # `Sheet1 == sheet_id:0` 46049 # 46050 # The start index must always be less than or equal to the end index. 46051 # If the start index equals the end index, then the range is empty. 46052 # Empty ranges are typically not meaningful and are usually rendered in the 46053 # UI as `#REF!`. 46054 "endRowIndex": 42, # The end row (exclusive) of the range, or not set if unbounded. 46055 "endColumnIndex": 42, # The end column (exclusive) of the range, or not set if unbounded. 46056 "sheetId": 42, # The sheet this range is on. 46057 "startColumnIndex": 42, # The start column (inclusive) of the range, or not set if unbounded. 46058 "startRowIndex": 42, # The start row (inclusive) of the range, or not set if unbounded. 46059 }, 46060 "values": [ # A list of values to include in the pivot table. 46061 { # The definition of how a value in a pivot table should be calculated. 46062 "formula": "A String", # A custom formula to calculate the value. The formula must start 46063 # with an `=` character. 46064 "sourceColumnOffset": 42, # The column offset of the source range that this value reads from. 46065 # 46066 # For example, if the source was `C10:E15`, a `sourceColumnOffset` of `0` 46067 # means this value refers to column `C`, whereas the offset `1` would 46068 # refer to column `D`. 46069 "summarizeFunction": "A String", # A function to summarize the value. 46070 # If formula is set, the only supported values are 46071 # SUM and 46072 # CUSTOM. 46073 # If sourceColumnOffset is set, then `CUSTOM` 46074 # is not supported. 46075 "name": "A String", # A name to use for the value. This is only used if formula was set. 46076 # Otherwise, the column name is used. 46077 }, 46078 ], 46079 "criteria": { # An optional mapping of filters per source column offset. 46080 # 46081 # The filters will be applied before aggregating data into the pivot table. 46082 # The map's key is the column offset of the source range that you want to 46083 # filter, and the value is the criteria for that column. 46084 # 46085 # For example, if the source was `C10:E15`, a key of `0` will have the filter 46086 # for column `C`, whereas the key `1` is for column `D`. 46087 "a_key": { # Criteria for showing/hiding rows in a pivot table. 46088 "visibleValues": [ # Values that should be included. Values not listed here are excluded. 46089 "A String", 46090 ], 46091 }, 46092 }, 46093 "columns": [ # Each column grouping in the pivot table. 46094 { # A single grouping (either row or column) in a pivot table. 46095 "showTotals": True or False, # True if the pivot table should include the totals for this grouping. 46096 "valueMetadata": [ # Metadata about values in the grouping. 46097 { # Metadata about a value in a pivot grouping. 46098 "collapsed": True or False, # True if the data corresponding to the value is collapsed. 46099 "value": { # The kinds of value that a cell in a spreadsheet can have. # The calculated value the metadata corresponds to. 46100 # (Note that formulaValue is not valid, 46101 # because the values will be calculated.) 46102 "stringValue": "A String", # Represents a string value. 46103 # Leading single quotes are not included. For example, if the user typed 46104 # `'123` into the UI, this would be represented as a `stringValue` of 46105 # `"123"`. 46106 "boolValue": True or False, # Represents a boolean value. 46107 "errorValue": { # An error in a cell. # Represents an error. 46108 # This field is read-only. 46109 "message": "A String", # A message with more information about the error 46110 # (in the spreadsheet's locale). 46111 "type": "A String", # The type of error. 46112 }, 46113 "formulaValue": "A String", # Represents a formula. 46114 "numberValue": 3.14, # Represents a double value. 46115 # Note: Dates, Times and DateTimes are represented as doubles in 46116 # "serial number" format. 46117 }, 46118 }, 46119 ], 46120 "valueBucket": { # Information about which values in a pivot group should be used for sorting. # The bucket of the opposite pivot group to sort by. 46121 # If not specified, sorting is alphabetical by this group's values. 46122 "buckets": [ # Determines the bucket from which values are chosen to sort. 46123 # 46124 # For example, in a pivot table with one row group & two column groups, 46125 # the row group can list up to two values. The first value corresponds 46126 # to a value within the first column group, and the second value 46127 # corresponds to a value in the second column group. If no values 46128 # are listed, this would indicate that the row should be sorted according 46129 # to the "Grand Total" over the column groups. If a single value is listed, 46130 # this would correspond to using the "Total" of that bucket. 46131 { # The kinds of value that a cell in a spreadsheet can have. 46132 "stringValue": "A String", # Represents a string value. 46133 # Leading single quotes are not included. For example, if the user typed 46134 # `'123` into the UI, this would be represented as a `stringValue` of 46135 # `"123"`. 46136 "boolValue": True or False, # Represents a boolean value. 46137 "errorValue": { # An error in a cell. # Represents an error. 46138 # This field is read-only. 46139 "message": "A String", # A message with more information about the error 46140 # (in the spreadsheet's locale). 46141 "type": "A String", # The type of error. 46142 }, 46143 "formulaValue": "A String", # Represents a formula. 46144 "numberValue": 3.14, # Represents a double value. 46145 # Note: Dates, Times and DateTimes are represented as doubles in 46146 # "serial number" format. 46147 }, 46148 ], 46149 "valuesIndex": 42, # The offset in the PivotTable.values list which the values in this 46150 # grouping should be sorted by. 46151 }, 46152 "sortOrder": "A String", # The order the values in this group should be sorted. 46153 "sourceColumnOffset": 42, # The column offset of the source range that this grouping is based on. 46154 # 46155 # For example, if the source was `C10:E15`, a `sourceColumnOffset` of `0` 46156 # means this group refers to column `C`, whereas the offset `1` would refer 46157 # to column `D`. 46158 }, 46159 ], 46160 }, 46161 "hyperlink": "A String", # A hyperlink this cell points to, if any. 46162 # This field is read-only. (To set it, use a `=HYPERLINK` formula 46163 # in the userEnteredValue.formulaValue 46164 # field.) 46165 "effectiveValue": { # The kinds of value that a cell in a spreadsheet can have. # The effective value of the cell. For cells with formulas, this will be 46166 # the calculated value. For cells with literals, this will be 46167 # the same as the user_entered_value. 46168 # This field is read-only. 46169 "stringValue": "A String", # Represents a string value. 46170 # Leading single quotes are not included. For example, if the user typed 46171 # `'123` into the UI, this would be represented as a `stringValue` of 46172 # `"123"`. 46173 "boolValue": True or False, # Represents a boolean value. 46174 "errorValue": { # An error in a cell. # Represents an error. 46175 # This field is read-only. 46176 "message": "A String", # A message with more information about the error 46177 # (in the spreadsheet's locale). 46178 "type": "A String", # The type of error. 46179 }, 46180 "formulaValue": "A String", # Represents a formula. 46181 "numberValue": 3.14, # Represents a double value. 46182 # Note: Dates, Times and DateTimes are represented as doubles in 46183 # "serial number" format. 46184 }, 46185 "formattedValue": "A String", # The formatted value of the cell. 46186 # This is the value as it's shown to the user. 46187 # This field is read-only. 46188 "userEnteredValue": { # The kinds of value that a cell in a spreadsheet can have. # The value the user entered in the cell. e.g, `1234`, `'Hello'`, or `=NOW()` 46189 # Note: Dates, Times and DateTimes are represented as doubles in 46190 # serial number format. 46191 "stringValue": "A String", # Represents a string value. 46192 # Leading single quotes are not included. For example, if the user typed 46193 # `'123` into the UI, this would be represented as a `stringValue` of 46194 # `"123"`. 46195 "boolValue": True or False, # Represents a boolean value. 46196 "errorValue": { # An error in a cell. # Represents an error. 46197 # This field is read-only. 46198 "message": "A String", # A message with more information about the error 46199 # (in the spreadsheet's locale). 46200 "type": "A String", # The type of error. 46201 }, 46202 "formulaValue": "A String", # Represents a formula. 46203 "numberValue": 3.14, # Represents a double value. 46204 # Note: Dates, Times and DateTimes are represented as doubles in 46205 # "serial number" format. 46206 }, 46207 "note": "A String", # Any note on the cell. 46208 "effectiveFormat": { # The format of a cell. # The effective format being used by the cell. 46209 # This includes the results of applying any conditional formatting and, 46210 # if the cell contains a formula, the computed number format. 46211 # If the effective format is the default format, effective format will 46212 # not be written. 46213 # This field is read-only. 46214 "numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user. 46215 "pattern": "A String", # Pattern string used for formatting. If not set, a default pattern based on 46216 # the user's locale will be used if necessary for the given type. 46217 # See the [Date and Number Formats guide](/sheets/api/guides/formats) for more 46218 # information about the supported patterns. 46219 "type": "A String", # The type of the number format. 46220 # When writing, this field must be set. 46221 }, 46222 "textDirection": "A String", # The direction of the text in the cell. 46223 "padding": { # The amount of padding around the cell, in pixels. # The padding of the cell. 46224 # When updating padding, every field must be specified. 46225 "top": 42, # The top padding of the cell. 46226 "right": 42, # The right padding of the cell. 46227 "bottom": 42, # The bottom padding of the cell. 46228 "left": 42, # The left padding of the cell. 46229 }, 46230 "verticalAlignment": "A String", # The vertical alignment of the value in the cell. 46231 "backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell. 46232 # for simplicity of conversion to/from color representations in various 46233 # languages over compactness; for example, the fields of this representation 46234 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 46235 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 46236 # method in iOS; and, with just a little work, it can be easily formatted into 46237 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 46238 # 46239 # Example (Java): 46240 # 46241 # import com.google.type.Color; 46242 # 46243 # // ... 46244 # public static java.awt.Color fromProto(Color protocolor) { 46245 # float alpha = protocolor.hasAlpha() 46246 # ? protocolor.getAlpha().getValue() 46247 # : 1.0; 46248 # 46249 # return new java.awt.Color( 46250 # protocolor.getRed(), 46251 # protocolor.getGreen(), 46252 # protocolor.getBlue(), 46253 # alpha); 46254 # } 46255 # 46256 # public static Color toProto(java.awt.Color color) { 46257 # float red = (float) color.getRed(); 46258 # float green = (float) color.getGreen(); 46259 # float blue = (float) color.getBlue(); 46260 # float denominator = 255.0; 46261 # Color.Builder resultBuilder = 46262 # Color 46263 # .newBuilder() 46264 # .setRed(red / denominator) 46265 # .setGreen(green / denominator) 46266 # .setBlue(blue / denominator); 46267 # int alpha = color.getAlpha(); 46268 # if (alpha != 255) { 46269 # result.setAlpha( 46270 # FloatValue 46271 # .newBuilder() 46272 # .setValue(((float) alpha) / denominator) 46273 # .build()); 46274 # } 46275 # return resultBuilder.build(); 46276 # } 46277 # // ... 46278 # 46279 # Example (iOS / Obj-C): 46280 # 46281 # // ... 46282 # static UIColor* fromProto(Color* protocolor) { 46283 # float red = [protocolor red]; 46284 # float green = [protocolor green]; 46285 # float blue = [protocolor blue]; 46286 # FloatValue* alpha_wrapper = [protocolor alpha]; 46287 # float alpha = 1.0; 46288 # if (alpha_wrapper != nil) { 46289 # alpha = [alpha_wrapper value]; 46290 # } 46291 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 46292 # } 46293 # 46294 # static Color* toProto(UIColor* color) { 46295 # CGFloat red, green, blue, alpha; 46296 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 46297 # return nil; 46298 # } 46299 # Color* result = [Color alloc] init]; 46300 # [result setRed:red]; 46301 # [result setGreen:green]; 46302 # [result setBlue:blue]; 46303 # if (alpha <= 0.9999) { 46304 # [result setAlpha:floatWrapperWithValue(alpha)]; 46305 # } 46306 # [result autorelease]; 46307 # return result; 46308 # } 46309 # // ... 46310 # 46311 # Example (JavaScript): 46312 # 46313 # // ... 46314 # 46315 # var protoToCssColor = function(rgb_color) { 46316 # var redFrac = rgb_color.red || 0.0; 46317 # var greenFrac = rgb_color.green || 0.0; 46318 # var blueFrac = rgb_color.blue || 0.0; 46319 # var red = Math.floor(redFrac * 255); 46320 # var green = Math.floor(greenFrac * 255); 46321 # var blue = Math.floor(blueFrac * 255); 46322 # 46323 # if (!('alpha' in rgb_color)) { 46324 # return rgbToCssColor_(red, green, blue); 46325 # } 46326 # 46327 # var alphaFrac = rgb_color.alpha.value || 0.0; 46328 # var rgbParams = [red, green, blue].join(','); 46329 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 46330 # }; 46331 # 46332 # var rgbToCssColor_ = function(red, green, blue) { 46333 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 46334 # var hexString = rgbNumber.toString(16); 46335 # var missingZeros = 6 - hexString.length; 46336 # var resultBuilder = ['#']; 46337 # for (var i = 0; i < missingZeros; i++) { 46338 # resultBuilder.push('0'); 46339 # } 46340 # resultBuilder.push(hexString); 46341 # return resultBuilder.join(''); 46342 # }; 46343 # 46344 # // ... 46345 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 46346 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 46347 # the final pixel color is defined by the equation: 46348 # 46349 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 46350 # 46351 # This means that a value of 1.0 corresponds to a solid color, whereas 46352 # a value of 0.0 corresponds to a completely transparent color. This 46353 # uses a wrapper message rather than a simple float scalar so that it is 46354 # possible to distinguish between a default value and the value being unset. 46355 # If omitted, this color object is to be rendered as a solid color 46356 # (as if the alpha value had been explicitly given with a value of 1.0). 46357 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 46358 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 46359 }, 46360 "horizontalAlignment": "A String", # The horizontal alignment of the value in the cell. 46361 "textFormat": { # The format of a run of text in a cell. # The format of the text in the cell (unless overridden by a format run). 46362 # Absent values indicate that the field isn't specified. 46363 "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text. 46364 # for simplicity of conversion to/from color representations in various 46365 # languages over compactness; for example, the fields of this representation 46366 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 46367 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 46368 # method in iOS; and, with just a little work, it can be easily formatted into 46369 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 46370 # 46371 # Example (Java): 46372 # 46373 # import com.google.type.Color; 46374 # 46375 # // ... 46376 # public static java.awt.Color fromProto(Color protocolor) { 46377 # float alpha = protocolor.hasAlpha() 46378 # ? protocolor.getAlpha().getValue() 46379 # : 1.0; 46380 # 46381 # return new java.awt.Color( 46382 # protocolor.getRed(), 46383 # protocolor.getGreen(), 46384 # protocolor.getBlue(), 46385 # alpha); 46386 # } 46387 # 46388 # public static Color toProto(java.awt.Color color) { 46389 # float red = (float) color.getRed(); 46390 # float green = (float) color.getGreen(); 46391 # float blue = (float) color.getBlue(); 46392 # float denominator = 255.0; 46393 # Color.Builder resultBuilder = 46394 # Color 46395 # .newBuilder() 46396 # .setRed(red / denominator) 46397 # .setGreen(green / denominator) 46398 # .setBlue(blue / denominator); 46399 # int alpha = color.getAlpha(); 46400 # if (alpha != 255) { 46401 # result.setAlpha( 46402 # FloatValue 46403 # .newBuilder() 46404 # .setValue(((float) alpha) / denominator) 46405 # .build()); 46406 # } 46407 # return resultBuilder.build(); 46408 # } 46409 # // ... 46410 # 46411 # Example (iOS / Obj-C): 46412 # 46413 # // ... 46414 # static UIColor* fromProto(Color* protocolor) { 46415 # float red = [protocolor red]; 46416 # float green = [protocolor green]; 46417 # float blue = [protocolor blue]; 46418 # FloatValue* alpha_wrapper = [protocolor alpha]; 46419 # float alpha = 1.0; 46420 # if (alpha_wrapper != nil) { 46421 # alpha = [alpha_wrapper value]; 46422 # } 46423 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 46424 # } 46425 # 46426 # static Color* toProto(UIColor* color) { 46427 # CGFloat red, green, blue, alpha; 46428 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 46429 # return nil; 46430 # } 46431 # Color* result = [Color alloc] init]; 46432 # [result setRed:red]; 46433 # [result setGreen:green]; 46434 # [result setBlue:blue]; 46435 # if (alpha <= 0.9999) { 46436 # [result setAlpha:floatWrapperWithValue(alpha)]; 46437 # } 46438 # [result autorelease]; 46439 # return result; 46440 # } 46441 # // ... 46442 # 46443 # Example (JavaScript): 46444 # 46445 # // ... 46446 # 46447 # var protoToCssColor = function(rgb_color) { 46448 # var redFrac = rgb_color.red || 0.0; 46449 # var greenFrac = rgb_color.green || 0.0; 46450 # var blueFrac = rgb_color.blue || 0.0; 46451 # var red = Math.floor(redFrac * 255); 46452 # var green = Math.floor(greenFrac * 255); 46453 # var blue = Math.floor(blueFrac * 255); 46454 # 46455 # if (!('alpha' in rgb_color)) { 46456 # return rgbToCssColor_(red, green, blue); 46457 # } 46458 # 46459 # var alphaFrac = rgb_color.alpha.value || 0.0; 46460 # var rgbParams = [red, green, blue].join(','); 46461 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 46462 # }; 46463 # 46464 # var rgbToCssColor_ = function(red, green, blue) { 46465 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 46466 # var hexString = rgbNumber.toString(16); 46467 # var missingZeros = 6 - hexString.length; 46468 # var resultBuilder = ['#']; 46469 # for (var i = 0; i < missingZeros; i++) { 46470 # resultBuilder.push('0'); 46471 # } 46472 # resultBuilder.push(hexString); 46473 # return resultBuilder.join(''); 46474 # }; 46475 # 46476 # // ... 46477 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 46478 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 46479 # the final pixel color is defined by the equation: 46480 # 46481 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 46482 # 46483 # This means that a value of 1.0 corresponds to a solid color, whereas 46484 # a value of 0.0 corresponds to a completely transparent color. This 46485 # uses a wrapper message rather than a simple float scalar so that it is 46486 # possible to distinguish between a default value and the value being unset. 46487 # If omitted, this color object is to be rendered as a solid color 46488 # (as if the alpha value had been explicitly given with a value of 1.0). 46489 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 46490 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 46491 }, 46492 "bold": True or False, # True if the text is bold. 46493 "strikethrough": True or False, # True if the text has a strikethrough. 46494 "fontFamily": "A String", # The font family. 46495 "fontSize": 42, # The size of the font. 46496 "italic": True or False, # True if the text is italicized. 46497 "underline": True or False, # True if the text is underlined. 46498 }, 46499 "textRotation": { # The rotation applied to text in a cell. # The rotation applied to text in a cell 46500 "angle": 42, # The angle between the standard orientation and the desired orientation. 46501 # Measured in degrees. Valid values are between -90 and 90. Positive 46502 # angles are angled upwards, negative are angled downwards. 46503 # 46504 # Note: For LTR text direction positive angles are in the counterclockwise 46505 # direction, whereas for RTL they are in the clockwise direction 46506 "vertical": True or False, # If true, text reads top to bottom, but the orientation of individual 46507 # characters is unchanged. 46508 # For example: 46509 # 46510 # | V | 46511 # | e | 46512 # | r | 46513 # | t | 46514 # | i | 46515 # | c | 46516 # | a | 46517 # | l | 46518 }, 46519 "hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell. 46520 "borders": { # The borders of the cell. # The borders of the cell. 46521 "top": { # A border along a cell. # The top border of the cell. 46522 "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border. 46523 # for simplicity of conversion to/from color representations in various 46524 # languages over compactness; for example, the fields of this representation 46525 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 46526 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 46527 # method in iOS; and, with just a little work, it can be easily formatted into 46528 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 46529 # 46530 # Example (Java): 46531 # 46532 # import com.google.type.Color; 46533 # 46534 # // ... 46535 # public static java.awt.Color fromProto(Color protocolor) { 46536 # float alpha = protocolor.hasAlpha() 46537 # ? protocolor.getAlpha().getValue() 46538 # : 1.0; 46539 # 46540 # return new java.awt.Color( 46541 # protocolor.getRed(), 46542 # protocolor.getGreen(), 46543 # protocolor.getBlue(), 46544 # alpha); 46545 # } 46546 # 46547 # public static Color toProto(java.awt.Color color) { 46548 # float red = (float) color.getRed(); 46549 # float green = (float) color.getGreen(); 46550 # float blue = (float) color.getBlue(); 46551 # float denominator = 255.0; 46552 # Color.Builder resultBuilder = 46553 # Color 46554 # .newBuilder() 46555 # .setRed(red / denominator) 46556 # .setGreen(green / denominator) 46557 # .setBlue(blue / denominator); 46558 # int alpha = color.getAlpha(); 46559 # if (alpha != 255) { 46560 # result.setAlpha( 46561 # FloatValue 46562 # .newBuilder() 46563 # .setValue(((float) alpha) / denominator) 46564 # .build()); 46565 # } 46566 # return resultBuilder.build(); 46567 # } 46568 # // ... 46569 # 46570 # Example (iOS / Obj-C): 46571 # 46572 # // ... 46573 # static UIColor* fromProto(Color* protocolor) { 46574 # float red = [protocolor red]; 46575 # float green = [protocolor green]; 46576 # float blue = [protocolor blue]; 46577 # FloatValue* alpha_wrapper = [protocolor alpha]; 46578 # float alpha = 1.0; 46579 # if (alpha_wrapper != nil) { 46580 # alpha = [alpha_wrapper value]; 46581 # } 46582 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 46583 # } 46584 # 46585 # static Color* toProto(UIColor* color) { 46586 # CGFloat red, green, blue, alpha; 46587 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 46588 # return nil; 46589 # } 46590 # Color* result = [Color alloc] init]; 46591 # [result setRed:red]; 46592 # [result setGreen:green]; 46593 # [result setBlue:blue]; 46594 # if (alpha <= 0.9999) { 46595 # [result setAlpha:floatWrapperWithValue(alpha)]; 46596 # } 46597 # [result autorelease]; 46598 # return result; 46599 # } 46600 # // ... 46601 # 46602 # Example (JavaScript): 46603 # 46604 # // ... 46605 # 46606 # var protoToCssColor = function(rgb_color) { 46607 # var redFrac = rgb_color.red || 0.0; 46608 # var greenFrac = rgb_color.green || 0.0; 46609 # var blueFrac = rgb_color.blue || 0.0; 46610 # var red = Math.floor(redFrac * 255); 46611 # var green = Math.floor(greenFrac * 255); 46612 # var blue = Math.floor(blueFrac * 255); 46613 # 46614 # if (!('alpha' in rgb_color)) { 46615 # return rgbToCssColor_(red, green, blue); 46616 # } 46617 # 46618 # var alphaFrac = rgb_color.alpha.value || 0.0; 46619 # var rgbParams = [red, green, blue].join(','); 46620 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 46621 # }; 46622 # 46623 # var rgbToCssColor_ = function(red, green, blue) { 46624 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 46625 # var hexString = rgbNumber.toString(16); 46626 # var missingZeros = 6 - hexString.length; 46627 # var resultBuilder = ['#']; 46628 # for (var i = 0; i < missingZeros; i++) { 46629 # resultBuilder.push('0'); 46630 # } 46631 # resultBuilder.push(hexString); 46632 # return resultBuilder.join(''); 46633 # }; 46634 # 46635 # // ... 46636 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 46637 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 46638 # the final pixel color is defined by the equation: 46639 # 46640 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 46641 # 46642 # This means that a value of 1.0 corresponds to a solid color, whereas 46643 # a value of 0.0 corresponds to a completely transparent color. This 46644 # uses a wrapper message rather than a simple float scalar so that it is 46645 # possible to distinguish between a default value and the value being unset. 46646 # If omitted, this color object is to be rendered as a solid color 46647 # (as if the alpha value had been explicitly given with a value of 1.0). 46648 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 46649 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 46650 }, 46651 "width": 42, # The width of the border, in pixels. 46652 # Deprecated; the width is determined by the "style" field. 46653 "style": "A String", # The style of the border. 46654 }, 46655 "right": { # A border along a cell. # The right border of the cell. 46656 "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border. 46657 # for simplicity of conversion to/from color representations in various 46658 # languages over compactness; for example, the fields of this representation 46659 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 46660 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 46661 # method in iOS; and, with just a little work, it can be easily formatted into 46662 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 46663 # 46664 # Example (Java): 46665 # 46666 # import com.google.type.Color; 46667 # 46668 # // ... 46669 # public static java.awt.Color fromProto(Color protocolor) { 46670 # float alpha = protocolor.hasAlpha() 46671 # ? protocolor.getAlpha().getValue() 46672 # : 1.0; 46673 # 46674 # return new java.awt.Color( 46675 # protocolor.getRed(), 46676 # protocolor.getGreen(), 46677 # protocolor.getBlue(), 46678 # alpha); 46679 # } 46680 # 46681 # public static Color toProto(java.awt.Color color) { 46682 # float red = (float) color.getRed(); 46683 # float green = (float) color.getGreen(); 46684 # float blue = (float) color.getBlue(); 46685 # float denominator = 255.0; 46686 # Color.Builder resultBuilder = 46687 # Color 46688 # .newBuilder() 46689 # .setRed(red / denominator) 46690 # .setGreen(green / denominator) 46691 # .setBlue(blue / denominator); 46692 # int alpha = color.getAlpha(); 46693 # if (alpha != 255) { 46694 # result.setAlpha( 46695 # FloatValue 46696 # .newBuilder() 46697 # .setValue(((float) alpha) / denominator) 46698 # .build()); 46699 # } 46700 # return resultBuilder.build(); 46701 # } 46702 # // ... 46703 # 46704 # Example (iOS / Obj-C): 46705 # 46706 # // ... 46707 # static UIColor* fromProto(Color* protocolor) { 46708 # float red = [protocolor red]; 46709 # float green = [protocolor green]; 46710 # float blue = [protocolor blue]; 46711 # FloatValue* alpha_wrapper = [protocolor alpha]; 46712 # float alpha = 1.0; 46713 # if (alpha_wrapper != nil) { 46714 # alpha = [alpha_wrapper value]; 46715 # } 46716 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 46717 # } 46718 # 46719 # static Color* toProto(UIColor* color) { 46720 # CGFloat red, green, blue, alpha; 46721 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 46722 # return nil; 46723 # } 46724 # Color* result = [Color alloc] init]; 46725 # [result setRed:red]; 46726 # [result setGreen:green]; 46727 # [result setBlue:blue]; 46728 # if (alpha <= 0.9999) { 46729 # [result setAlpha:floatWrapperWithValue(alpha)]; 46730 # } 46731 # [result autorelease]; 46732 # return result; 46733 # } 46734 # // ... 46735 # 46736 # Example (JavaScript): 46737 # 46738 # // ... 46739 # 46740 # var protoToCssColor = function(rgb_color) { 46741 # var redFrac = rgb_color.red || 0.0; 46742 # var greenFrac = rgb_color.green || 0.0; 46743 # var blueFrac = rgb_color.blue || 0.0; 46744 # var red = Math.floor(redFrac * 255); 46745 # var green = Math.floor(greenFrac * 255); 46746 # var blue = Math.floor(blueFrac * 255); 46747 # 46748 # if (!('alpha' in rgb_color)) { 46749 # return rgbToCssColor_(red, green, blue); 46750 # } 46751 # 46752 # var alphaFrac = rgb_color.alpha.value || 0.0; 46753 # var rgbParams = [red, green, blue].join(','); 46754 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 46755 # }; 46756 # 46757 # var rgbToCssColor_ = function(red, green, blue) { 46758 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 46759 # var hexString = rgbNumber.toString(16); 46760 # var missingZeros = 6 - hexString.length; 46761 # var resultBuilder = ['#']; 46762 # for (var i = 0; i < missingZeros; i++) { 46763 # resultBuilder.push('0'); 46764 # } 46765 # resultBuilder.push(hexString); 46766 # return resultBuilder.join(''); 46767 # }; 46768 # 46769 # // ... 46770 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 46771 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 46772 # the final pixel color is defined by the equation: 46773 # 46774 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 46775 # 46776 # This means that a value of 1.0 corresponds to a solid color, whereas 46777 # a value of 0.0 corresponds to a completely transparent color. This 46778 # uses a wrapper message rather than a simple float scalar so that it is 46779 # possible to distinguish between a default value and the value being unset. 46780 # If omitted, this color object is to be rendered as a solid color 46781 # (as if the alpha value had been explicitly given with a value of 1.0). 46782 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 46783 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 46784 }, 46785 "width": 42, # The width of the border, in pixels. 46786 # Deprecated; the width is determined by the "style" field. 46787 "style": "A String", # The style of the border. 46788 }, 46789 "bottom": { # A border along a cell. # The bottom border of the cell. 46790 "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border. 46791 # for simplicity of conversion to/from color representations in various 46792 # languages over compactness; for example, the fields of this representation 46793 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 46794 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 46795 # method in iOS; and, with just a little work, it can be easily formatted into 46796 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 46797 # 46798 # Example (Java): 46799 # 46800 # import com.google.type.Color; 46801 # 46802 # // ... 46803 # public static java.awt.Color fromProto(Color protocolor) { 46804 # float alpha = protocolor.hasAlpha() 46805 # ? protocolor.getAlpha().getValue() 46806 # : 1.0; 46807 # 46808 # return new java.awt.Color( 46809 # protocolor.getRed(), 46810 # protocolor.getGreen(), 46811 # protocolor.getBlue(), 46812 # alpha); 46813 # } 46814 # 46815 # public static Color toProto(java.awt.Color color) { 46816 # float red = (float) color.getRed(); 46817 # float green = (float) color.getGreen(); 46818 # float blue = (float) color.getBlue(); 46819 # float denominator = 255.0; 46820 # Color.Builder resultBuilder = 46821 # Color 46822 # .newBuilder() 46823 # .setRed(red / denominator) 46824 # .setGreen(green / denominator) 46825 # .setBlue(blue / denominator); 46826 # int alpha = color.getAlpha(); 46827 # if (alpha != 255) { 46828 # result.setAlpha( 46829 # FloatValue 46830 # .newBuilder() 46831 # .setValue(((float) alpha) / denominator) 46832 # .build()); 46833 # } 46834 # return resultBuilder.build(); 46835 # } 46836 # // ... 46837 # 46838 # Example (iOS / Obj-C): 46839 # 46840 # // ... 46841 # static UIColor* fromProto(Color* protocolor) { 46842 # float red = [protocolor red]; 46843 # float green = [protocolor green]; 46844 # float blue = [protocolor blue]; 46845 # FloatValue* alpha_wrapper = [protocolor alpha]; 46846 # float alpha = 1.0; 46847 # if (alpha_wrapper != nil) { 46848 # alpha = [alpha_wrapper value]; 46849 # } 46850 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 46851 # } 46852 # 46853 # static Color* toProto(UIColor* color) { 46854 # CGFloat red, green, blue, alpha; 46855 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 46856 # return nil; 46857 # } 46858 # Color* result = [Color alloc] init]; 46859 # [result setRed:red]; 46860 # [result setGreen:green]; 46861 # [result setBlue:blue]; 46862 # if (alpha <= 0.9999) { 46863 # [result setAlpha:floatWrapperWithValue(alpha)]; 46864 # } 46865 # [result autorelease]; 46866 # return result; 46867 # } 46868 # // ... 46869 # 46870 # Example (JavaScript): 46871 # 46872 # // ... 46873 # 46874 # var protoToCssColor = function(rgb_color) { 46875 # var redFrac = rgb_color.red || 0.0; 46876 # var greenFrac = rgb_color.green || 0.0; 46877 # var blueFrac = rgb_color.blue || 0.0; 46878 # var red = Math.floor(redFrac * 255); 46879 # var green = Math.floor(greenFrac * 255); 46880 # var blue = Math.floor(blueFrac * 255); 46881 # 46882 # if (!('alpha' in rgb_color)) { 46883 # return rgbToCssColor_(red, green, blue); 46884 # } 46885 # 46886 # var alphaFrac = rgb_color.alpha.value || 0.0; 46887 # var rgbParams = [red, green, blue].join(','); 46888 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 46889 # }; 46890 # 46891 # var rgbToCssColor_ = function(red, green, blue) { 46892 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 46893 # var hexString = rgbNumber.toString(16); 46894 # var missingZeros = 6 - hexString.length; 46895 # var resultBuilder = ['#']; 46896 # for (var i = 0; i < missingZeros; i++) { 46897 # resultBuilder.push('0'); 46898 # } 46899 # resultBuilder.push(hexString); 46900 # return resultBuilder.join(''); 46901 # }; 46902 # 46903 # // ... 46904 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 46905 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 46906 # the final pixel color is defined by the equation: 46907 # 46908 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 46909 # 46910 # This means that a value of 1.0 corresponds to a solid color, whereas 46911 # a value of 0.0 corresponds to a completely transparent color. This 46912 # uses a wrapper message rather than a simple float scalar so that it is 46913 # possible to distinguish between a default value and the value being unset. 46914 # If omitted, this color object is to be rendered as a solid color 46915 # (as if the alpha value had been explicitly given with a value of 1.0). 46916 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 46917 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 46918 }, 46919 "width": 42, # The width of the border, in pixels. 46920 # Deprecated; the width is determined by the "style" field. 46921 "style": "A String", # The style of the border. 46922 }, 46923 "left": { # A border along a cell. # The left border of the cell. 46924 "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border. 46925 # for simplicity of conversion to/from color representations in various 46926 # languages over compactness; for example, the fields of this representation 46927 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 46928 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 46929 # method in iOS; and, with just a little work, it can be easily formatted into 46930 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 46931 # 46932 # Example (Java): 46933 # 46934 # import com.google.type.Color; 46935 # 46936 # // ... 46937 # public static java.awt.Color fromProto(Color protocolor) { 46938 # float alpha = protocolor.hasAlpha() 46939 # ? protocolor.getAlpha().getValue() 46940 # : 1.0; 46941 # 46942 # return new java.awt.Color( 46943 # protocolor.getRed(), 46944 # protocolor.getGreen(), 46945 # protocolor.getBlue(), 46946 # alpha); 46947 # } 46948 # 46949 # public static Color toProto(java.awt.Color color) { 46950 # float red = (float) color.getRed(); 46951 # float green = (float) color.getGreen(); 46952 # float blue = (float) color.getBlue(); 46953 # float denominator = 255.0; 46954 # Color.Builder resultBuilder = 46955 # Color 46956 # .newBuilder() 46957 # .setRed(red / denominator) 46958 # .setGreen(green / denominator) 46959 # .setBlue(blue / denominator); 46960 # int alpha = color.getAlpha(); 46961 # if (alpha != 255) { 46962 # result.setAlpha( 46963 # FloatValue 46964 # .newBuilder() 46965 # .setValue(((float) alpha) / denominator) 46966 # .build()); 46967 # } 46968 # return resultBuilder.build(); 46969 # } 46970 # // ... 46971 # 46972 # Example (iOS / Obj-C): 46973 # 46974 # // ... 46975 # static UIColor* fromProto(Color* protocolor) { 46976 # float red = [protocolor red]; 46977 # float green = [protocolor green]; 46978 # float blue = [protocolor blue]; 46979 # FloatValue* alpha_wrapper = [protocolor alpha]; 46980 # float alpha = 1.0; 46981 # if (alpha_wrapper != nil) { 46982 # alpha = [alpha_wrapper value]; 46983 # } 46984 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 46985 # } 46986 # 46987 # static Color* toProto(UIColor* color) { 46988 # CGFloat red, green, blue, alpha; 46989 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 46990 # return nil; 46991 # } 46992 # Color* result = [Color alloc] init]; 46993 # [result setRed:red]; 46994 # [result setGreen:green]; 46995 # [result setBlue:blue]; 46996 # if (alpha <= 0.9999) { 46997 # [result setAlpha:floatWrapperWithValue(alpha)]; 46998 # } 46999 # [result autorelease]; 47000 # return result; 47001 # } 47002 # // ... 47003 # 47004 # Example (JavaScript): 47005 # 47006 # // ... 47007 # 47008 # var protoToCssColor = function(rgb_color) { 47009 # var redFrac = rgb_color.red || 0.0; 47010 # var greenFrac = rgb_color.green || 0.0; 47011 # var blueFrac = rgb_color.blue || 0.0; 47012 # var red = Math.floor(redFrac * 255); 47013 # var green = Math.floor(greenFrac * 255); 47014 # var blue = Math.floor(blueFrac * 255); 47015 # 47016 # if (!('alpha' in rgb_color)) { 47017 # return rgbToCssColor_(red, green, blue); 47018 # } 47019 # 47020 # var alphaFrac = rgb_color.alpha.value || 0.0; 47021 # var rgbParams = [red, green, blue].join(','); 47022 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 47023 # }; 47024 # 47025 # var rgbToCssColor_ = function(red, green, blue) { 47026 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 47027 # var hexString = rgbNumber.toString(16); 47028 # var missingZeros = 6 - hexString.length; 47029 # var resultBuilder = ['#']; 47030 # for (var i = 0; i < missingZeros; i++) { 47031 # resultBuilder.push('0'); 47032 # } 47033 # resultBuilder.push(hexString); 47034 # return resultBuilder.join(''); 47035 # }; 47036 # 47037 # // ... 47038 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 47039 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 47040 # the final pixel color is defined by the equation: 47041 # 47042 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 47043 # 47044 # This means that a value of 1.0 corresponds to a solid color, whereas 47045 # a value of 0.0 corresponds to a completely transparent color. This 47046 # uses a wrapper message rather than a simple float scalar so that it is 47047 # possible to distinguish between a default value and the value being unset. 47048 # If omitted, this color object is to be rendered as a solid color 47049 # (as if the alpha value had been explicitly given with a value of 1.0). 47050 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 47051 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 47052 }, 47053 "width": 42, # The width of the border, in pixels. 47054 # Deprecated; the width is determined by the "style" field. 47055 "style": "A String", # The style of the border. 47056 }, 47057 }, 47058 "wrapStrategy": "A String", # The wrap strategy for the value in the cell. 47059 }, 47060 "userEnteredFormat": { # The format of a cell. # The format the user entered for the cell. 47061 # 47062 # When writing, the new format will be merged with the existing format. 47063 "numberFormat": { # The number format of a cell. # A format describing how number values should be represented to the user. 47064 "pattern": "A String", # Pattern string used for formatting. If not set, a default pattern based on 47065 # the user's locale will be used if necessary for the given type. 47066 # See the [Date and Number Formats guide](/sheets/api/guides/formats) for more 47067 # information about the supported patterns. 47068 "type": "A String", # The type of the number format. 47069 # When writing, this field must be set. 47070 }, 47071 "textDirection": "A String", # The direction of the text in the cell. 47072 "padding": { # The amount of padding around the cell, in pixels. # The padding of the cell. 47073 # When updating padding, every field must be specified. 47074 "top": 42, # The top padding of the cell. 47075 "right": 42, # The right padding of the cell. 47076 "bottom": 42, # The bottom padding of the cell. 47077 "left": 42, # The left padding of the cell. 47078 }, 47079 "verticalAlignment": "A String", # The vertical alignment of the value in the cell. 47080 "backgroundColor": { # Represents a color in the RGBA color space. This representation is designed # The background color of the cell. 47081 # for simplicity of conversion to/from color representations in various 47082 # languages over compactness; for example, the fields of this representation 47083 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 47084 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 47085 # method in iOS; and, with just a little work, it can be easily formatted into 47086 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 47087 # 47088 # Example (Java): 47089 # 47090 # import com.google.type.Color; 47091 # 47092 # // ... 47093 # public static java.awt.Color fromProto(Color protocolor) { 47094 # float alpha = protocolor.hasAlpha() 47095 # ? protocolor.getAlpha().getValue() 47096 # : 1.0; 47097 # 47098 # return new java.awt.Color( 47099 # protocolor.getRed(), 47100 # protocolor.getGreen(), 47101 # protocolor.getBlue(), 47102 # alpha); 47103 # } 47104 # 47105 # public static Color toProto(java.awt.Color color) { 47106 # float red = (float) color.getRed(); 47107 # float green = (float) color.getGreen(); 47108 # float blue = (float) color.getBlue(); 47109 # float denominator = 255.0; 47110 # Color.Builder resultBuilder = 47111 # Color 47112 # .newBuilder() 47113 # .setRed(red / denominator) 47114 # .setGreen(green / denominator) 47115 # .setBlue(blue / denominator); 47116 # int alpha = color.getAlpha(); 47117 # if (alpha != 255) { 47118 # result.setAlpha( 47119 # FloatValue 47120 # .newBuilder() 47121 # .setValue(((float) alpha) / denominator) 47122 # .build()); 47123 # } 47124 # return resultBuilder.build(); 47125 # } 47126 # // ... 47127 # 47128 # Example (iOS / Obj-C): 47129 # 47130 # // ... 47131 # static UIColor* fromProto(Color* protocolor) { 47132 # float red = [protocolor red]; 47133 # float green = [protocolor green]; 47134 # float blue = [protocolor blue]; 47135 # FloatValue* alpha_wrapper = [protocolor alpha]; 47136 # float alpha = 1.0; 47137 # if (alpha_wrapper != nil) { 47138 # alpha = [alpha_wrapper value]; 47139 # } 47140 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 47141 # } 47142 # 47143 # static Color* toProto(UIColor* color) { 47144 # CGFloat red, green, blue, alpha; 47145 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 47146 # return nil; 47147 # } 47148 # Color* result = [Color alloc] init]; 47149 # [result setRed:red]; 47150 # [result setGreen:green]; 47151 # [result setBlue:blue]; 47152 # if (alpha <= 0.9999) { 47153 # [result setAlpha:floatWrapperWithValue(alpha)]; 47154 # } 47155 # [result autorelease]; 47156 # return result; 47157 # } 47158 # // ... 47159 # 47160 # Example (JavaScript): 47161 # 47162 # // ... 47163 # 47164 # var protoToCssColor = function(rgb_color) { 47165 # var redFrac = rgb_color.red || 0.0; 47166 # var greenFrac = rgb_color.green || 0.0; 47167 # var blueFrac = rgb_color.blue || 0.0; 47168 # var red = Math.floor(redFrac * 255); 47169 # var green = Math.floor(greenFrac * 255); 47170 # var blue = Math.floor(blueFrac * 255); 47171 # 47172 # if (!('alpha' in rgb_color)) { 47173 # return rgbToCssColor_(red, green, blue); 47174 # } 47175 # 47176 # var alphaFrac = rgb_color.alpha.value || 0.0; 47177 # var rgbParams = [red, green, blue].join(','); 47178 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 47179 # }; 47180 # 47181 # var rgbToCssColor_ = function(red, green, blue) { 47182 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 47183 # var hexString = rgbNumber.toString(16); 47184 # var missingZeros = 6 - hexString.length; 47185 # var resultBuilder = ['#']; 47186 # for (var i = 0; i < missingZeros; i++) { 47187 # resultBuilder.push('0'); 47188 # } 47189 # resultBuilder.push(hexString); 47190 # return resultBuilder.join(''); 47191 # }; 47192 # 47193 # // ... 47194 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 47195 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 47196 # the final pixel color is defined by the equation: 47197 # 47198 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 47199 # 47200 # This means that a value of 1.0 corresponds to a solid color, whereas 47201 # a value of 0.0 corresponds to a completely transparent color. This 47202 # uses a wrapper message rather than a simple float scalar so that it is 47203 # possible to distinguish between a default value and the value being unset. 47204 # If omitted, this color object is to be rendered as a solid color 47205 # (as if the alpha value had been explicitly given with a value of 1.0). 47206 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 47207 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 47208 }, 47209 "horizontalAlignment": "A String", # The horizontal alignment of the value in the cell. 47210 "textFormat": { # The format of a run of text in a cell. # The format of the text in the cell (unless overridden by a format run). 47211 # Absent values indicate that the field isn't specified. 47212 "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text. 47213 # for simplicity of conversion to/from color representations in various 47214 # languages over compactness; for example, the fields of this representation 47215 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 47216 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 47217 # method in iOS; and, with just a little work, it can be easily formatted into 47218 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 47219 # 47220 # Example (Java): 47221 # 47222 # import com.google.type.Color; 47223 # 47224 # // ... 47225 # public static java.awt.Color fromProto(Color protocolor) { 47226 # float alpha = protocolor.hasAlpha() 47227 # ? protocolor.getAlpha().getValue() 47228 # : 1.0; 47229 # 47230 # return new java.awt.Color( 47231 # protocolor.getRed(), 47232 # protocolor.getGreen(), 47233 # protocolor.getBlue(), 47234 # alpha); 47235 # } 47236 # 47237 # public static Color toProto(java.awt.Color color) { 47238 # float red = (float) color.getRed(); 47239 # float green = (float) color.getGreen(); 47240 # float blue = (float) color.getBlue(); 47241 # float denominator = 255.0; 47242 # Color.Builder resultBuilder = 47243 # Color 47244 # .newBuilder() 47245 # .setRed(red / denominator) 47246 # .setGreen(green / denominator) 47247 # .setBlue(blue / denominator); 47248 # int alpha = color.getAlpha(); 47249 # if (alpha != 255) { 47250 # result.setAlpha( 47251 # FloatValue 47252 # .newBuilder() 47253 # .setValue(((float) alpha) / denominator) 47254 # .build()); 47255 # } 47256 # return resultBuilder.build(); 47257 # } 47258 # // ... 47259 # 47260 # Example (iOS / Obj-C): 47261 # 47262 # // ... 47263 # static UIColor* fromProto(Color* protocolor) { 47264 # float red = [protocolor red]; 47265 # float green = [protocolor green]; 47266 # float blue = [protocolor blue]; 47267 # FloatValue* alpha_wrapper = [protocolor alpha]; 47268 # float alpha = 1.0; 47269 # if (alpha_wrapper != nil) { 47270 # alpha = [alpha_wrapper value]; 47271 # } 47272 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 47273 # } 47274 # 47275 # static Color* toProto(UIColor* color) { 47276 # CGFloat red, green, blue, alpha; 47277 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 47278 # return nil; 47279 # } 47280 # Color* result = [Color alloc] init]; 47281 # [result setRed:red]; 47282 # [result setGreen:green]; 47283 # [result setBlue:blue]; 47284 # if (alpha <= 0.9999) { 47285 # [result setAlpha:floatWrapperWithValue(alpha)]; 47286 # } 47287 # [result autorelease]; 47288 # return result; 47289 # } 47290 # // ... 47291 # 47292 # Example (JavaScript): 47293 # 47294 # // ... 47295 # 47296 # var protoToCssColor = function(rgb_color) { 47297 # var redFrac = rgb_color.red || 0.0; 47298 # var greenFrac = rgb_color.green || 0.0; 47299 # var blueFrac = rgb_color.blue || 0.0; 47300 # var red = Math.floor(redFrac * 255); 47301 # var green = Math.floor(greenFrac * 255); 47302 # var blue = Math.floor(blueFrac * 255); 47303 # 47304 # if (!('alpha' in rgb_color)) { 47305 # return rgbToCssColor_(red, green, blue); 47306 # } 47307 # 47308 # var alphaFrac = rgb_color.alpha.value || 0.0; 47309 # var rgbParams = [red, green, blue].join(','); 47310 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 47311 # }; 47312 # 47313 # var rgbToCssColor_ = function(red, green, blue) { 47314 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 47315 # var hexString = rgbNumber.toString(16); 47316 # var missingZeros = 6 - hexString.length; 47317 # var resultBuilder = ['#']; 47318 # for (var i = 0; i < missingZeros; i++) { 47319 # resultBuilder.push('0'); 47320 # } 47321 # resultBuilder.push(hexString); 47322 # return resultBuilder.join(''); 47323 # }; 47324 # 47325 # // ... 47326 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 47327 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 47328 # the final pixel color is defined by the equation: 47329 # 47330 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 47331 # 47332 # This means that a value of 1.0 corresponds to a solid color, whereas 47333 # a value of 0.0 corresponds to a completely transparent color. This 47334 # uses a wrapper message rather than a simple float scalar so that it is 47335 # possible to distinguish between a default value and the value being unset. 47336 # If omitted, this color object is to be rendered as a solid color 47337 # (as if the alpha value had been explicitly given with a value of 1.0). 47338 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 47339 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 47340 }, 47341 "bold": True or False, # True if the text is bold. 47342 "strikethrough": True or False, # True if the text has a strikethrough. 47343 "fontFamily": "A String", # The font family. 47344 "fontSize": 42, # The size of the font. 47345 "italic": True or False, # True if the text is italicized. 47346 "underline": True or False, # True if the text is underlined. 47347 }, 47348 "textRotation": { # The rotation applied to text in a cell. # The rotation applied to text in a cell 47349 "angle": 42, # The angle between the standard orientation and the desired orientation. 47350 # Measured in degrees. Valid values are between -90 and 90. Positive 47351 # angles are angled upwards, negative are angled downwards. 47352 # 47353 # Note: For LTR text direction positive angles are in the counterclockwise 47354 # direction, whereas for RTL they are in the clockwise direction 47355 "vertical": True or False, # If true, text reads top to bottom, but the orientation of individual 47356 # characters is unchanged. 47357 # For example: 47358 # 47359 # | V | 47360 # | e | 47361 # | r | 47362 # | t | 47363 # | i | 47364 # | c | 47365 # | a | 47366 # | l | 47367 }, 47368 "hyperlinkDisplayType": "A String", # How a hyperlink, if it exists, should be displayed in the cell. 47369 "borders": { # The borders of the cell. # The borders of the cell. 47370 "top": { # A border along a cell. # The top border of the cell. 47371 "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border. 47372 # for simplicity of conversion to/from color representations in various 47373 # languages over compactness; for example, the fields of this representation 47374 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 47375 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 47376 # method in iOS; and, with just a little work, it can be easily formatted into 47377 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 47378 # 47379 # Example (Java): 47380 # 47381 # import com.google.type.Color; 47382 # 47383 # // ... 47384 # public static java.awt.Color fromProto(Color protocolor) { 47385 # float alpha = protocolor.hasAlpha() 47386 # ? protocolor.getAlpha().getValue() 47387 # : 1.0; 47388 # 47389 # return new java.awt.Color( 47390 # protocolor.getRed(), 47391 # protocolor.getGreen(), 47392 # protocolor.getBlue(), 47393 # alpha); 47394 # } 47395 # 47396 # public static Color toProto(java.awt.Color color) { 47397 # float red = (float) color.getRed(); 47398 # float green = (float) color.getGreen(); 47399 # float blue = (float) color.getBlue(); 47400 # float denominator = 255.0; 47401 # Color.Builder resultBuilder = 47402 # Color 47403 # .newBuilder() 47404 # .setRed(red / denominator) 47405 # .setGreen(green / denominator) 47406 # .setBlue(blue / denominator); 47407 # int alpha = color.getAlpha(); 47408 # if (alpha != 255) { 47409 # result.setAlpha( 47410 # FloatValue 47411 # .newBuilder() 47412 # .setValue(((float) alpha) / denominator) 47413 # .build()); 47414 # } 47415 # return resultBuilder.build(); 47416 # } 47417 # // ... 47418 # 47419 # Example (iOS / Obj-C): 47420 # 47421 # // ... 47422 # static UIColor* fromProto(Color* protocolor) { 47423 # float red = [protocolor red]; 47424 # float green = [protocolor green]; 47425 # float blue = [protocolor blue]; 47426 # FloatValue* alpha_wrapper = [protocolor alpha]; 47427 # float alpha = 1.0; 47428 # if (alpha_wrapper != nil) { 47429 # alpha = [alpha_wrapper value]; 47430 # } 47431 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 47432 # } 47433 # 47434 # static Color* toProto(UIColor* color) { 47435 # CGFloat red, green, blue, alpha; 47436 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 47437 # return nil; 47438 # } 47439 # Color* result = [Color alloc] init]; 47440 # [result setRed:red]; 47441 # [result setGreen:green]; 47442 # [result setBlue:blue]; 47443 # if (alpha <= 0.9999) { 47444 # [result setAlpha:floatWrapperWithValue(alpha)]; 47445 # } 47446 # [result autorelease]; 47447 # return result; 47448 # } 47449 # // ... 47450 # 47451 # Example (JavaScript): 47452 # 47453 # // ... 47454 # 47455 # var protoToCssColor = function(rgb_color) { 47456 # var redFrac = rgb_color.red || 0.0; 47457 # var greenFrac = rgb_color.green || 0.0; 47458 # var blueFrac = rgb_color.blue || 0.0; 47459 # var red = Math.floor(redFrac * 255); 47460 # var green = Math.floor(greenFrac * 255); 47461 # var blue = Math.floor(blueFrac * 255); 47462 # 47463 # if (!('alpha' in rgb_color)) { 47464 # return rgbToCssColor_(red, green, blue); 47465 # } 47466 # 47467 # var alphaFrac = rgb_color.alpha.value || 0.0; 47468 # var rgbParams = [red, green, blue].join(','); 47469 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 47470 # }; 47471 # 47472 # var rgbToCssColor_ = function(red, green, blue) { 47473 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 47474 # var hexString = rgbNumber.toString(16); 47475 # var missingZeros = 6 - hexString.length; 47476 # var resultBuilder = ['#']; 47477 # for (var i = 0; i < missingZeros; i++) { 47478 # resultBuilder.push('0'); 47479 # } 47480 # resultBuilder.push(hexString); 47481 # return resultBuilder.join(''); 47482 # }; 47483 # 47484 # // ... 47485 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 47486 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 47487 # the final pixel color is defined by the equation: 47488 # 47489 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 47490 # 47491 # This means that a value of 1.0 corresponds to a solid color, whereas 47492 # a value of 0.0 corresponds to a completely transparent color. This 47493 # uses a wrapper message rather than a simple float scalar so that it is 47494 # possible to distinguish between a default value and the value being unset. 47495 # If omitted, this color object is to be rendered as a solid color 47496 # (as if the alpha value had been explicitly given with a value of 1.0). 47497 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 47498 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 47499 }, 47500 "width": 42, # The width of the border, in pixels. 47501 # Deprecated; the width is determined by the "style" field. 47502 "style": "A String", # The style of the border. 47503 }, 47504 "right": { # A border along a cell. # The right border of the cell. 47505 "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border. 47506 # for simplicity of conversion to/from color representations in various 47507 # languages over compactness; for example, the fields of this representation 47508 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 47509 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 47510 # method in iOS; and, with just a little work, it can be easily formatted into 47511 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 47512 # 47513 # Example (Java): 47514 # 47515 # import com.google.type.Color; 47516 # 47517 # // ... 47518 # public static java.awt.Color fromProto(Color protocolor) { 47519 # float alpha = protocolor.hasAlpha() 47520 # ? protocolor.getAlpha().getValue() 47521 # : 1.0; 47522 # 47523 # return new java.awt.Color( 47524 # protocolor.getRed(), 47525 # protocolor.getGreen(), 47526 # protocolor.getBlue(), 47527 # alpha); 47528 # } 47529 # 47530 # public static Color toProto(java.awt.Color color) { 47531 # float red = (float) color.getRed(); 47532 # float green = (float) color.getGreen(); 47533 # float blue = (float) color.getBlue(); 47534 # float denominator = 255.0; 47535 # Color.Builder resultBuilder = 47536 # Color 47537 # .newBuilder() 47538 # .setRed(red / denominator) 47539 # .setGreen(green / denominator) 47540 # .setBlue(blue / denominator); 47541 # int alpha = color.getAlpha(); 47542 # if (alpha != 255) { 47543 # result.setAlpha( 47544 # FloatValue 47545 # .newBuilder() 47546 # .setValue(((float) alpha) / denominator) 47547 # .build()); 47548 # } 47549 # return resultBuilder.build(); 47550 # } 47551 # // ... 47552 # 47553 # Example (iOS / Obj-C): 47554 # 47555 # // ... 47556 # static UIColor* fromProto(Color* protocolor) { 47557 # float red = [protocolor red]; 47558 # float green = [protocolor green]; 47559 # float blue = [protocolor blue]; 47560 # FloatValue* alpha_wrapper = [protocolor alpha]; 47561 # float alpha = 1.0; 47562 # if (alpha_wrapper != nil) { 47563 # alpha = [alpha_wrapper value]; 47564 # } 47565 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 47566 # } 47567 # 47568 # static Color* toProto(UIColor* color) { 47569 # CGFloat red, green, blue, alpha; 47570 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 47571 # return nil; 47572 # } 47573 # Color* result = [Color alloc] init]; 47574 # [result setRed:red]; 47575 # [result setGreen:green]; 47576 # [result setBlue:blue]; 47577 # if (alpha <= 0.9999) { 47578 # [result setAlpha:floatWrapperWithValue(alpha)]; 47579 # } 47580 # [result autorelease]; 47581 # return result; 47582 # } 47583 # // ... 47584 # 47585 # Example (JavaScript): 47586 # 47587 # // ... 47588 # 47589 # var protoToCssColor = function(rgb_color) { 47590 # var redFrac = rgb_color.red || 0.0; 47591 # var greenFrac = rgb_color.green || 0.0; 47592 # var blueFrac = rgb_color.blue || 0.0; 47593 # var red = Math.floor(redFrac * 255); 47594 # var green = Math.floor(greenFrac * 255); 47595 # var blue = Math.floor(blueFrac * 255); 47596 # 47597 # if (!('alpha' in rgb_color)) { 47598 # return rgbToCssColor_(red, green, blue); 47599 # } 47600 # 47601 # var alphaFrac = rgb_color.alpha.value || 0.0; 47602 # var rgbParams = [red, green, blue].join(','); 47603 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 47604 # }; 47605 # 47606 # var rgbToCssColor_ = function(red, green, blue) { 47607 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 47608 # var hexString = rgbNumber.toString(16); 47609 # var missingZeros = 6 - hexString.length; 47610 # var resultBuilder = ['#']; 47611 # for (var i = 0; i < missingZeros; i++) { 47612 # resultBuilder.push('0'); 47613 # } 47614 # resultBuilder.push(hexString); 47615 # return resultBuilder.join(''); 47616 # }; 47617 # 47618 # // ... 47619 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 47620 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 47621 # the final pixel color is defined by the equation: 47622 # 47623 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 47624 # 47625 # This means that a value of 1.0 corresponds to a solid color, whereas 47626 # a value of 0.0 corresponds to a completely transparent color. This 47627 # uses a wrapper message rather than a simple float scalar so that it is 47628 # possible to distinguish between a default value and the value being unset. 47629 # If omitted, this color object is to be rendered as a solid color 47630 # (as if the alpha value had been explicitly given with a value of 1.0). 47631 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 47632 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 47633 }, 47634 "width": 42, # The width of the border, in pixels. 47635 # Deprecated; the width is determined by the "style" field. 47636 "style": "A String", # The style of the border. 47637 }, 47638 "bottom": { # A border along a cell. # The bottom border of the cell. 47639 "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border. 47640 # for simplicity of conversion to/from color representations in various 47641 # languages over compactness; for example, the fields of this representation 47642 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 47643 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 47644 # method in iOS; and, with just a little work, it can be easily formatted into 47645 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 47646 # 47647 # Example (Java): 47648 # 47649 # import com.google.type.Color; 47650 # 47651 # // ... 47652 # public static java.awt.Color fromProto(Color protocolor) { 47653 # float alpha = protocolor.hasAlpha() 47654 # ? protocolor.getAlpha().getValue() 47655 # : 1.0; 47656 # 47657 # return new java.awt.Color( 47658 # protocolor.getRed(), 47659 # protocolor.getGreen(), 47660 # protocolor.getBlue(), 47661 # alpha); 47662 # } 47663 # 47664 # public static Color toProto(java.awt.Color color) { 47665 # float red = (float) color.getRed(); 47666 # float green = (float) color.getGreen(); 47667 # float blue = (float) color.getBlue(); 47668 # float denominator = 255.0; 47669 # Color.Builder resultBuilder = 47670 # Color 47671 # .newBuilder() 47672 # .setRed(red / denominator) 47673 # .setGreen(green / denominator) 47674 # .setBlue(blue / denominator); 47675 # int alpha = color.getAlpha(); 47676 # if (alpha != 255) { 47677 # result.setAlpha( 47678 # FloatValue 47679 # .newBuilder() 47680 # .setValue(((float) alpha) / denominator) 47681 # .build()); 47682 # } 47683 # return resultBuilder.build(); 47684 # } 47685 # // ... 47686 # 47687 # Example (iOS / Obj-C): 47688 # 47689 # // ... 47690 # static UIColor* fromProto(Color* protocolor) { 47691 # float red = [protocolor red]; 47692 # float green = [protocolor green]; 47693 # float blue = [protocolor blue]; 47694 # FloatValue* alpha_wrapper = [protocolor alpha]; 47695 # float alpha = 1.0; 47696 # if (alpha_wrapper != nil) { 47697 # alpha = [alpha_wrapper value]; 47698 # } 47699 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 47700 # } 47701 # 47702 # static Color* toProto(UIColor* color) { 47703 # CGFloat red, green, blue, alpha; 47704 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 47705 # return nil; 47706 # } 47707 # Color* result = [Color alloc] init]; 47708 # [result setRed:red]; 47709 # [result setGreen:green]; 47710 # [result setBlue:blue]; 47711 # if (alpha <= 0.9999) { 47712 # [result setAlpha:floatWrapperWithValue(alpha)]; 47713 # } 47714 # [result autorelease]; 47715 # return result; 47716 # } 47717 # // ... 47718 # 47719 # Example (JavaScript): 47720 # 47721 # // ... 47722 # 47723 # var protoToCssColor = function(rgb_color) { 47724 # var redFrac = rgb_color.red || 0.0; 47725 # var greenFrac = rgb_color.green || 0.0; 47726 # var blueFrac = rgb_color.blue || 0.0; 47727 # var red = Math.floor(redFrac * 255); 47728 # var green = Math.floor(greenFrac * 255); 47729 # var blue = Math.floor(blueFrac * 255); 47730 # 47731 # if (!('alpha' in rgb_color)) { 47732 # return rgbToCssColor_(red, green, blue); 47733 # } 47734 # 47735 # var alphaFrac = rgb_color.alpha.value || 0.0; 47736 # var rgbParams = [red, green, blue].join(','); 47737 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 47738 # }; 47739 # 47740 # var rgbToCssColor_ = function(red, green, blue) { 47741 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 47742 # var hexString = rgbNumber.toString(16); 47743 # var missingZeros = 6 - hexString.length; 47744 # var resultBuilder = ['#']; 47745 # for (var i = 0; i < missingZeros; i++) { 47746 # resultBuilder.push('0'); 47747 # } 47748 # resultBuilder.push(hexString); 47749 # return resultBuilder.join(''); 47750 # }; 47751 # 47752 # // ... 47753 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 47754 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 47755 # the final pixel color is defined by the equation: 47756 # 47757 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 47758 # 47759 # This means that a value of 1.0 corresponds to a solid color, whereas 47760 # a value of 0.0 corresponds to a completely transparent color. This 47761 # uses a wrapper message rather than a simple float scalar so that it is 47762 # possible to distinguish between a default value and the value being unset. 47763 # If omitted, this color object is to be rendered as a solid color 47764 # (as if the alpha value had been explicitly given with a value of 1.0). 47765 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 47766 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 47767 }, 47768 "width": 42, # The width of the border, in pixels. 47769 # Deprecated; the width is determined by the "style" field. 47770 "style": "A String", # The style of the border. 47771 }, 47772 "left": { # A border along a cell. # The left border of the cell. 47773 "color": { # Represents a color in the RGBA color space. This representation is designed # The color of the border. 47774 # for simplicity of conversion to/from color representations in various 47775 # languages over compactness; for example, the fields of this representation 47776 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 47777 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 47778 # method in iOS; and, with just a little work, it can be easily formatted into 47779 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 47780 # 47781 # Example (Java): 47782 # 47783 # import com.google.type.Color; 47784 # 47785 # // ... 47786 # public static java.awt.Color fromProto(Color protocolor) { 47787 # float alpha = protocolor.hasAlpha() 47788 # ? protocolor.getAlpha().getValue() 47789 # : 1.0; 47790 # 47791 # return new java.awt.Color( 47792 # protocolor.getRed(), 47793 # protocolor.getGreen(), 47794 # protocolor.getBlue(), 47795 # alpha); 47796 # } 47797 # 47798 # public static Color toProto(java.awt.Color color) { 47799 # float red = (float) color.getRed(); 47800 # float green = (float) color.getGreen(); 47801 # float blue = (float) color.getBlue(); 47802 # float denominator = 255.0; 47803 # Color.Builder resultBuilder = 47804 # Color 47805 # .newBuilder() 47806 # .setRed(red / denominator) 47807 # .setGreen(green / denominator) 47808 # .setBlue(blue / denominator); 47809 # int alpha = color.getAlpha(); 47810 # if (alpha != 255) { 47811 # result.setAlpha( 47812 # FloatValue 47813 # .newBuilder() 47814 # .setValue(((float) alpha) / denominator) 47815 # .build()); 47816 # } 47817 # return resultBuilder.build(); 47818 # } 47819 # // ... 47820 # 47821 # Example (iOS / Obj-C): 47822 # 47823 # // ... 47824 # static UIColor* fromProto(Color* protocolor) { 47825 # float red = [protocolor red]; 47826 # float green = [protocolor green]; 47827 # float blue = [protocolor blue]; 47828 # FloatValue* alpha_wrapper = [protocolor alpha]; 47829 # float alpha = 1.0; 47830 # if (alpha_wrapper != nil) { 47831 # alpha = [alpha_wrapper value]; 47832 # } 47833 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 47834 # } 47835 # 47836 # static Color* toProto(UIColor* color) { 47837 # CGFloat red, green, blue, alpha; 47838 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 47839 # return nil; 47840 # } 47841 # Color* result = [Color alloc] init]; 47842 # [result setRed:red]; 47843 # [result setGreen:green]; 47844 # [result setBlue:blue]; 47845 # if (alpha <= 0.9999) { 47846 # [result setAlpha:floatWrapperWithValue(alpha)]; 47847 # } 47848 # [result autorelease]; 47849 # return result; 47850 # } 47851 # // ... 47852 # 47853 # Example (JavaScript): 47854 # 47855 # // ... 47856 # 47857 # var protoToCssColor = function(rgb_color) { 47858 # var redFrac = rgb_color.red || 0.0; 47859 # var greenFrac = rgb_color.green || 0.0; 47860 # var blueFrac = rgb_color.blue || 0.0; 47861 # var red = Math.floor(redFrac * 255); 47862 # var green = Math.floor(greenFrac * 255); 47863 # var blue = Math.floor(blueFrac * 255); 47864 # 47865 # if (!('alpha' in rgb_color)) { 47866 # return rgbToCssColor_(red, green, blue); 47867 # } 47868 # 47869 # var alphaFrac = rgb_color.alpha.value || 0.0; 47870 # var rgbParams = [red, green, blue].join(','); 47871 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 47872 # }; 47873 # 47874 # var rgbToCssColor_ = function(red, green, blue) { 47875 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 47876 # var hexString = rgbNumber.toString(16); 47877 # var missingZeros = 6 - hexString.length; 47878 # var resultBuilder = ['#']; 47879 # for (var i = 0; i < missingZeros; i++) { 47880 # resultBuilder.push('0'); 47881 # } 47882 # resultBuilder.push(hexString); 47883 # return resultBuilder.join(''); 47884 # }; 47885 # 47886 # // ... 47887 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 47888 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 47889 # the final pixel color is defined by the equation: 47890 # 47891 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 47892 # 47893 # This means that a value of 1.0 corresponds to a solid color, whereas 47894 # a value of 0.0 corresponds to a completely transparent color. This 47895 # uses a wrapper message rather than a simple float scalar so that it is 47896 # possible to distinguish between a default value and the value being unset. 47897 # If omitted, this color object is to be rendered as a solid color 47898 # (as if the alpha value had been explicitly given with a value of 1.0). 47899 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 47900 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 47901 }, 47902 "width": 42, # The width of the border, in pixels. 47903 # Deprecated; the width is determined by the "style" field. 47904 "style": "A String", # The style of the border. 47905 }, 47906 }, 47907 "wrapStrategy": "A String", # The wrap strategy for the value in the cell. 47908 }, 47909 "dataValidation": { # A data validation rule. # A data validation rule on the cell, if any. 47910 # 47911 # When writing, the new data validation rule will overwrite any prior rule. 47912 "showCustomUi": True or False, # True if the UI should be customized based on the kind of condition. 47913 # If true, "List" conditions will show a dropdown. 47914 "strict": True or False, # True if invalid data should be rejected. 47915 "inputMessage": "A String", # A message to show the user when adding data to the cell. 47916 "condition": { # A condition that can evaluate to true or false. # The condition that data in the cell must match. 47917 # BooleanConditions are used by conditional formatting, 47918 # data validation, and the criteria in filters. 47919 "values": [ # The values of the condition. The number of supported values depends 47920 # on the condition type. Some support zero values, 47921 # others one or two values, 47922 # and ConditionType.ONE_OF_LIST supports an arbitrary number of values. 47923 { # The value of the condition. 47924 "relativeDate": "A String", # A relative date (based on the current date). 47925 # Valid only if the type is 47926 # DATE_BEFORE, 47927 # DATE_AFTER, 47928 # DATE_ON_OR_BEFORE or 47929 # DATE_ON_OR_AFTER. 47930 # 47931 # Relative dates are not supported in data validation. 47932 # They are supported only in conditional formatting and 47933 # conditional filters. 47934 "userEnteredValue": "A String", # A value the condition is based on. 47935 # The value will be parsed as if the user typed into a cell. 47936 # Formulas are supported (and must begin with an `=`). 47937 }, 47938 ], 47939 "type": "A String", # The type of condition. 47940 }, 47941 }, 47942 "textFormatRuns": [ # Runs of rich text applied to subsections of the cell. Runs are only valid 47943 # on user entered strings, not formulas, bools, or numbers. 47944 # Runs start at specific indexes in the text and continue until the next 47945 # run. Properties of a run will continue unless explicitly changed 47946 # in a subsequent run (and properties of the first run will continue 47947 # the properties of the cell unless explicitly changed). 47948 # 47949 # When writing, the new runs will overwrite any prior runs. When writing a 47950 # new user_entered_value, previous runs will be erased. 47951 { # A run of a text format. The format of this run continues until the start 47952 # index of the next run. 47953 # When updating, all fields must be set. 47954 "startIndex": 42, # The character index where this run starts. 47955 "format": { # The format of a run of text in a cell. # The format of this run. Absent values inherit the cell's format. 47956 # Absent values indicate that the field isn't specified. 47957 "foregroundColor": { # Represents a color in the RGBA color space. This representation is designed # The foreground color of the text. 47958 # for simplicity of conversion to/from color representations in various 47959 # languages over compactness; for example, the fields of this representation 47960 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 47961 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 47962 # method in iOS; and, with just a little work, it can be easily formatted into 47963 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 47964 # 47965 # Example (Java): 47966 # 47967 # import com.google.type.Color; 47968 # 47969 # // ... 47970 # public static java.awt.Color fromProto(Color protocolor) { 47971 # float alpha = protocolor.hasAlpha() 47972 # ? protocolor.getAlpha().getValue() 47973 # : 1.0; 47974 # 47975 # return new java.awt.Color( 47976 # protocolor.getRed(), 47977 # protocolor.getGreen(), 47978 # protocolor.getBlue(), 47979 # alpha); 47980 # } 47981 # 47982 # public static Color toProto(java.awt.Color color) { 47983 # float red = (float) color.getRed(); 47984 # float green = (float) color.getGreen(); 47985 # float blue = (float) color.getBlue(); 47986 # float denominator = 255.0; 47987 # Color.Builder resultBuilder = 47988 # Color 47989 # .newBuilder() 47990 # .setRed(red / denominator) 47991 # .setGreen(green / denominator) 47992 # .setBlue(blue / denominator); 47993 # int alpha = color.getAlpha(); 47994 # if (alpha != 255) { 47995 # result.setAlpha( 47996 # FloatValue 47997 # .newBuilder() 47998 # .setValue(((float) alpha) / denominator) 47999 # .build()); 48000 # } 48001 # return resultBuilder.build(); 48002 # } 48003 # // ... 48004 # 48005 # Example (iOS / Obj-C): 48006 # 48007 # // ... 48008 # static UIColor* fromProto(Color* protocolor) { 48009 # float red = [protocolor red]; 48010 # float green = [protocolor green]; 48011 # float blue = [protocolor blue]; 48012 # FloatValue* alpha_wrapper = [protocolor alpha]; 48013 # float alpha = 1.0; 48014 # if (alpha_wrapper != nil) { 48015 # alpha = [alpha_wrapper value]; 48016 # } 48017 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 48018 # } 48019 # 48020 # static Color* toProto(UIColor* color) { 48021 # CGFloat red, green, blue, alpha; 48022 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 48023 # return nil; 48024 # } 48025 # Color* result = [Color alloc] init]; 48026 # [result setRed:red]; 48027 # [result setGreen:green]; 48028 # [result setBlue:blue]; 48029 # if (alpha <= 0.9999) { 48030 # [result setAlpha:floatWrapperWithValue(alpha)]; 48031 # } 48032 # [result autorelease]; 48033 # return result; 48034 # } 48035 # // ... 48036 # 48037 # Example (JavaScript): 48038 # 48039 # // ... 48040 # 48041 # var protoToCssColor = function(rgb_color) { 48042 # var redFrac = rgb_color.red || 0.0; 48043 # var greenFrac = rgb_color.green || 0.0; 48044 # var blueFrac = rgb_color.blue || 0.0; 48045 # var red = Math.floor(redFrac * 255); 48046 # var green = Math.floor(greenFrac * 255); 48047 # var blue = Math.floor(blueFrac * 255); 48048 # 48049 # if (!('alpha' in rgb_color)) { 48050 # return rgbToCssColor_(red, green, blue); 48051 # } 48052 # 48053 # var alphaFrac = rgb_color.alpha.value || 0.0; 48054 # var rgbParams = [red, green, blue].join(','); 48055 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 48056 # }; 48057 # 48058 # var rgbToCssColor_ = function(red, green, blue) { 48059 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 48060 # var hexString = rgbNumber.toString(16); 48061 # var missingZeros = 6 - hexString.length; 48062 # var resultBuilder = ['#']; 48063 # for (var i = 0; i < missingZeros; i++) { 48064 # resultBuilder.push('0'); 48065 # } 48066 # resultBuilder.push(hexString); 48067 # return resultBuilder.join(''); 48068 # }; 48069 # 48070 # // ... 48071 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 48072 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 48073 # the final pixel color is defined by the equation: 48074 # 48075 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 48076 # 48077 # This means that a value of 1.0 corresponds to a solid color, whereas 48078 # a value of 0.0 corresponds to a completely transparent color. This 48079 # uses a wrapper message rather than a simple float scalar so that it is 48080 # possible to distinguish between a default value and the value being unset. 48081 # If omitted, this color object is to be rendered as a solid color 48082 # (as if the alpha value had been explicitly given with a value of 1.0). 48083 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 48084 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 48085 }, 48086 "bold": True or False, # True if the text is bold. 48087 "strikethrough": True or False, # True if the text has a strikethrough. 48088 "fontFamily": "A String", # The font family. 48089 "fontSize": 42, # The size of the font. 48090 "italic": True or False, # True if the text is italicized. 48091 "underline": True or False, # True if the text is underlined. 48092 }, 48093 }, 48094 ], 48095 }, 48096 ], 48097 }, 48098 ], 48099 "startRow": 42, # The first row this GridData refers to, zero-based. 48100 "columnMetadata": [ # Metadata about the requested columns in the grid, starting with the column 48101 # in start_column. 48102 { # Properties about a dimension. 48103 "pixelSize": 42, # The height (if a row) or width (if a column) of the dimension in pixels. 48104 "hiddenByUser": True or False, # True if this dimension is explicitly hidden. 48105 "hiddenByFilter": True or False, # True if this dimension is being filtered. 48106 # This field is read-only. 48107 }, 48108 ], 48109 }, 48110 ], 48111 "properties": { # Properties of a sheet. # The properties of the sheet. 48112 "sheetType": "A String", # The type of sheet. Defaults to GRID. 48113 # This field cannot be changed once set. 48114 "index": 42, # The index of the sheet within the spreadsheet. 48115 # When adding or updating sheet properties, if this field 48116 # is excluded then the sheet will be added or moved to the end 48117 # of the sheet list. When updating sheet indices or inserting 48118 # sheets, movement is considered in "before the move" indexes. 48119 # For example, if there were 3 sheets (S1, S2, S3) in order to 48120 # move S1 ahead of S2 the index would have to be set to 2. A sheet 48121 # index update request will be ignored if the requested index is 48122 # identical to the sheets current index or if the requested new 48123 # index is equal to the current sheet index + 1. 48124 "title": "A String", # The name of the sheet. 48125 "gridProperties": { # Properties of a grid. # Additional properties of the sheet if this sheet is a grid. 48126 # (If the sheet is an object sheet, containing a chart or image, then 48127 # this field will be absent.) 48128 # When writing it is an error to set any grid properties on non-grid sheets. 48129 "columnCount": 42, # The number of columns in the grid. 48130 "frozenRowCount": 42, # The number of rows that are frozen in the grid. 48131 "frozenColumnCount": 42, # The number of columns that are frozen in the grid. 48132 "hideGridlines": True or False, # True if the grid isn't showing gridlines in the UI. 48133 "rowCount": 42, # The number of rows in the grid. 48134 }, 48135 "rightToLeft": True or False, # True if the sheet is an RTL sheet instead of an LTR sheet. 48136 "tabColor": { # Represents a color in the RGBA color space. This representation is designed # The color of the tab in the UI. 48137 # for simplicity of conversion to/from color representations in various 48138 # languages over compactness; for example, the fields of this representation 48139 # can be trivially provided to the constructor of "java.awt.Color" in Java; it 48140 # can also be trivially provided to UIColor's "+colorWithRed:green:blue:alpha" 48141 # method in iOS; and, with just a little work, it can be easily formatted into 48142 # a CSS "rgba()" string in JavaScript, as well. Here are some examples: 48143 # 48144 # Example (Java): 48145 # 48146 # import com.google.type.Color; 48147 # 48148 # // ... 48149 # public static java.awt.Color fromProto(Color protocolor) { 48150 # float alpha = protocolor.hasAlpha() 48151 # ? protocolor.getAlpha().getValue() 48152 # : 1.0; 48153 # 48154 # return new java.awt.Color( 48155 # protocolor.getRed(), 48156 # protocolor.getGreen(), 48157 # protocolor.getBlue(), 48158 # alpha); 48159 # } 48160 # 48161 # public static Color toProto(java.awt.Color color) { 48162 # float red = (float) color.getRed(); 48163 # float green = (float) color.getGreen(); 48164 # float blue = (float) color.getBlue(); 48165 # float denominator = 255.0; 48166 # Color.Builder resultBuilder = 48167 # Color 48168 # .newBuilder() 48169 # .setRed(red / denominator) 48170 # .setGreen(green / denominator) 48171 # .setBlue(blue / denominator); 48172 # int alpha = color.getAlpha(); 48173 # if (alpha != 255) { 48174 # result.setAlpha( 48175 # FloatValue 48176 # .newBuilder() 48177 # .setValue(((float) alpha) / denominator) 48178 # .build()); 48179 # } 48180 # return resultBuilder.build(); 48181 # } 48182 # // ... 48183 # 48184 # Example (iOS / Obj-C): 48185 # 48186 # // ... 48187 # static UIColor* fromProto(Color* protocolor) { 48188 # float red = [protocolor red]; 48189 # float green = [protocolor green]; 48190 # float blue = [protocolor blue]; 48191 # FloatValue* alpha_wrapper = [protocolor alpha]; 48192 # float alpha = 1.0; 48193 # if (alpha_wrapper != nil) { 48194 # alpha = [alpha_wrapper value]; 48195 # } 48196 # return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; 48197 # } 48198 # 48199 # static Color* toProto(UIColor* color) { 48200 # CGFloat red, green, blue, alpha; 48201 # if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { 48202 # return nil; 48203 # } 48204 # Color* result = [Color alloc] init]; 48205 # [result setRed:red]; 48206 # [result setGreen:green]; 48207 # [result setBlue:blue]; 48208 # if (alpha <= 0.9999) { 48209 # [result setAlpha:floatWrapperWithValue(alpha)]; 48210 # } 48211 # [result autorelease]; 48212 # return result; 48213 # } 48214 # // ... 48215 # 48216 # Example (JavaScript): 48217 # 48218 # // ... 48219 # 48220 # var protoToCssColor = function(rgb_color) { 48221 # var redFrac = rgb_color.red || 0.0; 48222 # var greenFrac = rgb_color.green || 0.0; 48223 # var blueFrac = rgb_color.blue || 0.0; 48224 # var red = Math.floor(redFrac * 255); 48225 # var green = Math.floor(greenFrac * 255); 48226 # var blue = Math.floor(blueFrac * 255); 48227 # 48228 # if (!('alpha' in rgb_color)) { 48229 # return rgbToCssColor_(red, green, blue); 48230 # } 48231 # 48232 # var alphaFrac = rgb_color.alpha.value || 0.0; 48233 # var rgbParams = [red, green, blue].join(','); 48234 # return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); 48235 # }; 48236 # 48237 # var rgbToCssColor_ = function(red, green, blue) { 48238 # var rgbNumber = new Number((red << 16) | (green << 8) | blue); 48239 # var hexString = rgbNumber.toString(16); 48240 # var missingZeros = 6 - hexString.length; 48241 # var resultBuilder = ['#']; 48242 # for (var i = 0; i < missingZeros; i++) { 48243 # resultBuilder.push('0'); 48244 # } 48245 # resultBuilder.push(hexString); 48246 # return resultBuilder.join(''); 48247 # }; 48248 # 48249 # // ... 48250 "blue": 3.14, # The amount of blue in the color as a value in the interval [0, 1]. 48251 "alpha": 3.14, # The fraction of this color that should be applied to the pixel. That is, 48252 # the final pixel color is defined by the equation: 48253 # 48254 # pixel color = alpha * (this color) + (1.0 - alpha) * (background color) 48255 # 48256 # This means that a value of 1.0 corresponds to a solid color, whereas 48257 # a value of 0.0 corresponds to a completely transparent color. This 48258 # uses a wrapper message rather than a simple float scalar so that it is 48259 # possible to distinguish between a default value and the value being unset. 48260 # If omitted, this color object is to be rendered as a solid color 48261 # (as if the alpha value had been explicitly given with a value of 1.0). 48262 "green": 3.14, # The amount of green in the color as a value in the interval [0, 1]. 48263 "red": 3.14, # The amount of red in the color as a value in the interval [0, 1]. 48264 }, 48265 "hidden": True or False, # True if the sheet is hidden in the UI, false if it's visible. 48266 "sheetId": 42, # The ID of the sheet. Must be non-negative. 48267 # This field cannot be changed once set. 48268 }, 48269 }, 48270 ], 48271 "spreadsheetUrl": "A String", # The url of the spreadsheet. 48272 # This field is read-only. 48273 }</pre> 48274 </div> 48275 48276 </body></html>