<html><body>
<style>

body, h1, h2, h3, div, span, p, pre, a {
  margin: 0;
  padding: 0;
  border: 0;
  font-weight: inherit;
  font-style: inherit;
  font-size: 100%;
  font-family: inherit;
  vertical-align: baseline;
}

body {
  font-size: 13px;
  padding: 1em;
}

h1 {
  font-size: 26px;
  margin-bottom: 1em;
}

h2 {
  font-size: 24px;
  margin-bottom: 1em;
}

h3 {
  font-size: 20px;
  margin-bottom: 1em;
  margin-top: 1em;
}

pre, code {
  line-height: 1.5;
  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
}

pre {
  margin-top: 0.5em;
}

h1, h2, h3, p {
  font-family: Arial, sans serif;
}

h1, h2, h3 {
  border-bottom: solid #CCC 1px;
}

.toc_element {
  margin-top: 0.5em;
}

.firstline {
  margin-left: 2 em;
}

.method  {
  margin-top: 1em;
  border: solid 1px #CCC;
  padding: 1em;
  background: #EEE;
}

.details {
  font-weight: bold;
  font-size: 14px;
}

</style>

<h1><a href="fusiontables_v2.html">Fusion Tables API</a> . <a href="fusiontables_v2.table.html">table</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#copy">copy(tableId, copyPresentation=None)</a></code></p>
<p class="firstline">Copies a table.</p>
<p class="toc_element">
  <code><a href="#delete">delete(tableId)</a></code></p>
<p class="firstline">Deletes a table.</p>
<p class="toc_element">
  <code><a href="#get">get(tableId)</a></code></p>
<p class="firstline">Retrieves a specific table by its ID.</p>
<p class="toc_element">
  <code><a href="#importRows">importRows(tableId, media_body=None, startLine=None, isStrict=None, encoding=None, media_mime_type=None, delimiter=None, endLine=None)</a></code></p>
<p class="firstline">Imports more rows into a table.</p>
<p class="toc_element">
  <code><a href="#importTable">importTable(name, media_body=None, encoding=None, delimiter=None, media_mime_type=None)</a></code></p>
<p class="firstline">Imports a new table.</p>
<p class="toc_element">
  <code><a href="#insert">insert(body)</a></code></p>
<p class="firstline">Creates a new table.</p>
<p class="toc_element">
  <code><a href="#list">list(pageToken=None, maxResults=None)</a></code></p>
<p class="firstline">Retrieves a list of tables a user owns.</p>
<p class="toc_element">
  <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
<p class="firstline">Retrieves the next page of results.</p>
<p class="toc_element">
  <code><a href="#patch">patch(tableId, body, replaceViewDefinition=None)</a></code></p>
<p class="firstline">Updates an existing table. Unless explicitly requested, only the name, description, and attribution will be updated. This method supports patch semantics.</p>
<p class="toc_element">
  <code><a href="#refetchSheet">refetchSheet(tableId)</a></code></p>
<p class="firstline">Replaces rows of the table with the rows of the spreadsheet that is first imported from. Current rows remain visible until all replacement rows are ready.</p>
<p class="toc_element">
  <code><a href="#replaceRows">replaceRows(tableId, media_body=None, startLine=None, isStrict=None, encoding=None, media_mime_type=None, delimiter=None, endLine=None)</a></code></p>
<p class="firstline">Replaces rows of an existing table. Current rows remain visible until all replacement rows are ready.</p>
<p class="toc_element">
  <code><a href="#update">update(tableId, body, replaceViewDefinition=None)</a></code></p>
<p class="firstline">Updates an existing table. Unless explicitly requested, only the name, description, and attribution will be updated.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="copy">copy(tableId, copyPresentation=None)</code>
  <pre>Copies a table.

Args:
  tableId: string, ID of the table that is being copied. (required)
  copyPresentation: boolean, Whether to also copy tabs, styles, and templates. Default is false.

Returns:
  An object of the form:

    { # Represents a table.
      "tablePropertiesJsonSchema": "A String", # JSON schema for validating the JSON table properties.
      "kind": "fusiontables#table", # The kind of item this is. For a table, this is always fusiontables#table.
      "attribution": "A String", # Attribution assigned to the table.
      "description": "A String", # Description assigned to the table.
      "columnPropertiesJsonSchema": "A String", # Default JSON schema for validating all JSON column properties.
      "isExportable": True or False, # Variable for whether table is exportable.
      "baseTableIds": [ # Base table identifier if this table is a view or merged table.
        "A String",
      ],
      "tablePropertiesJson": "A String", # JSON object containing custom table properties.
      "attributionLink": "A String", # Optional link for attribution.
      "sql": "A String", # SQL that encodes the table definition for derived tables.
      "tableId": "A String", # Encrypted unique alphanumeric identifier for the table.
      "columns": [ # Columns in the table.
        { # Specifies the details of a column in a table.
            "graphPredicate": "A String", # Column graph predicate.
                # Used to map table to graph data model (subject,predicate,object)
                # See W3C Graph-based Data Model.
            "kind": "fusiontables#column", # The kind of item this is. For a column, this is always fusiontables#column.
            "validValues": [ # List of valid values used to validate data and supply a drop-down list of values in the web application.
              "A String",
            ],
            "description": "A String", # Column description.
            "baseColumn": { # Identifier of the base column. If present, this column is derived from the specified base column.
              "tableIndex": 42, # Offset to the entry in the list of base tables in the table definition.
              "columnId": 42, # The id of the column in the base table from which this column is derived.
            },
            "name": "A String", # Name of the column.
            "columnPropertiesJson": "A String", # JSON object containing custom column properties.
            "formatPattern": "A String", # Format pattern.
                # Acceptable values are DT_DATE_MEDIUMe.g Dec 24, 2008 DT_DATE_SHORTfor example 12/24/08 DT_DATE_TIME_MEDIUMfor example Dec 24, 2008 8:30:45 PM DT_DATE_TIME_SHORTfor example 12/24/08 8:30 PM DT_DAY_MONTH_2_DIGIT_YEARfor example 24/12/08 DT_DAY_MONTH_2_DIGIT_YEAR_TIMEfor example 24/12/08 20:30 DT_DAY_MONTH_2_DIGIT_YEAR_TIME_MERIDIANfor example 24/12/08 8:30 PM DT_DAY_MONTH_4_DIGIT_YEARfor example 24/12/2008 DT_DAY_MONTH_4_DIGIT_YEAR_TIMEfor example 24/12/2008 20:30 DT_DAY_MONTH_4_DIGIT_YEAR_TIME_MERIDIANfor example 24/12/2008 8:30 PM DT_ISO_YEAR_MONTH_DAYfor example 2008-12-24 DT_ISO_YEAR_MONTH_DAY_TIMEfor example 2008-12-24 20:30:45 DT_MONTH_DAY_4_DIGIT_YEARfor example 12/24/2008 DT_TIME_LONGfor example 8:30:45 PM UTC-6 DT_TIME_MEDIUMfor example 8:30:45 PM DT_TIME_SHORTfor example 8:30 PM DT_YEAR_ONLYfor example 2008 HIGHLIGHT_UNTYPED_CELLSHighlight cell data that does not match the data type NONENo formatting (default) NUMBER_CURRENCYfor example $1234.56 NUMBER_DEFAULTfor example 1,234.56 NUMBER_INTEGERfor example 1235 NUMBER_NO_SEPARATORfor example 1234.56 NUMBER_PERCENTfor example 123,456% NUMBER_SCIENTIFICfor example 1E3 STRING_EIGHT_LINE_IMAGEDisplays thumbnail images as tall as eight lines of text STRING_FOUR_LINE_IMAGEDisplays thumbnail images as tall as four lines of text STRING_JSON_TEXTAllows editing of text as JSON in UI STRING_JSON_LISTAllows editing of text as a JSON list in UI STRING_LINKTreats cell as a link (must start with http:// or https://) STRING_ONE_LINE_IMAGEDisplays thumbnail images as tall as one line of text STRING_VIDEO_OR_MAPDisplay a video or map thumbnail
            "columnJsonSchema": "A String", # JSON schema for interpreting JSON in this column.
            "type": "A String", # Type of the column.
            "validateData": True or False, # If true, data entered via the web application is validated.
            "columnId": 42, # Identifier for the column.
          },
      ],
      "name": "A String", # Name assigned to a table.
    }</pre>
</div>

<div class="method">
    <code class="details" id="delete">delete(tableId)</code>
  <pre>Deletes a table.

Args:
  tableId: string, ID of the table to be deleted. (required)
</pre>
</div>

<div class="method">
    <code class="details" id="get">get(tableId)</code>
  <pre>Retrieves a specific table by its ID.

Args:
  tableId: string, Identifier for the table being requested. (required)

Returns:
  An object of the form:

    { # Represents a table.
      "tablePropertiesJsonSchema": "A String", # JSON schema for validating the JSON table properties.
      "kind": "fusiontables#table", # The kind of item this is. For a table, this is always fusiontables#table.
      "attribution": "A String", # Attribution assigned to the table.
      "description": "A String", # Description assigned to the table.
      "columnPropertiesJsonSchema": "A String", # Default JSON schema for validating all JSON column properties.
      "isExportable": True or False, # Variable for whether table is exportable.
      "baseTableIds": [ # Base table identifier if this table is a view or merged table.
        "A String",
      ],
      "tablePropertiesJson": "A String", # JSON object containing custom table properties.
      "attributionLink": "A String", # Optional link for attribution.
      "sql": "A String", # SQL that encodes the table definition for derived tables.
      "tableId": "A String", # Encrypted unique alphanumeric identifier for the table.
      "columns": [ # Columns in the table.
        { # Specifies the details of a column in a table.
            "graphPredicate": "A String", # Column graph predicate.
                # Used to map table to graph data model (subject,predicate,object)
                # See W3C Graph-based Data Model.
            "kind": "fusiontables#column", # The kind of item this is. For a column, this is always fusiontables#column.
            "validValues": [ # List of valid values used to validate data and supply a drop-down list of values in the web application.
              "A String",
            ],
            "description": "A String", # Column description.
            "baseColumn": { # Identifier of the base column. If present, this column is derived from the specified base column.
              "tableIndex": 42, # Offset to the entry in the list of base tables in the table definition.
              "columnId": 42, # The id of the column in the base table from which this column is derived.
            },
            "name": "A String", # Name of the column.
            "columnPropertiesJson": "A String", # JSON object containing custom column properties.
            "formatPattern": "A String", # Format pattern.
                # Acceptable values are DT_DATE_MEDIUMe.g Dec 24, 2008 DT_DATE_SHORTfor example 12/24/08 DT_DATE_TIME_MEDIUMfor example Dec 24, 2008 8:30:45 PM DT_DATE_TIME_SHORTfor example 12/24/08 8:30 PM DT_DAY_MONTH_2_DIGIT_YEARfor example 24/12/08 DT_DAY_MONTH_2_DIGIT_YEAR_TIMEfor example 24/12/08 20:30 DT_DAY_MONTH_2_DIGIT_YEAR_TIME_MERIDIANfor example 24/12/08 8:30 PM DT_DAY_MONTH_4_DIGIT_YEARfor example 24/12/2008 DT_DAY_MONTH_4_DIGIT_YEAR_TIMEfor example 24/12/2008 20:30 DT_DAY_MONTH_4_DIGIT_YEAR_TIME_MERIDIANfor example 24/12/2008 8:30 PM DT_ISO_YEAR_MONTH_DAYfor example 2008-12-24 DT_ISO_YEAR_MONTH_DAY_TIMEfor example 2008-12-24 20:30:45 DT_MONTH_DAY_4_DIGIT_YEARfor example 12/24/2008 DT_TIME_LONGfor example 8:30:45 PM UTC-6 DT_TIME_MEDIUMfor example 8:30:45 PM DT_TIME_SHORTfor example 8:30 PM DT_YEAR_ONLYfor example 2008 HIGHLIGHT_UNTYPED_CELLSHighlight cell data that does not match the data type NONENo formatting (default) NUMBER_CURRENCYfor example $1234.56 NUMBER_DEFAULTfor example 1,234.56 NUMBER_INTEGERfor example 1235 NUMBER_NO_SEPARATORfor example 1234.56 NUMBER_PERCENTfor example 123,456% NUMBER_SCIENTIFICfor example 1E3 STRING_EIGHT_LINE_IMAGEDisplays thumbnail images as tall as eight lines of text STRING_FOUR_LINE_IMAGEDisplays thumbnail images as tall as four lines of text STRING_JSON_TEXTAllows editing of text as JSON in UI STRING_JSON_LISTAllows editing of text as a JSON list in UI STRING_LINKTreats cell as a link (must start with http:// or https://) STRING_ONE_LINE_IMAGEDisplays thumbnail images as tall as one line of text STRING_VIDEO_OR_MAPDisplay a video or map thumbnail
            "columnJsonSchema": "A String", # JSON schema for interpreting JSON in this column.
            "type": "A String", # Type of the column.
            "validateData": True or False, # If true, data entered via the web application is validated.
            "columnId": 42, # Identifier for the column.
          },
      ],
      "name": "A String", # Name assigned to a table.
    }</pre>
</div>

<div class="method">
    <code class="details" id="importRows">importRows(tableId, media_body=None, startLine=None, isStrict=None, encoding=None, media_mime_type=None, delimiter=None, endLine=None)</code>
  <pre>Imports more rows into a table.

Args:
  tableId: string, The table into which new rows are being imported. (required)
  media_body: string, The filename of the media request body, or an instance of a MediaUpload object.
  startLine: integer, The index of the first line from which to start importing, inclusive. Default is 0.
  isStrict: boolean, Whether the imported CSV must have the same number of values for each row. If false, rows with fewer values will be padded with empty values. Default is true.
  encoding: string, The encoding of the content. Default is UTF-8. Use auto-detect if you are unsure of the encoding.
  media_mime_type: string, The MIME type of the media request body, or an instance of a MediaUpload object.
  delimiter: string, The delimiter used to separate cell values. This can only consist of a single character. Default is ,.
  endLine: integer, The index of the line up to which data will be imported. Default is to import the entire file. If endLine is negative, it is an offset from the end of the file; the imported content will exclude the last endLine lines.

Returns:
  An object of the form:

    { # Represents an import request.
    "numRowsReceived": "A String", # The number of rows received from the import request.
    "kind": "fusiontables#import", # The kind of item this is. For an import, this is always fusiontables#import.
  }</pre>
</div>

<div class="method">
    <code class="details" id="importTable">importTable(name, media_body=None, encoding=None, delimiter=None, media_mime_type=None)</code>
  <pre>Imports a new table.

Args:
  name: string, The name to be assigned to the new table. (required)
  media_body: string, The filename of the media request body, or an instance of a MediaUpload object.
  encoding: string, The encoding of the content. Default is UTF-8. Use auto-detect if you are unsure of the encoding.
  delimiter: string, The delimiter used to separate cell values. This can only consist of a single character. Default is ,.
  media_mime_type: string, The MIME type of the media request body, or an instance of a MediaUpload object.

Returns:
  An object of the form:

    { # Represents a table.
      "tablePropertiesJsonSchema": "A String", # JSON schema for validating the JSON table properties.
      "kind": "fusiontables#table", # The kind of item this is. For a table, this is always fusiontables#table.
      "attribution": "A String", # Attribution assigned to the table.
      "description": "A String", # Description assigned to the table.
      "columnPropertiesJsonSchema": "A String", # Default JSON schema for validating all JSON column properties.
      "isExportable": True or False, # Variable for whether table is exportable.
      "baseTableIds": [ # Base table identifier if this table is a view or merged table.
        "A String",
      ],
      "tablePropertiesJson": "A String", # JSON object containing custom table properties.
      "attributionLink": "A String", # Optional link for attribution.
      "sql": "A String", # SQL that encodes the table definition for derived tables.
      "tableId": "A String", # Encrypted unique alphanumeric identifier for the table.
      "columns": [ # Columns in the table.
        { # Specifies the details of a column in a table.
            "graphPredicate": "A String", # Column graph predicate.
                # Used to map table to graph data model (subject,predicate,object)
                # See W3C Graph-based Data Model.
            "kind": "fusiontables#column", # The kind of item this is. For a column, this is always fusiontables#column.
            "validValues": [ # List of valid values used to validate data and supply a drop-down list of values in the web application.
              "A String",
            ],
            "description": "A String", # Column description.
            "baseColumn": { # Identifier of the base column. If present, this column is derived from the specified base column.
              "tableIndex": 42, # Offset to the entry in the list of base tables in the table definition.
              "columnId": 42, # The id of the column in the base table from which this column is derived.
            },
            "name": "A String", # Name of the column.
            "columnPropertiesJson": "A String", # JSON object containing custom column properties.
            "formatPattern": "A String", # Format pattern.
                # Acceptable values are DT_DATE_MEDIUMe.g Dec 24, 2008 DT_DATE_SHORTfor example 12/24/08 DT_DATE_TIME_MEDIUMfor example Dec 24, 2008 8:30:45 PM DT_DATE_TIME_SHORTfor example 12/24/08 8:30 PM DT_DAY_MONTH_2_DIGIT_YEARfor example 24/12/08 DT_DAY_MONTH_2_DIGIT_YEAR_TIMEfor example 24/12/08 20:30 DT_DAY_MONTH_2_DIGIT_YEAR_TIME_MERIDIANfor example 24/12/08 8:30 PM DT_DAY_MONTH_4_DIGIT_YEARfor example 24/12/2008 DT_DAY_MONTH_4_DIGIT_YEAR_TIMEfor example 24/12/2008 20:30 DT_DAY_MONTH_4_DIGIT_YEAR_TIME_MERIDIANfor example 24/12/2008 8:30 PM DT_ISO_YEAR_MONTH_DAYfor example 2008-12-24 DT_ISO_YEAR_MONTH_DAY_TIMEfor example 2008-12-24 20:30:45 DT_MONTH_DAY_4_DIGIT_YEARfor example 12/24/2008 DT_TIME_LONGfor example 8:30:45 PM UTC-6 DT_TIME_MEDIUMfor example 8:30:45 PM DT_TIME_SHORTfor example 8:30 PM DT_YEAR_ONLYfor example 2008 HIGHLIGHT_UNTYPED_CELLSHighlight cell data that does not match the data type NONENo formatting (default) NUMBER_CURRENCYfor example $1234.56 NUMBER_DEFAULTfor example 1,234.56 NUMBER_INTEGERfor example 1235 NUMBER_NO_SEPARATORfor example 1234.56 NUMBER_PERCENTfor example 123,456% NUMBER_SCIENTIFICfor example 1E3 STRING_EIGHT_LINE_IMAGEDisplays thumbnail images as tall as eight lines of text STRING_FOUR_LINE_IMAGEDisplays thumbnail images as tall as four lines of text STRING_JSON_TEXTAllows editing of text as JSON in UI STRING_JSON_LISTAllows editing of text as a JSON list in UI STRING_LINKTreats cell as a link (must start with http:// or https://) STRING_ONE_LINE_IMAGEDisplays thumbnail images as tall as one line of text STRING_VIDEO_OR_MAPDisplay a video or map thumbnail
            "columnJsonSchema": "A String", # JSON schema for interpreting JSON in this column.
            "type": "A String", # Type of the column.
            "validateData": True or False, # If true, data entered via the web application is validated.
            "columnId": 42, # Identifier for the column.
          },
      ],
      "name": "A String", # Name assigned to a table.
    }</pre>
</div>

<div class="method">
    <code class="details" id="insert">insert(body)</code>
  <pre>Creates a new table.

Args:
  body: object, The request body. (required)
    The object takes the form of:

{ # Represents a table.
    "tablePropertiesJsonSchema": "A String", # JSON schema for validating the JSON table properties.
    "kind": "fusiontables#table", # The kind of item this is. For a table, this is always fusiontables#table.
    "attribution": "A String", # Attribution assigned to the table.
    "description": "A String", # Description assigned to the table.
    "columnPropertiesJsonSchema": "A String", # Default JSON schema for validating all JSON column properties.
    "isExportable": True or False, # Variable for whether table is exportable.
    "baseTableIds": [ # Base table identifier if this table is a view or merged table.
      "A String",
    ],
    "tablePropertiesJson": "A String", # JSON object containing custom table properties.
    "attributionLink": "A String", # Optional link for attribution.
    "sql": "A String", # SQL that encodes the table definition for derived tables.
    "tableId": "A String", # Encrypted unique alphanumeric identifier for the table.
    "columns": [ # Columns in the table.
      { # Specifies the details of a column in a table.
          "graphPredicate": "A String", # Column graph predicate.
              # Used to map table to graph data model (subject,predicate,object)
              # See W3C Graph-based Data Model.
          "kind": "fusiontables#column", # The kind of item this is. For a column, this is always fusiontables#column.
          "validValues": [ # List of valid values used to validate data and supply a drop-down list of values in the web application.
            "A String",
          ],
          "description": "A String", # Column description.
          "baseColumn": { # Identifier of the base column. If present, this column is derived from the specified base column.
            "tableIndex": 42, # Offset to the entry in the list of base tables in the table definition.
            "columnId": 42, # The id of the column in the base table from which this column is derived.
          },
          "name": "A String", # Name of the column.
          "columnPropertiesJson": "A String", # JSON object containing custom column properties.
          "formatPattern": "A String", # Format pattern.
              # Acceptable values are DT_DATE_MEDIUMe.g Dec 24, 2008 DT_DATE_SHORTfor example 12/24/08 DT_DATE_TIME_MEDIUMfor example Dec 24, 2008 8:30:45 PM DT_DATE_TIME_SHORTfor example 12/24/08 8:30 PM DT_DAY_MONTH_2_DIGIT_YEARfor example 24/12/08 DT_DAY_MONTH_2_DIGIT_YEAR_TIMEfor example 24/12/08 20:30 DT_DAY_MONTH_2_DIGIT_YEAR_TIME_MERIDIANfor example 24/12/08 8:30 PM DT_DAY_MONTH_4_DIGIT_YEARfor example 24/12/2008 DT_DAY_MONTH_4_DIGIT_YEAR_TIMEfor example 24/12/2008 20:30 DT_DAY_MONTH_4_DIGIT_YEAR_TIME_MERIDIANfor example 24/12/2008 8:30 PM DT_ISO_YEAR_MONTH_DAYfor example 2008-12-24 DT_ISO_YEAR_MONTH_DAY_TIMEfor example 2008-12-24 20:30:45 DT_MONTH_DAY_4_DIGIT_YEARfor example 12/24/2008 DT_TIME_LONGfor example 8:30:45 PM UTC-6 DT_TIME_MEDIUMfor example 8:30:45 PM DT_TIME_SHORTfor example 8:30 PM DT_YEAR_ONLYfor example 2008 HIGHLIGHT_UNTYPED_CELLSHighlight cell data that does not match the data type NONENo formatting (default) NUMBER_CURRENCYfor example $1234.56 NUMBER_DEFAULTfor example 1,234.56 NUMBER_INTEGERfor example 1235 NUMBER_NO_SEPARATORfor example 1234.56 NUMBER_PERCENTfor example 123,456% NUMBER_SCIENTIFICfor example 1E3 STRING_EIGHT_LINE_IMAGEDisplays thumbnail images as tall as eight lines of text STRING_FOUR_LINE_IMAGEDisplays thumbnail images as tall as four lines of text STRING_JSON_TEXTAllows editing of text as JSON in UI STRING_JSON_LISTAllows editing of text as a JSON list in UI STRING_LINKTreats cell as a link (must start with http:// or https://) STRING_ONE_LINE_IMAGEDisplays thumbnail images as tall as one line of text STRING_VIDEO_OR_MAPDisplay a video or map thumbnail
          "columnJsonSchema": "A String", # JSON schema for interpreting JSON in this column.
          "type": "A String", # Type of the column.
          "validateData": True or False, # If true, data entered via the web application is validated.
          "columnId": 42, # Identifier for the column.
        },
    ],
    "name": "A String", # Name assigned to a table.
  }


Returns:
  An object of the form:

    { # Represents a table.
      "tablePropertiesJsonSchema": "A String", # JSON schema for validating the JSON table properties.
      "kind": "fusiontables#table", # The kind of item this is. For a table, this is always fusiontables#table.
      "attribution": "A String", # Attribution assigned to the table.
      "description": "A String", # Description assigned to the table.
      "columnPropertiesJsonSchema": "A String", # Default JSON schema for validating all JSON column properties.
      "isExportable": True or False, # Variable for whether table is exportable.
      "baseTableIds": [ # Base table identifier if this table is a view or merged table.
        "A String",
      ],
      "tablePropertiesJson": "A String", # JSON object containing custom table properties.
      "attributionLink": "A String", # Optional link for attribution.
      "sql": "A String", # SQL that encodes the table definition for derived tables.
      "tableId": "A String", # Encrypted unique alphanumeric identifier for the table.
      "columns": [ # Columns in the table.
        { # Specifies the details of a column in a table.
            "graphPredicate": "A String", # Column graph predicate.
                # Used to map table to graph data model (subject,predicate,object)
                # See W3C Graph-based Data Model.
            "kind": "fusiontables#column", # The kind of item this is. For a column, this is always fusiontables#column.
            "validValues": [ # List of valid values used to validate data and supply a drop-down list of values in the web application.
              "A String",
            ],
            "description": "A String", # Column description.
            "baseColumn": { # Identifier of the base column. If present, this column is derived from the specified base column.
              "tableIndex": 42, # Offset to the entry in the list of base tables in the table definition.
              "columnId": 42, # The id of the column in the base table from which this column is derived.
            },
            "name": "A String", # Name of the column.
            "columnPropertiesJson": "A String", # JSON object containing custom column properties.
            "formatPattern": "A String", # Format pattern.
                # Acceptable values are DT_DATE_MEDIUMe.g Dec 24, 2008 DT_DATE_SHORTfor example 12/24/08 DT_DATE_TIME_MEDIUMfor example Dec 24, 2008 8:30:45 PM DT_DATE_TIME_SHORTfor example 12/24/08 8:30 PM DT_DAY_MONTH_2_DIGIT_YEARfor example 24/12/08 DT_DAY_MONTH_2_DIGIT_YEAR_TIMEfor example 24/12/08 20:30 DT_DAY_MONTH_2_DIGIT_YEAR_TIME_MERIDIANfor example 24/12/08 8:30 PM DT_DAY_MONTH_4_DIGIT_YEARfor example 24/12/2008 DT_DAY_MONTH_4_DIGIT_YEAR_TIMEfor example 24/12/2008 20:30 DT_DAY_MONTH_4_DIGIT_YEAR_TIME_MERIDIANfor example 24/12/2008 8:30 PM DT_ISO_YEAR_MONTH_DAYfor example 2008-12-24 DT_ISO_YEAR_MONTH_DAY_TIMEfor example 2008-12-24 20:30:45 DT_MONTH_DAY_4_DIGIT_YEARfor example 12/24/2008 DT_TIME_LONGfor example 8:30:45 PM UTC-6 DT_TIME_MEDIUMfor example 8:30:45 PM DT_TIME_SHORTfor example 8:30 PM DT_YEAR_ONLYfor example 2008 HIGHLIGHT_UNTYPED_CELLSHighlight cell data that does not match the data type NONENo formatting (default) NUMBER_CURRENCYfor example $1234.56 NUMBER_DEFAULTfor example 1,234.56 NUMBER_INTEGERfor example 1235 NUMBER_NO_SEPARATORfor example 1234.56 NUMBER_PERCENTfor example 123,456% NUMBER_SCIENTIFICfor example 1E3 STRING_EIGHT_LINE_IMAGEDisplays thumbnail images as tall as eight lines of text STRING_FOUR_LINE_IMAGEDisplays thumbnail images as tall as four lines of text STRING_JSON_TEXTAllows editing of text as JSON in UI STRING_JSON_LISTAllows editing of text as a JSON list in UI STRING_LINKTreats cell as a link (must start with http:// or https://) STRING_ONE_LINE_IMAGEDisplays thumbnail images as tall as one line of text STRING_VIDEO_OR_MAPDisplay a video or map thumbnail
            "columnJsonSchema": "A String", # JSON schema for interpreting JSON in this column.
            "type": "A String", # Type of the column.
            "validateData": True or False, # If true, data entered via the web application is validated.
            "columnId": 42, # Identifier for the column.
          },
      ],
      "name": "A String", # Name assigned to a table.
    }</pre>
</div>

<div class="method">
    <code class="details" id="list">list(pageToken=None, maxResults=None)</code>
  <pre>Retrieves a list of tables a user owns.

Args:
  pageToken: string, Continuation token specifying which result page to return.
  maxResults: integer, Maximum number of tables to return. Default is 5.

Returns:
  An object of the form:

    { # Represents a list of tables.
    "nextPageToken": "A String", # Token used to access the next page of this result. No token is displayed if there are no more pages left.
    "items": [ # List of all requested tables.
      { # Represents a table.
          "tablePropertiesJsonSchema": "A String", # JSON schema for validating the JSON table properties.
          "kind": "fusiontables#table", # The kind of item this is. For a table, this is always fusiontables#table.
          "attribution": "A String", # Attribution assigned to the table.
          "description": "A String", # Description assigned to the table.
          "columnPropertiesJsonSchema": "A String", # Default JSON schema for validating all JSON column properties.
          "isExportable": True or False, # Variable for whether table is exportable.
          "baseTableIds": [ # Base table identifier if this table is a view or merged table.
            "A String",
          ],
          "tablePropertiesJson": "A String", # JSON object containing custom table properties.
          "attributionLink": "A String", # Optional link for attribution.
          "sql": "A String", # SQL that encodes the table definition for derived tables.
          "tableId": "A String", # Encrypted unique alphanumeric identifier for the table.
          "columns": [ # Columns in the table.
            { # Specifies the details of a column in a table.
                "graphPredicate": "A String", # Column graph predicate.
                    # Used to map table to graph data model (subject,predicate,object)
                    # See W3C Graph-based Data Model.
                "kind": "fusiontables#column", # The kind of item this is. For a column, this is always fusiontables#column.
                "validValues": [ # List of valid values used to validate data and supply a drop-down list of values in the web application.
                  "A String",
                ],
                "description": "A String", # Column description.
                "baseColumn": { # Identifier of the base column. If present, this column is derived from the specified base column.
                  "tableIndex": 42, # Offset to the entry in the list of base tables in the table definition.
                  "columnId": 42, # The id of the column in the base table from which this column is derived.
                },
                "name": "A String", # Name of the column.
                "columnPropertiesJson": "A String", # JSON object containing custom column properties.
                "formatPattern": "A String", # Format pattern.
                    # Acceptable values are DT_DATE_MEDIUMe.g Dec 24, 2008 DT_DATE_SHORTfor example 12/24/08 DT_DATE_TIME_MEDIUMfor example Dec 24, 2008 8:30:45 PM DT_DATE_TIME_SHORTfor example 12/24/08 8:30 PM DT_DAY_MONTH_2_DIGIT_YEARfor example 24/12/08 DT_DAY_MONTH_2_DIGIT_YEAR_TIMEfor example 24/12/08 20:30 DT_DAY_MONTH_2_DIGIT_YEAR_TIME_MERIDIANfor example 24/12/08 8:30 PM DT_DAY_MONTH_4_DIGIT_YEARfor example 24/12/2008 DT_DAY_MONTH_4_DIGIT_YEAR_TIMEfor example 24/12/2008 20:30 DT_DAY_MONTH_4_DIGIT_YEAR_TIME_MERIDIANfor example 24/12/2008 8:30 PM DT_ISO_YEAR_MONTH_DAYfor example 2008-12-24 DT_ISO_YEAR_MONTH_DAY_TIMEfor example 2008-12-24 20:30:45 DT_MONTH_DAY_4_DIGIT_YEARfor example 12/24/2008 DT_TIME_LONGfor example 8:30:45 PM UTC-6 DT_TIME_MEDIUMfor example 8:30:45 PM DT_TIME_SHORTfor example 8:30 PM DT_YEAR_ONLYfor example 2008 HIGHLIGHT_UNTYPED_CELLSHighlight cell data that does not match the data type NONENo formatting (default) NUMBER_CURRENCYfor example $1234.56 NUMBER_DEFAULTfor example 1,234.56 NUMBER_INTEGERfor example 1235 NUMBER_NO_SEPARATORfor example 1234.56 NUMBER_PERCENTfor example 123,456% NUMBER_SCIENTIFICfor example 1E3 STRING_EIGHT_LINE_IMAGEDisplays thumbnail images as tall as eight lines of text STRING_FOUR_LINE_IMAGEDisplays thumbnail images as tall as four lines of text STRING_JSON_TEXTAllows editing of text as JSON in UI STRING_JSON_LISTAllows editing of text as a JSON list in UI STRING_LINKTreats cell as a link (must start with http:// or https://) STRING_ONE_LINE_IMAGEDisplays thumbnail images as tall as one line of text STRING_VIDEO_OR_MAPDisplay a video or map thumbnail
                "columnJsonSchema": "A String", # JSON schema for interpreting JSON in this column.
                "type": "A String", # Type of the column.
                "validateData": True or False, # If true, data entered via the web application is validated.
                "columnId": 42, # Identifier for the column.
              },
          ],
          "name": "A String", # Name assigned to a table.
        },
    ],
    "kind": "fusiontables#tableList", # The kind of item this is. For table list, this is always fusiontables#tableList.
  }</pre>
</div>

<div class="method">
    <code class="details" id="list_next">list_next(previous_request, previous_response)</code>
  <pre>Retrieves the next page of results.

Args:
  previous_request: The request for the previous page. (required)
  previous_response: The response from the request for the previous page. (required)

Returns:
  A request object that you can call 'execute()' on to request the next
  page. Returns None if there are no more items in the collection.
    </pre>
</div>

<div class="method">
    <code class="details" id="patch">patch(tableId, body, replaceViewDefinition=None)</code>
  <pre>Updates an existing table. Unless explicitly requested, only the name, description, and attribution will be updated. This method supports patch semantics.

Args:
  tableId: string, ID of the table that is being updated. (required)
  body: object, The request body. (required)
    The object takes the form of:

{ # Represents a table.
    "tablePropertiesJsonSchema": "A String", # JSON schema for validating the JSON table properties.
    "kind": "fusiontables#table", # The kind of item this is. For a table, this is always fusiontables#table.
    "attribution": "A String", # Attribution assigned to the table.
    "description": "A String", # Description assigned to the table.
    "columnPropertiesJsonSchema": "A String", # Default JSON schema for validating all JSON column properties.
    "isExportable": True or False, # Variable for whether table is exportable.
    "baseTableIds": [ # Base table identifier if this table is a view or merged table.
      "A String",
    ],
    "tablePropertiesJson": "A String", # JSON object containing custom table properties.
    "attributionLink": "A String", # Optional link for attribution.
    "sql": "A String", # SQL that encodes the table definition for derived tables.
    "tableId": "A String", # Encrypted unique alphanumeric identifier for the table.
    "columns": [ # Columns in the table.
      { # Specifies the details of a column in a table.
          "graphPredicate": "A String", # Column graph predicate.
              # Used to map table to graph data model (subject,predicate,object)
              # See W3C Graph-based Data Model.
          "kind": "fusiontables#column", # The kind of item this is. For a column, this is always fusiontables#column.
          "validValues": [ # List of valid values used to validate data and supply a drop-down list of values in the web application.
            "A String",
          ],
          "description": "A String", # Column description.
          "baseColumn": { # Identifier of the base column. If present, this column is derived from the specified base column.
            "tableIndex": 42, # Offset to the entry in the list of base tables in the table definition.
            "columnId": 42, # The id of the column in the base table from which this column is derived.
          },
          "name": "A String", # Name of the column.
          "columnPropertiesJson": "A String", # JSON object containing custom column properties.
          "formatPattern": "A String", # Format pattern.
              # Acceptable values are DT_DATE_MEDIUMe.g Dec 24, 2008 DT_DATE_SHORTfor example 12/24/08 DT_DATE_TIME_MEDIUMfor example Dec 24, 2008 8:30:45 PM DT_DATE_TIME_SHORTfor example 12/24/08 8:30 PM DT_DAY_MONTH_2_DIGIT_YEARfor example 24/12/08 DT_DAY_MONTH_2_DIGIT_YEAR_TIMEfor example 24/12/08 20:30 DT_DAY_MONTH_2_DIGIT_YEAR_TIME_MERIDIANfor example 24/12/08 8:30 PM DT_DAY_MONTH_4_DIGIT_YEARfor example 24/12/2008 DT_DAY_MONTH_4_DIGIT_YEAR_TIMEfor example 24/12/2008 20:30 DT_DAY_MONTH_4_DIGIT_YEAR_TIME_MERIDIANfor example 24/12/2008 8:30 PM DT_ISO_YEAR_MONTH_DAYfor example 2008-12-24 DT_ISO_YEAR_MONTH_DAY_TIMEfor example 2008-12-24 20:30:45 DT_MONTH_DAY_4_DIGIT_YEARfor example 12/24/2008 DT_TIME_LONGfor example 8:30:45 PM UTC-6 DT_TIME_MEDIUMfor example 8:30:45 PM DT_TIME_SHORTfor example 8:30 PM DT_YEAR_ONLYfor example 2008 HIGHLIGHT_UNTYPED_CELLSHighlight cell data that does not match the data type NONENo formatting (default) NUMBER_CURRENCYfor example $1234.56 NUMBER_DEFAULTfor example 1,234.56 NUMBER_INTEGERfor example 1235 NUMBER_NO_SEPARATORfor example 1234.56 NUMBER_PERCENTfor example 123,456% NUMBER_SCIENTIFICfor example 1E3 STRING_EIGHT_LINE_IMAGEDisplays thumbnail images as tall as eight lines of text STRING_FOUR_LINE_IMAGEDisplays thumbnail images as tall as four lines of text STRING_JSON_TEXTAllows editing of text as JSON in UI STRING_JSON_LISTAllows editing of text as a JSON list in UI STRING_LINKTreats cell as a link (must start with http:// or https://) STRING_ONE_LINE_IMAGEDisplays thumbnail images as tall as one line of text STRING_VIDEO_OR_MAPDisplay a video or map thumbnail
          "columnJsonSchema": "A String", # JSON schema for interpreting JSON in this column.
          "type": "A String", # Type of the column.
          "validateData": True or False, # If true, data entered via the web application is validated.
          "columnId": 42, # Identifier for the column.
        },
    ],
    "name": "A String", # Name assigned to a table.
  }

  replaceViewDefinition: boolean, Whether the view definition is also updated. The specified view definition replaces the existing one. Only a view can be updated with a new definition.

Returns:
  An object of the form:

    { # Represents a table.
      "tablePropertiesJsonSchema": "A String", # JSON schema for validating the JSON table properties.
      "kind": "fusiontables#table", # The kind of item this is. For a table, this is always fusiontables#table.
      "attribution": "A String", # Attribution assigned to the table.
      "description": "A String", # Description assigned to the table.
      "columnPropertiesJsonSchema": "A String", # Default JSON schema for validating all JSON column properties.
      "isExportable": True or False, # Variable for whether table is exportable.
      "baseTableIds": [ # Base table identifier if this table is a view or merged table.
        "A String",
      ],
      "tablePropertiesJson": "A String", # JSON object containing custom table properties.
      "attributionLink": "A String", # Optional link for attribution.
      "sql": "A String", # SQL that encodes the table definition for derived tables.
      "tableId": "A String", # Encrypted unique alphanumeric identifier for the table.
      "columns": [ # Columns in the table.
        { # Specifies the details of a column in a table.
            "graphPredicate": "A String", # Column graph predicate.
                # Used to map table to graph data model (subject,predicate,object)
                # See W3C Graph-based Data Model.
            "kind": "fusiontables#column", # The kind of item this is. For a column, this is always fusiontables#column.
            "validValues": [ # List of valid values used to validate data and supply a drop-down list of values in the web application.
              "A String",
            ],
            "description": "A String", # Column description.
            "baseColumn": { # Identifier of the base column. If present, this column is derived from the specified base column.
              "tableIndex": 42, # Offset to the entry in the list of base tables in the table definition.
              "columnId": 42, # The id of the column in the base table from which this column is derived.
            },
            "name": "A String", # Name of the column.
            "columnPropertiesJson": "A String", # JSON object containing custom column properties.
            "formatPattern": "A String", # Format pattern.
                # Acceptable values are DT_DATE_MEDIUMe.g Dec 24, 2008 DT_DATE_SHORTfor example 12/24/08 DT_DATE_TIME_MEDIUMfor example Dec 24, 2008 8:30:45 PM DT_DATE_TIME_SHORTfor example 12/24/08 8:30 PM DT_DAY_MONTH_2_DIGIT_YEARfor example 24/12/08 DT_DAY_MONTH_2_DIGIT_YEAR_TIMEfor example 24/12/08 20:30 DT_DAY_MONTH_2_DIGIT_YEAR_TIME_MERIDIANfor example 24/12/08 8:30 PM DT_DAY_MONTH_4_DIGIT_YEARfor example 24/12/2008 DT_DAY_MONTH_4_DIGIT_YEAR_TIMEfor example 24/12/2008 20:30 DT_DAY_MONTH_4_DIGIT_YEAR_TIME_MERIDIANfor example 24/12/2008 8:30 PM DT_ISO_YEAR_MONTH_DAYfor example 2008-12-24 DT_ISO_YEAR_MONTH_DAY_TIMEfor example 2008-12-24 20:30:45 DT_MONTH_DAY_4_DIGIT_YEARfor example 12/24/2008 DT_TIME_LONGfor example 8:30:45 PM UTC-6 DT_TIME_MEDIUMfor example 8:30:45 PM DT_TIME_SHORTfor example 8:30 PM DT_YEAR_ONLYfor example 2008 HIGHLIGHT_UNTYPED_CELLSHighlight cell data that does not match the data type NONENo formatting (default) NUMBER_CURRENCYfor example $1234.56 NUMBER_DEFAULTfor example 1,234.56 NUMBER_INTEGERfor example 1235 NUMBER_NO_SEPARATORfor example 1234.56 NUMBER_PERCENTfor example 123,456% NUMBER_SCIENTIFICfor example 1E3 STRING_EIGHT_LINE_IMAGEDisplays thumbnail images as tall as eight lines of text STRING_FOUR_LINE_IMAGEDisplays thumbnail images as tall as four lines of text STRING_JSON_TEXTAllows editing of text as JSON in UI STRING_JSON_LISTAllows editing of text as a JSON list in UI STRING_LINKTreats cell as a link (must start with http:// or https://) STRING_ONE_LINE_IMAGEDisplays thumbnail images as tall as one line of text STRING_VIDEO_OR_MAPDisplay a video or map thumbnail
            "columnJsonSchema": "A String", # JSON schema for interpreting JSON in this column.
            "type": "A String", # Type of the column.
            "validateData": True or False, # If true, data entered via the web application is validated.
            "columnId": 42, # Identifier for the column.
          },
      ],
      "name": "A String", # Name assigned to a table.
    }</pre>
</div>

<div class="method">
    <code class="details" id="refetchSheet">refetchSheet(tableId)</code>
  <pre>Replaces rows of the table with the rows of the spreadsheet that is first imported from. Current rows remain visible until all replacement rows are ready.

Args:
  tableId: string, Table whose rows will be replaced from the spreadsheet. (required)

Returns:
  An object of the form:

    { # A background task on a table, initiated for time- or resource-consuming operations such as changing column types or deleting all rows.
    "started": True or False, # false while the table is busy with some other task. true if this background task is currently running.
    "progress": "A String", # Task percentage completion.
    "kind": "fusiontables#task", # Type of the resource. This is always "fusiontables#task".
    "type": "A String", # Type of background task.
    "taskId": "A String", # Identifier for the task.
  }</pre>
</div>

<div class="method">
    <code class="details" id="replaceRows">replaceRows(tableId, media_body=None, startLine=None, isStrict=None, encoding=None, media_mime_type=None, delimiter=None, endLine=None)</code>
  <pre>Replaces rows of an existing table. Current rows remain visible until all replacement rows are ready.

Args:
  tableId: string, Table whose rows will be replaced. (required)
  media_body: string, The filename of the media request body, or an instance of a MediaUpload object.
  startLine: integer, The index of the first line from which to start importing, inclusive. Default is 0.
  isStrict: boolean, Whether the imported CSV must have the same number of column values for each row. If true, throws an exception if the CSV does not have the same number of columns. If false, rows with fewer column values will be padded with empty values. Default is true.
  encoding: string, The encoding of the content. Default is UTF-8. Use 'auto-detect' if you are unsure of the encoding.
  media_mime_type: string, The MIME type of the media request body, or an instance of a MediaUpload object.
  delimiter: string, The delimiter used to separate cell values. This can only consist of a single character. Default is ,.
  endLine: integer, The index of the line up to which data will be imported. Default is to import the entire file. If endLine is negative, it is an offset from the end of the file; the imported content will exclude the last endLine lines.

Returns:
  An object of the form:

    { # A background task on a table, initiated for time- or resource-consuming operations such as changing column types or deleting all rows.
    "started": True or False, # false while the table is busy with some other task. true if this background task is currently running.
    "progress": "A String", # Task percentage completion.
    "kind": "fusiontables#task", # Type of the resource. This is always "fusiontables#task".
    "type": "A String", # Type of background task.
    "taskId": "A String", # Identifier for the task.
  }</pre>
</div>

<div class="method">
    <code class="details" id="update">update(tableId, body, replaceViewDefinition=None)</code>
  <pre>Updates an existing table. Unless explicitly requested, only the name, description, and attribution will be updated.

Args:
  tableId: string, ID of the table that is being updated. (required)
  body: object, The request body. (required)
    The object takes the form of:

{ # Represents a table.
    "tablePropertiesJsonSchema": "A String", # JSON schema for validating the JSON table properties.
    "kind": "fusiontables#table", # The kind of item this is. For a table, this is always fusiontables#table.
    "attribution": "A String", # Attribution assigned to the table.
    "description": "A String", # Description assigned to the table.
    "columnPropertiesJsonSchema": "A String", # Default JSON schema for validating all JSON column properties.
    "isExportable": True or False, # Variable for whether table is exportable.
    "baseTableIds": [ # Base table identifier if this table is a view or merged table.
      "A String",
    ],
    "tablePropertiesJson": "A String", # JSON object containing custom table properties.
    "attributionLink": "A String", # Optional link for attribution.
    "sql": "A String", # SQL that encodes the table definition for derived tables.
    "tableId": "A String", # Encrypted unique alphanumeric identifier for the table.
    "columns": [ # Columns in the table.
      { # Specifies the details of a column in a table.
          "graphPredicate": "A String", # Column graph predicate.
              # Used to map table to graph data model (subject,predicate,object)
              # See W3C Graph-based Data Model.
          "kind": "fusiontables#column", # The kind of item this is. For a column, this is always fusiontables#column.
          "validValues": [ # List of valid values used to validate data and supply a drop-down list of values in the web application.
            "A String",
          ],
          "description": "A String", # Column description.
          "baseColumn": { # Identifier of the base column. If present, this column is derived from the specified base column.
            "tableIndex": 42, # Offset to the entry in the list of base tables in the table definition.
            "columnId": 42, # The id of the column in the base table from which this column is derived.
          },
          "name": "A String", # Name of the column.
          "columnPropertiesJson": "A String", # JSON object containing custom column properties.
          "formatPattern": "A String", # Format pattern.
              # Acceptable values are DT_DATE_MEDIUMe.g Dec 24, 2008 DT_DATE_SHORTfor example 12/24/08 DT_DATE_TIME_MEDIUMfor example Dec 24, 2008 8:30:45 PM DT_DATE_TIME_SHORTfor example 12/24/08 8:30 PM DT_DAY_MONTH_2_DIGIT_YEARfor example 24/12/08 DT_DAY_MONTH_2_DIGIT_YEAR_TIMEfor example 24/12/08 20:30 DT_DAY_MONTH_2_DIGIT_YEAR_TIME_MERIDIANfor example 24/12/08 8:30 PM DT_DAY_MONTH_4_DIGIT_YEARfor example 24/12/2008 DT_DAY_MONTH_4_DIGIT_YEAR_TIMEfor example 24/12/2008 20:30 DT_DAY_MONTH_4_DIGIT_YEAR_TIME_MERIDIANfor example 24/12/2008 8:30 PM DT_ISO_YEAR_MONTH_DAYfor example 2008-12-24 DT_ISO_YEAR_MONTH_DAY_TIMEfor example 2008-12-24 20:30:45 DT_MONTH_DAY_4_DIGIT_YEARfor example 12/24/2008 DT_TIME_LONGfor example 8:30:45 PM UTC-6 DT_TIME_MEDIUMfor example 8:30:45 PM DT_TIME_SHORTfor example 8:30 PM DT_YEAR_ONLYfor example 2008 HIGHLIGHT_UNTYPED_CELLSHighlight cell data that does not match the data type NONENo formatting (default) NUMBER_CURRENCYfor example $1234.56 NUMBER_DEFAULTfor example 1,234.56 NUMBER_INTEGERfor example 1235 NUMBER_NO_SEPARATORfor example 1234.56 NUMBER_PERCENTfor example 123,456% NUMBER_SCIENTIFICfor example 1E3 STRING_EIGHT_LINE_IMAGEDisplays thumbnail images as tall as eight lines of text STRING_FOUR_LINE_IMAGEDisplays thumbnail images as tall as four lines of text STRING_JSON_TEXTAllows editing of text as JSON in UI STRING_JSON_LISTAllows editing of text as a JSON list in UI STRING_LINKTreats cell as a link (must start with http:// or https://) STRING_ONE_LINE_IMAGEDisplays thumbnail images as tall as one line of text STRING_VIDEO_OR_MAPDisplay a video or map thumbnail
          "columnJsonSchema": "A String", # JSON schema for interpreting JSON in this column.
          "type": "A String", # Type of the column.
          "validateData": True or False, # If true, data entered via the web application is validated.
          "columnId": 42, # Identifier for the column.
        },
    ],
    "name": "A String", # Name assigned to a table.
  }

  replaceViewDefinition: boolean, Whether the view definition is also updated. The specified view definition replaces the existing one. Only a view can be updated with a new definition.

Returns:
  An object of the form:

    { # Represents a table.
      "tablePropertiesJsonSchema": "A String", # JSON schema for validating the JSON table properties.
      "kind": "fusiontables#table", # The kind of item this is. For a table, this is always fusiontables#table.
      "attribution": "A String", # Attribution assigned to the table.
      "description": "A String", # Description assigned to the table.
      "columnPropertiesJsonSchema": "A String", # Default JSON schema for validating all JSON column properties.
      "isExportable": True or False, # Variable for whether table is exportable.
      "baseTableIds": [ # Base table identifier if this table is a view or merged table.
        "A String",
      ],
      "tablePropertiesJson": "A String", # JSON object containing custom table properties.
      "attributionLink": "A String", # Optional link for attribution.
      "sql": "A String", # SQL that encodes the table definition for derived tables.
      "tableId": "A String", # Encrypted unique alphanumeric identifier for the table.
      "columns": [ # Columns in the table.
        { # Specifies the details of a column in a table.
            "graphPredicate": "A String", # Column graph predicate.
                # Used to map table to graph data model (subject,predicate,object)
                # See W3C Graph-based Data Model.
            "kind": "fusiontables#column", # The kind of item this is. For a column, this is always fusiontables#column.
            "validValues": [ # List of valid values used to validate data and supply a drop-down list of values in the web application.
              "A String",
            ],
            "description": "A String", # Column description.
            "baseColumn": { # Identifier of the base column. If present, this column is derived from the specified base column.
              "tableIndex": 42, # Offset to the entry in the list of base tables in the table definition.
              "columnId": 42, # The id of the column in the base table from which this column is derived.
            },
            "name": "A String", # Name of the column.
            "columnPropertiesJson": "A String", # JSON object containing custom column properties.
            "formatPattern": "A String", # Format pattern.
                # Acceptable values are DT_DATE_MEDIUMe.g Dec 24, 2008 DT_DATE_SHORTfor example 12/24/08 DT_DATE_TIME_MEDIUMfor example Dec 24, 2008 8:30:45 PM DT_DATE_TIME_SHORTfor example 12/24/08 8:30 PM DT_DAY_MONTH_2_DIGIT_YEARfor example 24/12/08 DT_DAY_MONTH_2_DIGIT_YEAR_TIMEfor example 24/12/08 20:30 DT_DAY_MONTH_2_DIGIT_YEAR_TIME_MERIDIANfor example 24/12/08 8:30 PM DT_DAY_MONTH_4_DIGIT_YEARfor example 24/12/2008 DT_DAY_MONTH_4_DIGIT_YEAR_TIMEfor example 24/12/2008 20:30 DT_DAY_MONTH_4_DIGIT_YEAR_TIME_MERIDIANfor example 24/12/2008 8:30 PM DT_ISO_YEAR_MONTH_DAYfor example 2008-12-24 DT_ISO_YEAR_MONTH_DAY_TIMEfor example 2008-12-24 20:30:45 DT_MONTH_DAY_4_DIGIT_YEARfor example 12/24/2008 DT_TIME_LONGfor example 8:30:45 PM UTC-6 DT_TIME_MEDIUMfor example 8:30:45 PM DT_TIME_SHORTfor example 8:30 PM DT_YEAR_ONLYfor example 2008 HIGHLIGHT_UNTYPED_CELLSHighlight cell data that does not match the data type NONENo formatting (default) NUMBER_CURRENCYfor example $1234.56 NUMBER_DEFAULTfor example 1,234.56 NUMBER_INTEGERfor example 1235 NUMBER_NO_SEPARATORfor example 1234.56 NUMBER_PERCENTfor example 123,456% NUMBER_SCIENTIFICfor example 1E3 STRING_EIGHT_LINE_IMAGEDisplays thumbnail images as tall as eight lines of text STRING_FOUR_LINE_IMAGEDisplays thumbnail images as tall as four lines of text STRING_JSON_TEXTAllows editing of text as JSON in UI STRING_JSON_LISTAllows editing of text as a JSON list in UI STRING_LINKTreats cell as a link (must start with http:// or https://) STRING_ONE_LINE_IMAGEDisplays thumbnail images as tall as one line of text STRING_VIDEO_OR_MAPDisplay a video or map thumbnail
            "columnJsonSchema": "A String", # JSON schema for interpreting JSON in this column.
            "type": "A String", # Type of the column.
            "validateData": True or False, # If true, data entered via the web application is validated.
            "columnId": 42, # Identifier for the column.
          },
      ],
      "name": "A String", # Name assigned to a table.
    }</pre>
</div>

</body></html>