def AppendData(self, data, custom_properties=None):
<EOL>if not self.__columns[-<NUM_LIT:1>]["<STR_LIT>"]:<EOL><INDENT>for row in data:<EOL><INDENT>self._InnerAppendData(({}, custom_properties), row, <NUM_LIT:0>)<EOL><DEDENT><DEDENT>else:<EOL><INDENT>self._InnerAppendData(({}, custom_properties), data, <NUM_LIT:0>)<EOL><DEDENT>
Appends new data to the table.

        Data is appended in rows. Data must comply with
        the table schema passed in to __init__(). See CoerceValue() for a list
        of acceptable data types. See the class documentation for more information
        and examples of schema and data values.

        Args:
          data: The row to add to the table. The data must conform to the table
                description format.
          custom_properties: A dictionary of string to string, representing the
                             custom properties to add to all the rows.

        Raises:
          DataTableException: The data structure does not match the description.