Update documentation
diff --git a/docs/dyn/sheets_v4.spreadsheets.values.html b/docs/dyn/sheets_v4.spreadsheets.values.html
index a1392c0..6e051eb 100644
--- a/docs/dyn/sheets_v4.spreadsheets.values.html
+++ b/docs/dyn/sheets_v4.spreadsheets.values.html
@@ -75,11 +75,14 @@
 <h1><a href="sheets_v4.html">Google Sheets API</a> . <a href="sheets_v4.spreadsheets.html">spreadsheets</a> . <a href="sheets_v4.spreadsheets.values.html">values</a></h1>
 <h2>Instance Methods</h2>
 <p class="toc_element">
+  <code><a href="#append">append(spreadsheetId, range=None, body, insertDataOption=None, valueInputOption=None, x__xgafv=None)</a></code></p>
+<p class="firstline">Appends values to a spreadsheet. The input range is used to search for</p>
+<p class="toc_element">
   <code><a href="#batchGet">batchGet(spreadsheetId, valueRenderOption=None, majorDimension=None, ranges=None, dateTimeRenderOption=None, x__xgafv=None)</a></code></p>
 <p class="firstline">Returns one or more ranges of values from a spreadsheet.</p>
 <p class="toc_element">
   <code><a href="#batchUpdate">batchUpdate(spreadsheetId, body, x__xgafv=None)</a></code></p>
-<p class="firstline">Sets values in a range of a spreadsheet.</p>
+<p class="firstline">Sets values in one or more ranges of a spreadsheet.</p>
 <p class="toc_element">
   <code><a href="#get">get(spreadsheetId, range, valueRenderOption=None, majorDimension=None, dateTimeRenderOption=None, x__xgafv=None)</a></code></p>
 <p class="firstline">Returns a range of values from a spreadsheet.</p>
@@ -88,12 +91,96 @@
 <p class="firstline">Sets values in a range of a spreadsheet.</p>
 <h3>Method Details</h3>
 <div class="method">
+    <code class="details" id="append">append(spreadsheetId, range=None, body, insertDataOption=None, valueInputOption=None, x__xgafv=None)</code>
+  <pre>Appends values to a spreadsheet. The input range is used to search for
+existing data and find a "table" within that range. Values will be
+appended to the next row of the table, starting with the first column of
+the table. See the
+[guide](/sheets/guides/values#appending_values)
+and
+[sample code](/sheets/samples/writing#append_values)
+for specific details of how tables are detected and data is appended.
+
+The caller must specify the spreadsheet ID, range, and
+a valueInputOption.  The `valueInputOption` only
+controls how the input data will be added to the sheet (column-wise or
+row-wise), it does not influence what cell the data starts being written
+to.
+
+Args:
+  spreadsheetId: string, The ID of the spreadsheet to update. (required)
+  range: string, The A1 notation of a range to search for a logical table of data.
+Values will be appended after the last row of the table. (required)
+  body: object, The request body. (required)
+    The object takes the form of:
+
+{ # Data within a range of the spreadsheet.
+  "range": "A String", # The range the values cover, in A1 notation.
+      # For output, this range indicates the entire requested range,
+      # even though the values will exclude trailing rows and columns.
+      # When appending values, this field represents the range to search for a
+      # table, after which values will be appended.
+  "values": [ # The data that was read or to be written.  This is an array of arrays,
+      # the outer array representing all the data and each inner array
+      # representing a major dimension. Each item in the inner array
+      # corresponds with one cell.
+      # 
+      # For output, empty trailing rows and columns will not be included.
+      # 
+      # For input, supported value types are: bool, string, and double.
+      # Null values will be skipped.
+      # To set a cell to an empty value, set the string value to an empty string.
+    [
+      "",
+    ],
+  ],
+  "majorDimension": "A String", # The major dimension of the values.
+      # 
+      # For output, if the spreadsheet data is: `A1=1,B1=2,A2=3,B2=4`,
+      # then requesting `range=A1:B2,majorDimension=ROWS` will return
+      # `[[1,2],[3,4]]`,
+      # whereas requesting `range=A1:B2,majorDimension=COLUMNS` will return
+      # `[[1,3],[2,4]]`.
+      # 
+      # For input, with `range=A1:B2,majorDimension=ROWS` then `[[1,2],[3,4]]`
+      # will set `A1=1,B1=2,A2=3,B2=4`. With `range=A1:B2,majorDimension=COLUMNS`
+      # then `[[1,2],[3,4]]` will set `A1=1,B1=3,A2=2,B2=4`.
+      # 
+      # When writing, if this field is not set, it defaults to ROWS.
+}
+
+  insertDataOption: string, How the input data should be inserted.
+  valueInputOption: string, How the input data should be interpreted.
+  x__xgafv: string, V1 error format.
+    Allowed values
+      1 - v1 error format
+      2 - v2 error format
+
+Returns:
+  An object of the form:
+
+    { # The response when updating a range of values in a spreadsheet.
+    "spreadsheetId": "A String", # The spreadsheet the updates were applied to.
+    "tableRange": "A String", # The range (in A1 notation) of the table that values are being appended to
+        # (before the values were appended).
+        # Empty if no table was found.
+    "updates": { # The response when updating a range of values in a spreadsheet. # Information about the updates that were applied.
+      "updatedRange": "A String", # The range (in A1 notation) that updates were applied to.
+      "updatedColumns": 42, # The number of columns where at least one cell in the column was updated.
+      "updatedCells": 42, # The number of cells updated.
+      "updatedRows": 42, # The number of rows where at least one cell in the row was updated.
+      "spreadsheetId": "A String", # The spreadsheet the updates were applied to.
+    },
+  }</pre>
+</div>
+
+<div class="method">
     <code class="details" id="batchGet">batchGet(spreadsheetId, valueRenderOption=None, majorDimension=None, ranges=None, dateTimeRenderOption=None, x__xgafv=None)</code>
   <pre>Returns one or more ranges of values from a spreadsheet.
 The caller must specify the spreadsheet ID and one or more ranges.
 
 Args:
-  spreadsheetId: string, The id of the spreadsheet to retrieve data from. (required)
+  spreadsheetId: string, The ID of the spreadsheet to retrieve data from. (required)
   valueRenderOption: string, How values should be represented in the output.
   majorDimension: string, The major dimension that results should use.
 
@@ -104,7 +191,7 @@
 `[[1,3],[2,4]]`.
   ranges: string, The A1 notation of the values to retrieve. (repeated)
   dateTimeRenderOption: string, How dates, times, and durations should be represented in the output.
-This is ignored if ValueRenderOption option is
+This is ignored if value_render_option is
 FORMATTED_VALUE.
   x__xgafv: string, V1 error format.
     Allowed values
@@ -115,13 +202,15 @@
   An object of the form:
 
     { # The response when retrieving more than one range of values in a spreadsheet.
-    "spreadsheetId": "A String", # The id of the spreadsheet to retrieve data from.
+    "spreadsheetId": "A String", # The ID of the spreadsheet the data was retrieved from.
     "valueRanges": [ # The requested values. The order of the ValueRanges is the same as the
         # order of the requested ranges.
       { # Data within a range of the spreadsheet.
         "range": "A String", # The range the values cover, in A1 notation.
             # For output, this range indicates the entire requested range,
             # even though the values will exclude trailing rows and columns.
+            # When appending values, this field represents the range to search for a
+            # table, after which values will be appended.
         "values": [ # The data that was read or to be written.  This is an array of arrays,
             # the outer array representing all the data and each inner array
             # representing a major dimension. Each item in the inner array
@@ -130,7 +219,7 @@
             # For output, empty trailing rows and columns will not be included.
             #
             # For input, supported value types are: bool, string, and double.
-            # Null and empty values will be skipped.
+            # Null values will be skipped.
             # To set a cell to an empty value, set the string value to an empty string.
           [
             "",
@@ -138,14 +227,15 @@
         ],
         "majorDimension": "A String", # The major dimension of the values.
             #
-            # For output, if the spreadsheet data is: A1=1,B1=2,A2=3,B2=4,
-            # then requesting range=A1:B2,majorDimension=ROWS will return [[1,2],[3,4]],
-            # whereas requesting range=A1:B2,majorDimension=COLUMNS will return
-            # [[1,3],[2,4]].
+            # For output, if the spreadsheet data is: `A1=1,B1=2,A2=3,B2=4`,
+            # then requesting `range=A1:B2,majorDimension=ROWS` will return
+            # `[[1,2],[3,4]]`,
+            # whereas requesting `range=A1:B2,majorDimension=COLUMNS` will return
+            # `[[1,3],[2,4]]`.
             #
-            # For input, with range=A1:B2,majorDimension=ROWS then [[1,2],[3,4]]
-            # will set A1=1,B1=2,A2=3,B2=4. With range=A1:B2,majorDimension=COLUMNS
-            # then [[1,2],[3,4]] will set A1=1,B1=3,A2=2,B2=4.
+            # For input, with `range=A1:B2,majorDimension=ROWS` then `[[1,2],[3,4]]`
+            # will set `A1=1,B1=2,A2=3,B2=4`. With `range=A1:B2,majorDimension=COLUMNS`
+            # then `[[1,2],[3,4]]` will set `A1=1,B1=3,A2=2,B2=4`.
             #
             # When writing, if this field is not set, it defaults to ROWS.
       },
@@ -155,13 +245,13 @@
 
 <div class="method">
     <code class="details" id="batchUpdate">batchUpdate(spreadsheetId, body, x__xgafv=None)</code>
-  <pre>Sets values in a range of a spreadsheet.
+  <pre>Sets values in one or more ranges of a spreadsheet.
 The caller must specify the spreadsheet ID,
 a valueInputOption, and one or more
 ValueRanges.
 
 Args:
-  spreadsheetId: string, The id of the spreadsheet to update. (required)
+  spreadsheetId: string, The ID of the spreadsheet to update. (required)
   body: object, The request body. (required)
     The object takes the form of:
 
@@ -171,6 +261,8 @@
         "range": "A String", # The range the values cover, in A1 notation.
             # For output, this range indicates the entire requested range,
             # even though the values will exclude trailing rows and columns.
+            # When appending values, this field represents the range to search for a
+            # table, after which values will be appended.
         "values": [ # The data that was read or to be written.  This is an array of arrays,
             # the outer array representing all the data and each inner array
             # representing a major dimension. Each item in the inner array
@@ -179,7 +271,7 @@
             # For output, empty trailing rows and columns will not be included.
             #
             # For input, supported value types are: bool, string, and double.
-            # Null and empty values will be skipped.
+            # Null values will be skipped.
             # To set a cell to an empty value, set the string value to an empty string.
           [
             "",
@@ -187,14 +279,15 @@
         ],
         "majorDimension": "A String", # The major dimension of the values.
             #
-            # For output, if the spreadsheet data is: A1=1,B1=2,A2=3,B2=4,
-            # then requesting range=A1:B2,majorDimension=ROWS will return [[1,2],[3,4]],
-            # whereas requesting range=A1:B2,majorDimension=COLUMNS will return
-            # [[1,3],[2,4]].
+            # For output, if the spreadsheet data is: `A1=1,B1=2,A2=3,B2=4`,
+            # then requesting `range=A1:B2,majorDimension=ROWS` will return
+            # `[[1,2],[3,4]]`,
+            # whereas requesting `range=A1:B2,majorDimension=COLUMNS` will return
+            # `[[1,3],[2,4]]`.
             #
-            # For input, with range=A1:B2,majorDimension=ROWS then [[1,2],[3,4]]
-            # will set A1=1,B1=2,A2=3,B2=4. With range=A1:B2,majorDimension=COLUMNS
-            # then [[1,2],[3,4]] will set A1=1,B1=3,A2=2,B2=4.
+            # For input, with `range=A1:B2,majorDimension=ROWS` then `[[1,2],[3,4]]`
+            # will set `A1=1,B1=2,A2=3,B2=4`. With `range=A1:B2,majorDimension=COLUMNS`
+            # then `[[1,2],[3,4]]` will set `A1=1,B1=3,A2=2,B2=4`.
             #
             # When writing, if this field is not set, it defaults to ROWS.
       },
@@ -237,7 +330,7 @@
 The caller must specify the spreadsheet ID and a range.
 
 Args:
-  spreadsheetId: string, The id of the spreadsheet to retrieve data from. (required)
+  spreadsheetId: string, The ID of the spreadsheet to retrieve data from. (required)
   range: string, The A1 notation of the values to retrieve. (required)
   valueRenderOption: string, How values should be represented in the output.
   majorDimension: string, The major dimension that results should use.
@@ -248,7 +341,7 @@
 whereas requesting `range=A1:B2,majorDimension=COLUMNS` will return
 `[[1,3],[2,4]]`.
   dateTimeRenderOption: string, How dates, times, and durations should be represented in the output.
-This is ignored if the ValueRenderOption option is
+This is ignored if value_render_option is
 FORMATTED_VALUE.
   x__xgafv: string, V1 error format.
     Allowed values
@@ -262,6 +355,8 @@
     "range": "A String", # The range the values cover, in A1 notation.
         # For output, this range indicates the entire requested range,
         # even though the values will exclude trailing rows and columns.
+        # When appending values, this field represents the range to search for a
+        # table, after which values will be appended.
     "values": [ # The data that was read or to be written.  This is an array of arrays,
         # the outer array representing all the data and each inner array
         # representing a major dimension. Each item in the inner array
@@ -270,7 +365,7 @@
         # For output, empty trailing rows and columns will not be included.
         #
         # For input, supported value types are: bool, string, and double.
-        # Null and empty values will be skipped.
+        # Null values will be skipped.
         # To set a cell to an empty value, set the string value to an empty string.
       [
         "",
@@ -278,14 +373,15 @@
     ],
     "majorDimension": "A String", # The major dimension of the values.
         #
-        # For output, if the spreadsheet data is: A1=1,B1=2,A2=3,B2=4,
-        # then requesting range=A1:B2,majorDimension=ROWS will return [[1,2],[3,4]],
-        # whereas requesting range=A1:B2,majorDimension=COLUMNS will return
-        # [[1,3],[2,4]].
+        # For output, if the spreadsheet data is: `A1=1,B1=2,A2=3,B2=4`,
+        # then requesting `range=A1:B2,majorDimension=ROWS` will return
+        # `[[1,2],[3,4]]`,
+        # whereas requesting `range=A1:B2,majorDimension=COLUMNS` will return
+        # `[[1,3],[2,4]]`.
         #
-        # For input, with range=A1:B2,majorDimension=ROWS then [[1,2],[3,4]]
-        # will set A1=1,B1=2,A2=3,B2=4. With range=A1:B2,majorDimension=COLUMNS
-        # then [[1,2],[3,4]] will set A1=1,B1=3,A2=2,B2=4.
+        # For input, with `range=A1:B2,majorDimension=ROWS` then `[[1,2],[3,4]]`
+        # will set `A1=1,B1=2,A2=3,B2=4`. With `range=A1:B2,majorDimension=COLUMNS`
+        # then `[[1,2],[3,4]]` will set `A1=1,B1=3,A2=2,B2=4`.
         #
         # When writing, if this field is not set, it defaults to ROWS.
   }</pre>
@@ -298,7 +394,7 @@
 a valueInputOption.
 
 Args:
-  spreadsheetId: string, The id of the spreadsheet to update. (required)
+  spreadsheetId: string, The ID of the spreadsheet to update. (required)
   range: string, The A1 notation of the values to update. (required)
   body: object, The request body. (required)
     The object takes the form of:
@@ -307,6 +403,8 @@
   "range": "A String", # The range the values cover, in A1 notation.
       # For output, this range indicates the entire requested range,
       # even though the values will exclude trailing rows and columns.
+      # When appending values, this field represents the range to search for a
+      # table, after which values will be appended.
   "values": [ # The data that was read or to be written.  This is an array of arrays,
       # the outer array representing all the data and each inner array
       # representing a major dimension. Each item in the inner array
@@ -315,7 +413,7 @@
       # For output, empty trailing rows and columns will not be included.
       # 
       # For input, supported value types are: bool, string, and double.
-      # Null and empty values will be skipped.
+      # Null values will be skipped.
       # To set a cell to an empty value, set the string value to an empty string.
     [
       "",
@@ -323,14 +421,15 @@
   ],
   "majorDimension": "A String", # The major dimension of the values.
       # 
-      # For output, if the spreadsheet data is: A1=1,B1=2,A2=3,B2=4,
-      # then requesting range=A1:B2,majorDimension=ROWS will return [[1,2],[3,4]],
-      # whereas requesting range=A1:B2,majorDimension=COLUMNS will return
-      # [[1,3],[2,4]].
+      # For output, if the spreadsheet data is: `A1=1,B1=2,A2=3,B2=4`,
+      # then requesting `range=A1:B2,majorDimension=ROWS` will return
+      # `[[1,2],[3,4]]`,
+      # whereas requesting `range=A1:B2,majorDimension=COLUMNS` will return
+      # `[[1,3],[2,4]]`.
       # 
-      # For input, with range=A1:B2,majorDimension=ROWS then [[1,2],[3,4]]
-      # will set A1=1,B1=2,A2=3,B2=4. With range=A1:B2,majorDimension=COLUMNS
-      # then [[1,2],[3,4]] will set A1=1,B1=3,A2=2,B2=4.
+      # For input, with `range=A1:B2,majorDimension=ROWS` then `[[1,2],[3,4]]`
+      # will set `A1=1,B1=2,A2=3,B2=4`. With `range=A1:B2,majorDimension=COLUMNS`
+      # then `[[1,2],[3,4]]` will set `A1=1,B1=3,A2=2,B2=4`.
       # 
       # When writing, if this field is not set, it defaults to ROWS.
 }