1
0
mirror of https://github.com/taigrr/wtf synced 2025-01-18 04:03:14 -08:00

Update go.mod, go.sum and vendor

Running `go mod vendor` generates new additions and deletions.
This commit is contained in:
Indradhanush Gupta
2019-09-14 16:23:09 +05:30
parent 1ee3e6d213
commit f737c53864
660 changed files with 73712 additions and 17787 deletions

File diff suppressed because it is too large Load Diff

20204
vendor/google.golang.org/api/analytics/v3/analytics-gen.go generated vendored Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -154,7 +154,7 @@
}
}
},
"revision": "20190318",
"revision": "20190719",
"rootUrl": "https://analyticsreporting.googleapis.com/",
"schemas": {
"Activity": {
@@ -283,7 +283,7 @@
"type": "array"
},
"lifetimeValue": {
"description": "Enable Life Time Value (LTV). LTV measures lifetime value for users\nacquired through different channels.\nPlease see:\n[Cohort Analysis](https://support.google.com/analytics/answer/6074676) and\n[Lifetime Value](https://support.google.com/analytics/answer/6182550)\nIf the value of lifetimeValue is false:\n\n- The metric values are similar to the values in the web interface cohort\n report.\n- The cohort definition date ranges must be aligned to the calendar week\n and month. i.e. while requesting `ga:cohortNthWeek` the `startDate` in\n the cohort definition should be a Sunday and the `endDate` should be the\n following Saturday, and for `ga:cohortNthMonth`, the `startDate`\n should be the 1st of the month and `endDate` should be the last day\n of the month.\n\nWhen the lifetimeValue is true:\n\n- The metric values will correspond to the values in the web interface\n LifeTime value report.\n- The Lifetime Value report shows you how user value (Revenue) and\n engagement (Appviews, Goal Completions, Sessions, and Session Duration)\n grow during the 90 days after a user is acquired.\n- The metrics are calculated as a cumulative average per user per the time\n increment.\n- The cohort definition date ranges need not be aligned to the calendar\n week and month boundaries.\n- The `viewId` must be an\n [app view ID](https://support.google.com/analytics/answer/2649553#WebVersusAppViews)",
"description": "Enable Life Time Value (LTV). LTV measures lifetime value for users\nacquired through different channels.\nPlease see:\n[Cohort Analysis](https://support.google.com/analytics/answer/6074676) and\n[Lifetime Value](https://support.google.com/analytics/answer/6182550)\nIf the value of lifetimeValue is false:\n\n- The metric values are similar to the values in the web interface cohort\n report.\n- The cohort definition date ranges must be aligned to the calendar week\n and month. i.e. while requesting `ga:cohortNthWeek` the `startDate` in\n the cohort definition should be a Sunday and the `endDate` should be the\n following Saturday, and for `ga:cohortNthMonth`, the `startDate`\n should be the 1st of the month and `endDate` should be the last day\n of the month.\n\nWhen the lifetimeValue is true:\n\n- The metric values will correspond to the values in the web interface\n LifeTime value report.\n- The Lifetime Value report shows you how user value (Revenue) and\n engagement (Appviews, Goal Completions, Sessions, and Session Duration)\n grow during the 90 days after a user is acquired.\n- The metrics are calculated as a cumulative average per user per the time\n increment.\n- The cohort definition date ranges need not be aligned to the calendar\n week and month boundaries.\n- The `viewId` must be an\n [app view\n ID](https://support.google.com/analytics/answer/2649553#WebVersusAppViews)",
"type": "boolean"
}
},
@@ -578,7 +578,7 @@
"type": "array"
},
"useResourceQuotas": {
"description": "Enables\n[resource based quotas](/analytics/devguides/reporting/core/v4/limits-quotas#analytics_reporting_api_v4),\n(defaults to `False`). If this field is set to `True` the\nper view (profile) quotas are governed by the computational\ncost of the request. Note that using cost based quotas will\nhigher enable sampling rates. (10 Million for `SMALL`,\n100M for `LARGE`. See the\n[limits and quotas documentation](/analytics/devguides/reporting/core/v4/limits-quotas#analytics_reporting_api_v4) for details.",
"description": "Enables\n[resource based\nquotas](/analytics/devguides/reporting/core/v4/limits-quotas#analytics_reporting_api_v4),\n(defaults to `False`). If this field is set to `True` the\nper view (profile) quotas are governed by the computational\ncost of the request. Note that using cost based quotas will\nhigher enable sampling rates. (10 Million for `SMALL`,\n100M for `LARGE`. See the\n[limits and quotas\ndocumentation](/analytics/devguides/reporting/core/v4/limits-quotas#analytics_reporting_api_v4)\nfor details.",
"type": "boolean"
}
},
@@ -1117,14 +1117,14 @@
"type": "array"
},
"dimensions": {
"description": "The dimensions requested.\nRequests can have a total of 7 dimensions.",
"description": "The dimensions requested.\nRequests can have a total of 9 dimensions.",
"items": {
"$ref": "Dimension"
},
"type": "array"
},
"filtersExpression": {
"description": "Dimension or metric filters that restrict the data returned for your\nrequest. To use the `filtersExpression`, supply a dimension or metric on\nwhich to filter, followed by the filter expression. For example, the\nfollowing expression selects `ga:browser` dimension which starts with\nFirefox; `ga:browser=~^Firefox`. For more information on dimensions\nand metric filters, see\n[Filters reference](https://developers.google.com/analytics/devguides/reporting/core/v3/reference#filters).",
"description": "Dimension or metric filters that restrict the data returned for your\nrequest. To use the `filtersExpression`, supply a dimension or metric on\nwhich to filter, followed by the filter expression. For example, the\nfollowing expression selects `ga:browser` dimension which starts with\nFirefox; `ga:browser=~^Firefox`. For more information on dimensions\nand metric filters, see\n[Filters\nreference](https://developers.google.com/analytics/devguides/reporting/core/v3/reference#filters).",
"type": "string"
},
"hideTotals": {

View File

@@ -432,6 +432,7 @@ type CohortGroup struct {
// week and month boundaries.
// - The `viewId` must be an
// [app view
//
// ID](https://support.google.com/analytics/answer/2649553#WebVersusAppVi
// ews)
LifetimeValue bool `json:"lifetimeValue,omitempty"`
@@ -956,17 +957,20 @@ type GetReportsRequest struct {
ReportRequests []*ReportRequest `json:"reportRequests,omitempty"`
// UseResourceQuotas: Enables
// [resource based
// quotas](/analytics/devguides/reporting/core/v4/limits-quotas#analytics
// _reporting_api_v4),
// [resource
// based
// quotas](/analytics/devguides/reporting/core/v4/limits-quotas#ana
// lytics_reporting_api_v4),
// (defaults to `False`). If this field is set to `True` the
// per view (profile) quotas are governed by the computational
// cost of the request. Note that using cost based quotas will
// higher enable sampling rates. (10 Million for `SMALL`,
// 100M for `LARGE`. See the
// [limits and quotas
// documentation](/analytics/devguides/reporting/core/v4/limits-quotas#an
// alytics_reporting_api_v4) for details.
// [limits and
// quotas
// documentation](/analytics/devguides/reporting/core/v4/limits-qu
// otas#analytics_reporting_api_v4)
// for details.
UseResourceQuotas bool `json:"useResourceQuotas,omitempty"`
// ForceSendFields is a list of field names (e.g. "ReportRequests") to
@@ -1929,7 +1933,7 @@ type ReportRequest struct {
DimensionFilterClauses []*DimensionFilterClause `json:"dimensionFilterClauses,omitempty"`
// Dimensions: The dimensions requested.
// Requests can have a total of 7 dimensions.
// Requests can have a total of 9 dimensions.
Dimensions []*Dimension `json:"dimensions,omitempty"`
// FiltersExpression: Dimension or metric filters that restrict the data
@@ -1942,10 +1946,11 @@ type ReportRequest struct {
// with
// Firefox; `ga:browser=~^Firefox`. For more information on
// dimensions
// and metric filters, see
// and metric filters,
// see
// [Filters
// reference](https://developers.google.com/analytics/devguides/reporting
// /core/v3/reference#filters).
// reference](https://developers.google.com/analytics/devgui
// des/reporting/core/v3/reference#filters).
FiltersExpression string `json:"filtersExpression,omitempty"`
// HideTotals: If set to true, hides the total of all metrics for all
@@ -2999,6 +3004,7 @@ func (c *ReportsBatchGetCall) Header() http.Header {
func (c *ReportsBatchGetCall) doRequest(alt string) (*http.Response, error) {
reqHeaders := make(http.Header)
reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190802")
for k, v := range c.header_ {
reqHeaders[k] = v
}
@@ -3124,6 +3130,7 @@ func (c *UserActivitySearchCall) Header() http.Header {
func (c *UserActivitySearchCall) doRequest(alt string) (*http.Response, error) {
reqHeaders := make(http.Header)
reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190802")
for k, v := range c.header_ {
reqHeaders[k] = v
}

View File

@@ -26,7 +26,7 @@
"description": "Manipulates events and other calendar data.",
"discoveryVersion": "v1",
"documentationLink": "https://developers.google.com/google-apps/calendar/firstapp",
"etag": "\"VPK3KBfpaEgZ16pozGOoMYfKc0U/AciOQr9FW92aqABx-Xo_TTJaKXc\"",
"etag": "\"9eZ1uxVRThTDhLJCZHhqs3eQWz4/K_k45CtMfV--mlEBFlbW_LzaaUU\"",
"icons": {
"x16": "http://www.google.com/images/icons/product/calendar-16.png",
"x32": "http://www.google.com/images/icons/product/calendar-32.png"
@@ -1724,7 +1724,7 @@
}
}
},
"revision": "20190430",
"revision": "20190609",
"rootUrl": "https://www.googleapis.com/",
"schemas": {
"Acl": {
@@ -2019,7 +2019,7 @@
},
"kind": {
"default": "api#channel",
"description": "Identifies this as a notification channel used to watch for changes to a resource. Value: the fixed string \"api#channel\".",
"description": "Identifies this as a notification channel used to watch for changes to a resource, which is \"api#channel\".",
"type": "string"
},
"params": {

View File

@@ -701,7 +701,7 @@ type Channel struct {
Id string `json:"id,omitempty"`
// Kind: Identifies this as a notification channel used to watch for
// changes to a resource. Value: the fixed string "api#channel".
// changes to a resource, which is "api#channel".
Kind string `json:"kind,omitempty"`
// Params: Additional parameters controlling delivery channel behavior.
@@ -2426,6 +2426,7 @@ func (c *AclDeleteCall) Header() http.Header {
func (c *AclDeleteCall) doRequest(alt string) (*http.Response, error) {
reqHeaders := make(http.Header)
reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190802")
for k, v := range c.header_ {
reqHeaders[k] = v
}
@@ -2546,6 +2547,7 @@ func (c *AclGetCall) Header() http.Header {
func (c *AclGetCall) doRequest(alt string) (*http.Response, error) {
reqHeaders := make(http.Header)
reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190802")
for k, v := range c.header_ {
reqHeaders[k] = v
}
@@ -2695,6 +2697,7 @@ func (c *AclInsertCall) Header() http.Header {
func (c *AclInsertCall) doRequest(alt string) (*http.Response, error) {
reqHeaders := make(http.Header)
reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190802")
for k, v := range c.header_ {
reqHeaders[k] = v
}
@@ -2886,6 +2889,7 @@ func (c *AclListCall) Header() http.Header {
func (c *AclListCall) doRequest(alt string) (*http.Response, error) {
reqHeaders := make(http.Header)
reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190802")
for k, v := range c.header_ {
reqHeaders[k] = v
}
@@ -3074,6 +3078,7 @@ func (c *AclPatchCall) Header() http.Header {
func (c *AclPatchCall) doRequest(alt string) (*http.Response, error) {
reqHeaders := make(http.Header)
reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190802")
for k, v := range c.header_ {
reqHeaders[k] = v
}
@@ -3235,6 +3240,7 @@ func (c *AclUpdateCall) Header() http.Header {
func (c *AclUpdateCall) doRequest(alt string) (*http.Response, error) {
reqHeaders := make(http.Header)
reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190802")
for k, v := range c.header_ {
reqHeaders[k] = v
}
@@ -3425,6 +3431,7 @@ func (c *AclWatchCall) Header() http.Header {
func (c *AclWatchCall) doRequest(alt string) (*http.Response, error) {
reqHeaders := make(http.Header)
reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190802")
for k, v := range c.header_ {
reqHeaders[k] = v
}
@@ -3584,6 +3591,7 @@ func (c *CalendarListDeleteCall) Header() http.Header {
func (c *CalendarListDeleteCall) doRequest(alt string) (*http.Response, error) {
reqHeaders := make(http.Header)
reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190802")
for k, v := range c.header_ {
reqHeaders[k] = v
}
@@ -3694,6 +3702,7 @@ func (c *CalendarListGetCall) Header() http.Header {
func (c *CalendarListGetCall) doRequest(alt string) (*http.Response, error) {
reqHeaders := make(http.Header)
reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190802")
for k, v := range c.header_ {
reqHeaders[k] = v
}
@@ -3835,6 +3844,7 @@ func (c *CalendarListInsertCall) Header() http.Header {
func (c *CalendarListInsertCall) doRequest(alt string) (*http.Response, error) {
reqHeaders := make(http.Header)
reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190802")
for k, v := range c.header_ {
reqHeaders[k] = v
}
@@ -4037,6 +4047,7 @@ func (c *CalendarListListCall) Header() http.Header {
func (c *CalendarListListCall) doRequest(alt string) (*http.Response, error) {
reqHeaders := make(http.Header)
reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190802")
for k, v := range c.header_ {
reqHeaders[k] = v
}
@@ -4235,6 +4246,7 @@ func (c *CalendarListPatchCall) Header() http.Header {
func (c *CalendarListPatchCall) doRequest(alt string) (*http.Response, error) {
reqHeaders := make(http.Header)
reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190802")
for k, v := range c.header_ {
reqHeaders[k] = v
}
@@ -4387,6 +4399,7 @@ func (c *CalendarListUpdateCall) Header() http.Header {
func (c *CalendarListUpdateCall) doRequest(alt string) (*http.Response, error) {
reqHeaders := make(http.Header)
reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190802")
for k, v := range c.header_ {
reqHeaders[k] = v
}
@@ -4592,6 +4605,7 @@ func (c *CalendarListWatchCall) Header() http.Header {
func (c *CalendarListWatchCall) doRequest(alt string) (*http.Response, error) {
reqHeaders := make(http.Header)
reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190802")
for k, v := range c.header_ {
reqHeaders[k] = v
}
@@ -4763,6 +4777,7 @@ func (c *CalendarsClearCall) Header() http.Header {
func (c *CalendarsClearCall) doRequest(alt string) (*http.Response, error) {
reqHeaders := make(http.Header)
reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190802")
for k, v := range c.header_ {
reqHeaders[k] = v
}
@@ -4863,6 +4878,7 @@ func (c *CalendarsDeleteCall) Header() http.Header {
func (c *CalendarsDeleteCall) doRequest(alt string) (*http.Response, error) {
reqHeaders := make(http.Header)
reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190802")
for k, v := range c.header_ {
reqHeaders[k] = v
}
@@ -4973,6 +4989,7 @@ func (c *CalendarsGetCall) Header() http.Header {
func (c *CalendarsGetCall) doRequest(alt string) (*http.Response, error) {
reqHeaders := make(http.Header)
reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190802")
for k, v := range c.header_ {
reqHeaders[k] = v
}
@@ -5104,6 +5121,7 @@ func (c *CalendarsInsertCall) Header() http.Header {
func (c *CalendarsInsertCall) doRequest(alt string) (*http.Response, error) {
reqHeaders := make(http.Header)
reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190802")
for k, v := range c.header_ {
reqHeaders[k] = v
}
@@ -5228,6 +5246,7 @@ func (c *CalendarsPatchCall) Header() http.Header {
func (c *CalendarsPatchCall) doRequest(alt string) (*http.Response, error) {
reqHeaders := make(http.Header)
reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190802")
for k, v := range c.header_ {
reqHeaders[k] = v
}
@@ -5365,6 +5384,7 @@ func (c *CalendarsUpdateCall) Header() http.Header {
func (c *CalendarsUpdateCall) doRequest(alt string) (*http.Response, error) {
reqHeaders := make(http.Header)
reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190802")
for k, v := range c.header_ {
reqHeaders[k] = v
}
@@ -5500,6 +5520,7 @@ func (c *ChannelsStopCall) Header() http.Header {
func (c *ChannelsStopCall) doRequest(alt string) (*http.Response, error) {
reqHeaders := make(http.Header)
reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190802")
for k, v := range c.header_ {
reqHeaders[k] = v
}
@@ -5607,6 +5628,7 @@ func (c *ColorsGetCall) Header() http.Header {
func (c *ColorsGetCall) doRequest(alt string) (*http.Response, error) {
reqHeaders := make(http.Header)
reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190802")
for k, v := range c.header_ {
reqHeaders[k] = v
}
@@ -5752,6 +5774,7 @@ func (c *EventsDeleteCall) Header() http.Header {
func (c *EventsDeleteCall) doRequest(alt string) (*http.Response, error) {
reqHeaders := make(http.Header)
reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190802")
for k, v := range c.header_ {
reqHeaders[k] = v
}
@@ -5921,6 +5944,7 @@ func (c *EventsGetCall) Header() http.Header {
func (c *EventsGetCall) doRequest(alt string) (*http.Response, error) {
reqHeaders := make(http.Header)
reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190802")
for k, v := range c.header_ {
reqHeaders[k] = v
}
@@ -6102,6 +6126,7 @@ func (c *EventsImportCall) Header() http.Header {
func (c *EventsImportCall) doRequest(alt string) (*http.Response, error) {
reqHeaders := make(http.Header)
reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190802")
for k, v := range c.header_ {
reqHeaders[k] = v
}
@@ -6309,6 +6334,7 @@ func (c *EventsInsertCall) Header() http.Header {
func (c *EventsInsertCall) doRequest(alt string) (*http.Response, error) {
reqHeaders := make(http.Header)
reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190802")
for k, v := range c.header_ {
reqHeaders[k] = v
}
@@ -6575,6 +6601,7 @@ func (c *EventsInstancesCall) Header() http.Header {
func (c *EventsInstancesCall) doRequest(alt string) (*http.Response, error) {
reqHeaders := make(http.Header)
reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190802")
for k, v := range c.header_ {
reqHeaders[k] = v
}
@@ -6984,6 +7011,7 @@ func (c *EventsListCall) Header() http.Header {
func (c *EventsListCall) doRequest(alt string) (*http.Response, error) {
reqHeaders := make(http.Header)
reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190802")
for k, v := range c.header_ {
reqHeaders[k] = v
}
@@ -7273,6 +7301,7 @@ func (c *EventsMoveCall) Header() http.Header {
func (c *EventsMoveCall) doRequest(alt string) (*http.Response, error) {
reqHeaders := make(http.Header)
reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190802")
for k, v := range c.header_ {
reqHeaders[k] = v
}
@@ -7508,6 +7537,7 @@ func (c *EventsPatchCall) Header() http.Header {
func (c *EventsPatchCall) doRequest(alt string) (*http.Response, error) {
reqHeaders := make(http.Header)
reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190802")
for k, v := range c.header_ {
reqHeaders[k] = v
}
@@ -7724,6 +7754,7 @@ func (c *EventsQuickAddCall) Header() http.Header {
func (c *EventsQuickAddCall) doRequest(alt string) (*http.Response, error) {
reqHeaders := make(http.Header)
reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190802")
for k, v := range c.header_ {
reqHeaders[k] = v
}
@@ -7951,6 +7982,7 @@ func (c *EventsUpdateCall) Header() http.Header {
func (c *EventsUpdateCall) doRequest(alt string) (*http.Response, error) {
reqHeaders := make(http.Header)
reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190802")
for k, v := range c.header_ {
reqHeaders[k] = v
}
@@ -8326,6 +8358,7 @@ func (c *EventsWatchCall) Header() http.Header {
func (c *EventsWatchCall) doRequest(alt string) (*http.Response, error) {
reqHeaders := make(http.Header)
reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190802")
for k, v := range c.header_ {
reqHeaders[k] = v
}
@@ -8569,6 +8602,7 @@ func (c *FreebusyQueryCall) Header() http.Header {
func (c *FreebusyQueryCall) doRequest(alt string) (*http.Response, error) {
reqHeaders := make(http.Header)
reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190802")
for k, v := range c.header_ {
reqHeaders[k] = v
}
@@ -8702,6 +8736,7 @@ func (c *SettingsGetCall) Header() http.Header {
func (c *SettingsGetCall) doRequest(alt string) (*http.Response, error) {
reqHeaders := make(http.Header)
reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190802")
for k, v := range c.header_ {
reqHeaders[k] = v
}
@@ -8872,6 +8907,7 @@ func (c *SettingsListCall) Header() http.Header {
func (c *SettingsListCall) doRequest(alt string) (*http.Response, error) {
reqHeaders := make(http.Header)
reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190802")
for k, v := range c.header_ {
reqHeaders[k] = v
}
@@ -9060,6 +9096,7 @@ func (c *SettingsWatchCall) Header() http.Header {
func (c *SettingsWatchCall) doRequest(alt string) (*http.Response, error) {
reqHeaders := make(http.Header)
reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190802")
for k, v := range c.header_ {
reqHeaders[k] = v
}

View File

@@ -1,51 +0,0 @@
// Copyright 2016 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package gensupport
import (
"math/rand"
"time"
)
// BackoffStrategy defines the set of functions that a backoff-er must
// implement.
type BackoffStrategy interface {
// Pause returns the duration of the next pause and true if the operation should be
// retried, or false if no further retries should be attempted.
Pause() (time.Duration, bool)
// Reset restores the strategy to its initial state.
Reset()
}
// ExponentialBackoff performs exponential backoff as per https://en.wikipedia.org/wiki/Exponential_backoff.
// The initial pause time is given by Base.
// Once the total pause time exceeds Max, Pause will indicate no further retries.
type ExponentialBackoff struct {
Base time.Duration
Max time.Duration
total time.Duration
n uint
}
// Pause returns the amount of time the caller should wait.
func (eb *ExponentialBackoff) Pause() (time.Duration, bool) {
if eb.total > eb.Max {
return 0, false
}
// The next pause is selected from randomly from [0, 2^n * Base).
d := time.Duration(rand.Int63n((1 << eb.n) * int64(eb.Base)))
eb.total += d
eb.n++
return d, true
}
// Reset resets the backoff strategy such that the next Pause call will begin
// counting from the start. It is not safe to call concurrently with Pause.
func (eb *ExponentialBackoff) Reset() {
eb.n = 0
eb.total = 0
}

View File

@@ -1,22 +0,0 @@
// Copyright 2017 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package gensupport
import (
"fmt"
"runtime"
"strings"
)
// GoogleClientHeader returns the value to use for the x-goog-api-client
// header, which is used internally by Google.
func GoogleClientHeader(generatorVersion, clientElement string) string {
elts := []string{"gl-go/" + strings.Replace(runtime.Version(), " ", "_", -1)}
if clientElement != "" {
elts = append(elts, clientElement)
}
elts = append(elts, fmt.Sprintf("gdcl/%s", generatorVersion))
return strings.Join(elts, " ")
}

View File

@@ -12,6 +12,22 @@ import (
"net/http"
"sync"
"time"
gax "github.com/googleapis/gax-go/v2"
)
// Backoff is an interface around gax.Backoff's Pause method, allowing tests to provide their
// own implementation.
type Backoff interface {
Pause() time.Duration
}
// These are declared as global variables so that tests can overwrite them.
var (
retryDeadline = 32 * time.Second
backoff = func() Backoff {
return &gax.Backoff{Initial: 100 * time.Millisecond}
}
)
const (
@@ -39,9 +55,6 @@ type ResumableUpload struct {
// Callback is an optional function that will be periodically called with the cumulative number of bytes uploaded.
Callback func(int64)
// If not specified, a default exponential backoff strategy will be used.
Backoff BackoffStrategy
}
// Progress returns the number of bytes uploaded at this point.
@@ -138,15 +151,6 @@ func (rx *ResumableUpload) transferChunk(ctx context.Context) (*http.Response, e
return res, nil
}
func contextDone(ctx context.Context) bool {
select {
case <-ctx.Done():
return true
default:
return false
}
}
// Upload starts the process of a resumable upload with a cancellable context.
// It retries using the provided back off strategy until cancelled or the
// strategy indicates to stop retrying.
@@ -156,61 +160,82 @@ func contextDone(ctx context.Context) bool {
// rx is private to the auto-generated API code.
// Exactly one of resp or err will be nil. If resp is non-nil, the caller must call resp.Body.Close.
func (rx *ResumableUpload) Upload(ctx context.Context) (resp *http.Response, err error) {
var pause time.Duration
backoff := rx.Backoff
if backoff == nil {
backoff = DefaultBackoffStrategy()
var shouldRetry = func(status int, err error) bool {
if 500 <= status && status <= 599 {
return true
}
if status == statusTooManyRequests {
return true
}
if err == io.ErrUnexpectedEOF {
return true
}
if err, ok := err.(interface{ Temporary() bool }); ok {
return err.Temporary()
}
return false
}
for {
// Ensure that we return in the case of cancelled context, even if pause is 0.
if contextDone(ctx) {
return nil, ctx.Err()
}
select {
case <-ctx.Done():
return nil, ctx.Err()
case <-time.After(pause):
}
resp, err = rx.transferChunk(ctx)
var status int
if resp != nil {
status = resp.StatusCode
}
// Check if we should retry the request.
if shouldRetry(status, err) {
var retry bool
pause, retry = backoff.Pause()
if retry {
if resp != nil && resp.Body != nil {
resp.Body.Close()
}
continue
}
}
// If the chunk was uploaded successfully, but there's still
// more to go, upload the next chunk without any delay.
if statusResumeIncomplete(resp) {
pause = 0
backoff.Reset()
resp.Body.Close()
continue
}
// It's possible for err and resp to both be non-nil here, but we expose a simpler
// contract to our callers: exactly one of resp and err will be non-nil. This means
// that any response body must be closed here before returning a non-nil error.
// There are a couple of cases where it's possible for err and resp to both
// be non-nil. However, we expose a simpler contract to our callers: exactly
// one of resp and err will be non-nil. This means that any response body
// must be closed here before returning a non-nil error.
var prepareReturn = func(resp *http.Response, err error) (*http.Response, error) {
if err != nil {
if resp != nil && resp.Body != nil {
resp.Body.Close()
}
return nil, err
}
return resp, nil
}
// Send all chunks.
for {
var pause time.Duration
// Each chunk gets its own initialized-at-zero retry.
bo := backoff()
quitAfter := time.After(retryDeadline)
// Retry loop for a single chunk.
for {
select {
case <-ctx.Done():
if err == nil {
err = ctx.Err()
}
return prepareReturn(resp, err)
case <-time.After(pause):
case <-quitAfter:
return prepareReturn(resp, err)
}
resp, err = rx.transferChunk(ctx)
var status int
if resp != nil {
status = resp.StatusCode
}
// Check if we should retry the request.
if !shouldRetry(status, err) {
break
}
pause = bo.Pause()
if resp != nil && resp.Body != nil {
resp.Body.Close()
}
}
// If the chunk was uploaded successfully, but there's still
// more to go, upload the next chunk without any delay.
if statusResumeIncomplete(resp) {
resp.Body.Close()
continue
}
return prepareReturn(resp, err)
}
}

View File

@@ -1,84 +0,0 @@
// Copyright 2017 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package gensupport
import (
"context"
"io"
"net"
"net/http"
"time"
)
// Retry invokes the given function, retrying it multiple times if the connection failed or
// the HTTP status response indicates the request should be attempted again. ctx may be nil.
func Retry(ctx context.Context, f func() (*http.Response, error), backoff BackoffStrategy) (*http.Response, error) {
for {
resp, err := f()
var status int
if resp != nil {
status = resp.StatusCode
}
// Return if we shouldn't retry.
pause, retry := backoff.Pause()
if !shouldRetry(status, err) || !retry {
return resp, err
}
// Ensure the response body is closed, if any.
if resp != nil && resp.Body != nil {
resp.Body.Close()
}
// Pause, but still listen to ctx.Done if context is not nil.
var done <-chan struct{}
if ctx != nil {
done = ctx.Done()
}
select {
case <-done:
return nil, ctx.Err()
case <-time.After(pause):
}
}
}
// DefaultBackoffStrategy returns a default strategy to use for retrying failed upload requests.
func DefaultBackoffStrategy() BackoffStrategy {
return &ExponentialBackoff{
Base: 250 * time.Millisecond,
Max: 16 * time.Second,
}
}
// shouldRetry returns true if the HTTP response / error indicates that the
// request should be attempted again.
func shouldRetry(status int, err error) bool {
if 500 <= status && status <= 599 {
return true
}
if status == statusTooManyRequests {
return true
}
if err == io.ErrUnexpectedEOF {
return true
}
if err, ok := err.(net.Error); ok {
return err.Temporary()
}
return false
}

View File

@@ -27,6 +27,7 @@
"description": "Reads and writes Google Sheets.",
"discoveryVersion": "v1",
"documentationLink": "https://developers.google.com/sheets/",
"fullyEncodeReservedExpansion": true,
"icons": {
"x16": "http://www.google.com/images/icons/product/search-16.gif",
"x32": "http://www.google.com/images/icons/product/search-32.gif"
@@ -808,7 +809,7 @@
}
}
},
"revision": "20190429",
"revision": "20190813",
"rootUrl": "https://sheets.googleapis.com/",
"schemas": {
"AddBandingRequest": {
@@ -1166,6 +1167,10 @@
"titleTextPosition": {
"$ref": "TextPosition",
"description": "The axis title text position."
},
"viewWindowOptions": {
"$ref": "ChartAxisViewWindowOptions",
"description": "The view window options for this axis."
}
},
"type": "object"
@@ -2243,6 +2248,39 @@
},
"type": "object"
},
"ChartAxisViewWindowOptions": {
"description": "The options that define a \"view window\" for a chart (such as the visible\nvalues in an axis).",
"id": "ChartAxisViewWindowOptions",
"properties": {
"viewWindowMax": {
"description": "The maximum numeric value to be shown in this view window. If unset, will\nautomatically determine a maximum value that looks good for the data.",
"format": "double",
"type": "number"
},
"viewWindowMin": {
"description": "The minimum numeric value to be shown in this view window. If unset, will\nautomatically determine a minimum value that looks good for the data.",
"format": "double",
"type": "number"
},
"viewWindowMode": {
"description": "The view window's mode.",
"enum": [
"DEFAULT_VIEW_WINDOW_MODE",
"VIEW_WINDOW_MODE_UNSUPPORTED",
"EXPLICIT",
"PRETTY"
],
"enumDescriptions": [
"The default view window mode used in the Sheets editor for this chart\ntype. In most cases, if set, the default mode is equivalent to\n`PRETTY`.",
"Do not use. Represents that the currently set mode is not supported by\nthe API.",
"Follows the min and max exactly if specified. If a value is unspecified,\nit will fall back to the `PRETTY` value.",
"Chooses a min and max that make the chart look good. Both min and max are\nignored in this mode."
],
"type": "string"
}
},
"type": "object"
},
"ChartData": {
"description": "The data included in a domain or series.",
"id": "ChartData",
@@ -2824,6 +2862,36 @@
},
"type": "object"
},
"DeleteDuplicatesRequest": {
"description": "Removes rows within this range that contain values in the specified columns\nthat are duplicates of values in any previous row. Rows with identical values\nbut different letter cases, formatting, or formulas are considered to be\nduplicates.\n\nThis request also removes duplicate rows hidden from view (for example, due\nto a filter). When removing duplicates, the first instance of each duplicate\nrow scanning from the top downwards is kept in the resulting range. Content\noutside of the specified range isn't removed, and rows considered duplicates\ndo not have to be adjacent to each other in the range.",
"id": "DeleteDuplicatesRequest",
"properties": {
"comparisonColumns": {
"description": "The columns in the range to analyze for duplicate values. If no columns are\nselected then all columns are analyzed for duplicates.",
"items": {
"$ref": "DimensionRange"
},
"type": "array"
},
"range": {
"$ref": "GridRange",
"description": "The range to remove duplicates rows from."
}
},
"type": "object"
},
"DeleteDuplicatesResponse": {
"description": "The result of removing duplicates in a range.",
"id": "DeleteDuplicatesResponse",
"properties": {
"duplicatesRemovedCount": {
"description": "The number of duplicate rows removed.",
"format": "int32",
"type": "integer"
}
},
"type": "object"
},
"DeleteEmbeddedObjectRequest": {
"description": "Deletes the embedded object with the given ID.",
"id": "DeleteEmbeddedObjectRequest",
@@ -4610,6 +4678,10 @@
"$ref": "DeleteDimensionGroupRequest",
"description": "Deletes a group over the specified range."
},
"deleteDuplicates": {
"$ref": "DeleteDuplicatesRequest",
"description": "Removes rows containing duplicate values in specified columns of a cell\nrange."
},
"deleteEmbeddedObject": {
"$ref": "DeleteEmbeddedObjectRequest",
"description": "Deletes an embedded object (e.g, chart, image) in a sheet."
@@ -4690,6 +4762,10 @@
"$ref": "TextToColumnsRequest",
"description": "Converts a column of text into many columns of text."
},
"trimWhitespace": {
"$ref": "TrimWhitespaceRequest",
"description": "Trims cells of whitespace (such as spaces, tabs, or new lines)."
},
"unmergeCells": {
"$ref": "UnmergeCellsRequest",
"description": "Unmerges merged cells."
@@ -4801,6 +4877,10 @@
"$ref": "DeleteDimensionGroupResponse",
"description": "A reply from deleting a dimension group."
},
"deleteDuplicates": {
"$ref": "DeleteDuplicatesResponse",
"description": "A reply from removing rows containing duplicate values."
},
"duplicateFilterView": {
"$ref": "DuplicateFilterViewResponse",
"description": "A reply from duplicating a filter view."
@@ -4813,6 +4893,10 @@
"$ref": "FindReplaceResponse",
"description": "A reply from doing a find/replace."
},
"trimWhitespace": {
"$ref": "TrimWhitespaceResponse",
"description": "A reply from trimming whitespace."
},
"updateConditionalFormatRule": {
"$ref": "UpdateConditionalFormatRuleResponse",
"description": "A reply from updating a conditional format rule."
@@ -5399,6 +5483,29 @@
},
"type": "object"
},
"TrimWhitespaceRequest": {
"description": "Trims the whitespace (such as spaces, tabs, or new lines) in every cell in\nthe specified range. This request removes all whitespace from the start and\nend of each cell's text, and reduces any subsequence of remaining whitespace\ncharacters to a single space. If the resulting trimmed text starts with a '+'\nor '=' character, the text remains as a string value and isn't interpreted\nas a formula.",
"id": "TrimWhitespaceRequest",
"properties": {
"range": {
"$ref": "GridRange",
"description": "The range whose cells to trim."
}
},
"type": "object"
},
"TrimWhitespaceResponse": {
"description": "The result of trimming whitespace in cells.",
"id": "TrimWhitespaceResponse",
"properties": {
"cellsChangedCount": {
"description": "The number of cells that were trimmed of whitespace.",
"format": "int32",
"type": "integer"
}
},
"type": "object"
},
"UnmergeCellsRequest": {
"description": "Unmerges cells in the given range.",
"id": "UnmergeCellsRequest",

View File

@@ -1025,6 +1025,9 @@ type BasicChartAxis struct {
// TitleTextPosition: The axis title text position.
TitleTextPosition *TextPosition `json:"titleTextPosition,omitempty"`
// ViewWindowOptions: The view window options for this axis.
ViewWindowOptions *ChartAxisViewWindowOptions `json:"viewWindowOptions,omitempty"`
// ForceSendFields is a list of field names (e.g. "Format") to
// unconditionally include in API requests. By default, fields with
// empty values are omitted from API requests. However, any non-pointer,
@@ -2918,6 +2921,78 @@ func (s *CellFormat) MarshalJSON() ([]byte, error) {
return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}
// ChartAxisViewWindowOptions: The options that define a "view window"
// for a chart (such as the visible
// values in an axis).
type ChartAxisViewWindowOptions struct {
// ViewWindowMax: The maximum numeric value to be shown in this view
// window. If unset, will
// automatically determine a maximum value that looks good for the data.
ViewWindowMax float64 `json:"viewWindowMax,omitempty"`
// ViewWindowMin: The minimum numeric value to be shown in this view
// window. If unset, will
// automatically determine a minimum value that looks good for the data.
ViewWindowMin float64 `json:"viewWindowMin,omitempty"`
// ViewWindowMode: The view window's mode.
//
// Possible values:
// "DEFAULT_VIEW_WINDOW_MODE" - The default view window mode used in
// the Sheets editor for this chart
// type. In most cases, if set, the default mode is equivalent
// to
// `PRETTY`.
// "VIEW_WINDOW_MODE_UNSUPPORTED" - Do not use. Represents that the
// currently set mode is not supported by
// the API.
// "EXPLICIT" - Follows the min and max exactly if specified. If a
// value is unspecified,
// it will fall back to the `PRETTY` value.
// "PRETTY" - Chooses a min and max that make the chart look good.
// Both min and max are
// ignored in this mode.
ViewWindowMode string `json:"viewWindowMode,omitempty"`
// ForceSendFields is a list of field names (e.g. "ViewWindowMax") to
// unconditionally include in API requests. By default, fields with
// empty values are omitted from API requests. However, any non-pointer,
// non-interface field appearing in ForceSendFields will be sent to the
// server regardless of whether the field is empty or not. This may be
// used to include empty fields in Patch requests.
ForceSendFields []string `json:"-"`
// NullFields is a list of field names (e.g. "ViewWindowMax") to include
// in API requests with the JSON null value. By default, fields with
// empty values are omitted from API requests. However, any field with
// an empty value appearing in NullFields will be sent to the server as
// null. It is an error if a field in this list has a non-empty value.
// This may be used to include null fields in Patch requests.
NullFields []string `json:"-"`
}
func (s *ChartAxisViewWindowOptions) MarshalJSON() ([]byte, error) {
type NoMethod ChartAxisViewWindowOptions
raw := NoMethod(*s)
return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}
func (s *ChartAxisViewWindowOptions) UnmarshalJSON(data []byte) error {
type NoMethod ChartAxisViewWindowOptions
var s1 struct {
ViewWindowMax gensupport.JSONFloat64 `json:"viewWindowMax"`
ViewWindowMin gensupport.JSONFloat64 `json:"viewWindowMin"`
*NoMethod
}
s1.NoMethod = (*NoMethod)(s)
if err := json.Unmarshal(data, &s1); err != nil {
return err
}
s.ViewWindowMax = float64(s1.ViewWindowMax)
s.ViewWindowMin = float64(s1.ViewWindowMin)
return nil
}
// ChartData: The data included in a domain or series.
type ChartData struct {
// SourceRange: The source ranges of the data.
@@ -4130,6 +4205,87 @@ func (s *DeleteDimensionRequest) MarshalJSON() ([]byte, error) {
return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}
// DeleteDuplicatesRequest: Removes rows within this range that contain
// values in the specified columns
// that are duplicates of values in any previous row. Rows with
// identical values
// but different letter cases, formatting, or formulas are considered to
// be
// duplicates.
//
// This request also removes duplicate rows hidden from view (for
// example, due
// to a filter). When removing duplicates, the first instance of each
// duplicate
// row scanning from the top downwards is kept in the resulting range.
// Content
// outside of the specified range isn't removed, and rows considered
// duplicates
// do not have to be adjacent to each other in the range.
type DeleteDuplicatesRequest struct {
// ComparisonColumns: The columns in the range to analyze for duplicate
// values. If no columns are
// selected then all columns are analyzed for duplicates.
ComparisonColumns []*DimensionRange `json:"comparisonColumns,omitempty"`
// Range: The range to remove duplicates rows from.
Range *GridRange `json:"range,omitempty"`
// ForceSendFields is a list of field names (e.g. "ComparisonColumns")
// to unconditionally include in API requests. By default, fields with
// empty values are omitted from API requests. However, any non-pointer,
// non-interface field appearing in ForceSendFields will be sent to the
// server regardless of whether the field is empty or not. This may be
// used to include empty fields in Patch requests.
ForceSendFields []string `json:"-"`
// NullFields is a list of field names (e.g. "ComparisonColumns") to
// include in API requests with the JSON null value. By default, fields
// with empty values are omitted from API requests. However, any field
// with an empty value appearing in NullFields will be sent to the
// server as null. It is an error if a field in this list has a
// non-empty value. This may be used to include null fields in Patch
// requests.
NullFields []string `json:"-"`
}
func (s *DeleteDuplicatesRequest) MarshalJSON() ([]byte, error) {
type NoMethod DeleteDuplicatesRequest
raw := NoMethod(*s)
return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}
// DeleteDuplicatesResponse: The result of removing duplicates in a
// range.
type DeleteDuplicatesResponse struct {
// DuplicatesRemovedCount: The number of duplicate rows removed.
DuplicatesRemovedCount int64 `json:"duplicatesRemovedCount,omitempty"`
// ForceSendFields is a list of field names (e.g.
// "DuplicatesRemovedCount") to unconditionally include in API requests.
// By default, fields with empty values are omitted from API requests.
// However, any non-pointer, non-interface field appearing in
// ForceSendFields will be sent to the server regardless of whether the
// field is empty or not. This may be used to include empty fields in
// Patch requests.
ForceSendFields []string `json:"-"`
// NullFields is a list of field names (e.g. "DuplicatesRemovedCount")
// to include in API requests with the JSON null value. By default,
// fields with empty values are omitted from API requests. However, any
// field with an empty value appearing in NullFields will be sent to the
// server as null. It is an error if a field in this list has a
// non-empty value. This may be used to include null fields in Patch
// requests.
NullFields []string `json:"-"`
}
func (s *DeleteDuplicatesResponse) MarshalJSON() ([]byte, error) {
type NoMethod DeleteDuplicatesResponse
raw := NoMethod(*s)
return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}
// DeleteEmbeddedObjectRequest: Deletes the embedded object with the
// given ID.
type DeleteEmbeddedObjectRequest struct {
@@ -7320,6 +7476,11 @@ type Request struct {
// DeleteDimensionGroup: Deletes a group over the specified range.
DeleteDimensionGroup *DeleteDimensionGroupRequest `json:"deleteDimensionGroup,omitempty"`
// DeleteDuplicates: Removes rows containing duplicate values in
// specified columns of a cell
// range.
DeleteDuplicates *DeleteDuplicatesRequest `json:"deleteDuplicates,omitempty"`
// DeleteEmbeddedObject: Deletes an embedded object (e.g, chart, image)
// in a sheet.
DeleteEmbeddedObject *DeleteEmbeddedObjectRequest `json:"deleteEmbeddedObject,omitempty"`
@@ -7384,6 +7545,10 @@ type Request struct {
// TextToColumns: Converts a column of text into many columns of text.
TextToColumns *TextToColumnsRequest `json:"textToColumns,omitempty"`
// TrimWhitespace: Trims cells of whitespace (such as spaces, tabs, or
// new lines).
TrimWhitespace *TrimWhitespaceRequest `json:"trimWhitespace,omitempty"`
// UnmergeCells: Unmerges merged cells.
UnmergeCells *UnmergeCellsRequest `json:"unmergeCells,omitempty"`
@@ -7492,6 +7657,10 @@ type Response struct {
// DeleteDimensionGroup: A reply from deleting a dimension group.
DeleteDimensionGroup *DeleteDimensionGroupResponse `json:"deleteDimensionGroup,omitempty"`
// DeleteDuplicates: A reply from removing rows containing duplicate
// values.
DeleteDuplicates *DeleteDuplicatesResponse `json:"deleteDuplicates,omitempty"`
// DuplicateFilterView: A reply from duplicating a filter view.
DuplicateFilterView *DuplicateFilterViewResponse `json:"duplicateFilterView,omitempty"`
@@ -7501,6 +7670,9 @@ type Response struct {
// FindReplace: A reply from doing a find/replace.
FindReplace *FindReplaceResponse `json:"findReplace,omitempty"`
// TrimWhitespace: A reply from trimming whitespace.
TrimWhitespace *TrimWhitespaceResponse `json:"trimWhitespace,omitempty"`
// UpdateConditionalFormatRule: A reply from updating a conditional
// format rule.
UpdateConditionalFormatRule *UpdateConditionalFormatRuleResponse `json:"updateConditionalFormatRule,omitempty"`
@@ -8494,6 +8666,74 @@ func (s *TreemapChartSpec) UnmarshalJSON(data []byte) error {
return nil
}
// TrimWhitespaceRequest: Trims the whitespace (such as spaces, tabs, or
// new lines) in every cell in
// the specified range. This request removes all whitespace from the
// start and
// end of each cell's text, and reduces any subsequence of remaining
// whitespace
// characters to a single space. If the resulting trimmed text starts
// with a '+'
// or '=' character, the text remains as a string value and isn't
// interpreted
// as a formula.
type TrimWhitespaceRequest struct {
// Range: The range whose cells to trim.
Range *GridRange `json:"range,omitempty"`
// ForceSendFields is a list of field names (e.g. "Range") to
// unconditionally include in API requests. By default, fields with
// empty values are omitted from API requests. However, any non-pointer,
// non-interface field appearing in ForceSendFields will be sent to the
// server regardless of whether the field is empty or not. This may be
// used to include empty fields in Patch requests.
ForceSendFields []string `json:"-"`
// NullFields is a list of field names (e.g. "Range") to include in API
// requests with the JSON null value. By default, fields with empty
// values are omitted from API requests. However, any field with an
// empty value appearing in NullFields will be sent to the server as
// null. It is an error if a field in this list has a non-empty value.
// This may be used to include null fields in Patch requests.
NullFields []string `json:"-"`
}
func (s *TrimWhitespaceRequest) MarshalJSON() ([]byte, error) {
type NoMethod TrimWhitespaceRequest
raw := NoMethod(*s)
return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}
// TrimWhitespaceResponse: The result of trimming whitespace in cells.
type TrimWhitespaceResponse struct {
// CellsChangedCount: The number of cells that were trimmed of
// whitespace.
CellsChangedCount int64 `json:"cellsChangedCount,omitempty"`
// ForceSendFields is a list of field names (e.g. "CellsChangedCount")
// to unconditionally include in API requests. By default, fields with
// empty values are omitted from API requests. However, any non-pointer,
// non-interface field appearing in ForceSendFields will be sent to the
// server regardless of whether the field is empty or not. This may be
// used to include empty fields in Patch requests.
ForceSendFields []string `json:"-"`
// NullFields is a list of field names (e.g. "CellsChangedCount") to
// include in API requests with the JSON null value. By default, fields
// with empty values are omitted from API requests. However, any field
// with an empty value appearing in NullFields will be sent to the
// server as null. It is an error if a field in this list has a
// non-empty value. This may be used to include null fields in Patch
// requests.
NullFields []string `json:"-"`
}
func (s *TrimWhitespaceResponse) MarshalJSON() ([]byte, error) {
type NoMethod TrimWhitespaceResponse
raw := NoMethod(*s)
return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}
// UnmergeCellsRequest: Unmerges cells in the given range.
type UnmergeCellsRequest struct {
// Range: The range within which all cells should be unmerged.
@@ -9670,6 +9910,7 @@ func (c *SpreadsheetsBatchUpdateCall) Header() http.Header {
func (c *SpreadsheetsBatchUpdateCall) doRequest(alt string) (*http.Response, error) {
reqHeaders := make(http.Header)
reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190802")
for k, v := range c.header_ {
reqHeaders[k] = v
}
@@ -9809,6 +10050,7 @@ func (c *SpreadsheetsCreateCall) Header() http.Header {
func (c *SpreadsheetsCreateCall) doRequest(alt string) (*http.Response, error) {
reqHeaders := make(http.Header)
reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190802")
for k, v := range c.header_ {
reqHeaders[k] = v
}
@@ -9985,6 +10227,7 @@ func (c *SpreadsheetsGetCall) Header() http.Header {
func (c *SpreadsheetsGetCall) doRequest(alt string) (*http.Response, error) {
reqHeaders := make(http.Header)
reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190802")
for k, v := range c.header_ {
reqHeaders[k] = v
}
@@ -10160,6 +10403,7 @@ func (c *SpreadsheetsGetByDataFilterCall) Header() http.Header {
func (c *SpreadsheetsGetByDataFilterCall) doRequest(alt string) (*http.Response, error) {
reqHeaders := make(http.Header)
reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190802")
for k, v := range c.header_ {
reqHeaders[k] = v
}
@@ -10314,6 +10558,7 @@ func (c *SpreadsheetsDeveloperMetadataGetCall) Header() http.Header {
func (c *SpreadsheetsDeveloperMetadataGetCall) doRequest(alt string) (*http.Response, error) {
reqHeaders := make(http.Header)
reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190802")
for k, v := range c.header_ {
reqHeaders[k] = v
}
@@ -10467,6 +10712,7 @@ func (c *SpreadsheetsDeveloperMetadataSearchCall) Header() http.Header {
func (c *SpreadsheetsDeveloperMetadataSearchCall) doRequest(alt string) (*http.Response, error) {
reqHeaders := make(http.Header)
reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190802")
for k, v := range c.header_ {
reqHeaders[k] = v
}
@@ -10611,6 +10857,7 @@ func (c *SpreadsheetsSheetsCopyToCall) Header() http.Header {
func (c *SpreadsheetsSheetsCopyToCall) doRequest(alt string) (*http.Response, error) {
reqHeaders := make(http.Header)
reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190802")
for k, v := range c.header_ {
reqHeaders[k] = v
}
@@ -10846,6 +11093,7 @@ func (c *SpreadsheetsValuesAppendCall) Header() http.Header {
func (c *SpreadsheetsValuesAppendCall) doRequest(alt string) (*http.Response, error) {
reqHeaders := make(http.Header)
reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190802")
for k, v := range c.header_ {
reqHeaders[k] = v
}
@@ -11043,6 +11291,7 @@ func (c *SpreadsheetsValuesBatchClearCall) Header() http.Header {
func (c *SpreadsheetsValuesBatchClearCall) doRequest(alt string) (*http.Response, error) {
reqHeaders := make(http.Header)
reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190802")
for k, v := range c.header_ {
reqHeaders[k] = v
}
@@ -11190,6 +11439,7 @@ func (c *SpreadsheetsValuesBatchClearByDataFilterCall) Header() http.Header {
func (c *SpreadsheetsValuesBatchClearByDataFilterCall) doRequest(alt string) (*http.Response, error) {
reqHeaders := make(http.Header)
reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190802")
for k, v := range c.header_ {
reqHeaders[k] = v
}
@@ -11398,6 +11648,7 @@ func (c *SpreadsheetsValuesBatchGetCall) Header() http.Header {
func (c *SpreadsheetsValuesBatchGetCall) doRequest(alt string) (*http.Response, error) {
reqHeaders := make(http.Header)
reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190802")
for k, v := range c.header_ {
reqHeaders[k] = v
}
@@ -11575,6 +11826,7 @@ func (c *SpreadsheetsValuesBatchGetByDataFilterCall) Header() http.Header {
func (c *SpreadsheetsValuesBatchGetByDataFilterCall) doRequest(alt string) (*http.Response, error) {
reqHeaders := make(http.Header)
reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190802")
for k, v := range c.header_ {
reqHeaders[k] = v
}
@@ -11719,6 +11971,7 @@ func (c *SpreadsheetsValuesBatchUpdateCall) Header() http.Header {
func (c *SpreadsheetsValuesBatchUpdateCall) doRequest(alt string) (*http.Response, error) {
reqHeaders := make(http.Header)
reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190802")
for k, v := range c.header_ {
reqHeaders[k] = v
}
@@ -11863,6 +12116,7 @@ func (c *SpreadsheetsValuesBatchUpdateByDataFilterCall) Header() http.Header {
func (c *SpreadsheetsValuesBatchUpdateByDataFilterCall) doRequest(alt string) (*http.Response, error) {
reqHeaders := make(http.Header)
reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190802")
for k, v := range c.header_ {
reqHeaders[k] = v
}
@@ -12010,6 +12264,7 @@ func (c *SpreadsheetsValuesClearCall) Header() http.Header {
func (c *SpreadsheetsValuesClearCall) doRequest(alt string) (*http.Response, error) {
reqHeaders := make(http.Header)
reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190802")
for k, v := range c.header_ {
reqHeaders[k] = v
}
@@ -12219,6 +12474,7 @@ func (c *SpreadsheetsValuesGetCall) Header() http.Header {
func (c *SpreadsheetsValuesGetCall) doRequest(alt string) (*http.Response, error) {
reqHeaders := make(http.Header)
reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190802")
for k, v := range c.header_ {
reqHeaders[k] = v
}
@@ -12456,6 +12712,7 @@ func (c *SpreadsheetsValuesUpdateCall) Header() http.Header {
func (c *SpreadsheetsValuesUpdateCall) doRequest(alt string) (*http.Response, error) {
reqHeaders := make(http.Header)
reqHeaders.Set("x-goog-api-client", "gl-go/1.11.0 gdcl/20190802")
for k, v := range c.header_ {
reqHeaders[k] = v
}