<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.column.html">column</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#delete">delete(tableId, columnId)</a></code></p>
<p class="firstline">Deletes the specified column.</p>
<p class="toc_element">
  <code><a href="#get">get(tableId, columnId)</a></code></p>
<p class="firstline">Retrieves a specific column by its ID.</p>
<p class="toc_element">
  <code><a href="#insert">insert(tableId, body)</a></code></p>
<p class="firstline">Adds a new column to the table.</p>
<p class="toc_element">
  <code><a href="#list">list(tableId, pageToken=None, maxResults=None)</a></code></p>
<p class="firstline">Retrieves a list of columns.</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, columnId, body)</a></code></p>
<p class="firstline">Updates the name or type of an existing column. This method supports patch semantics.</p>
<p class="toc_element">
  <code><a href="#update">update(tableId, columnId, body)</a></code></p>
<p class="firstline">Updates the name or type of an existing column.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="delete">delete(tableId, columnId)</code>
  <pre>Deletes the specified column.

Args:
  tableId: string, Table from which the column is being deleted. (required)
  columnId: string, Name or identifier for the column being deleted. (required)
</pre>
</div>

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

Args:
  tableId: string, Table to which the column belongs. (required)
  columnId: string, Name or identifier for the column that is being requested. (required)

Returns:
  An object of the form:

    { # 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.
    }</pre>
</div>

<div class="method">
    <code class="details" id="insert">insert(tableId, body)</code>
  <pre>Adds a new column to the table.

Args:
  tableId: string, Table for which a new column is being added. (required)
  body: object, The request body. (required)
    The object takes the form of:

{ # 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.
  }


Returns:
  An object of the form:

    { # 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.
    }</pre>
</div>

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

Args:
  tableId: string, Table whose columns are being listed. (required)
  pageToken: string, Continuation token specifying which result page to return.
  maxResults: integer, Maximum number of columns to return. Default is 5.

Returns:
  An object of the form:

    { # Represents a list of columns in a table.
    "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 columns.
      { # 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.
        },
    ],
    "kind": "fusiontables#columnList", # The kind of item this is. For a column list, this is always fusiontables#columnList.
    "totalItems": 42, # Total number of columns for the table.
  }</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, columnId, body)</code>
  <pre>Updates the name or type of an existing column. This method supports patch semantics.

Args:
  tableId: string, Table for which the column is being updated. (required)
  columnId: string, Name or identifier for the column that is being updated. (required)
  body: object, The request body. (required)
    The object takes the form of:

{ # 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.
  }


Returns:
  An object of the form:

    { # 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.
    }</pre>
</div>

<div class="method">
    <code class="details" id="update">update(tableId, columnId, body)</code>
  <pre>Updates the name or type of an existing column.

Args:
  tableId: string, Table for which the column is being updated. (required)
  columnId: string, Name or identifier for the column that is being updated. (required)
  body: object, The request body. (required)
    The object takes the form of:

{ # 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.
  }


Returns:
  An object of the form:

    { # 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.
    }</pre>
</div>

</body></html>