<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="script_v1.html">Apps Script API</a> . <a href="script_v1.projects.html">projects</a> . <a href="script_v1.projects.versions.html">versions</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#create">create(scriptId, body, x__xgafv=None)</a></code></p>
<p class="firstline">Creates a new immutable version using the current code, with a unique</p>
<p class="toc_element">
  <code><a href="#get">get(scriptId, versionNumber, x__xgafv=None)</a></code></p>
<p class="firstline">Gets a version of a script project.</p>
<p class="toc_element">
  <code><a href="#list">list(scriptId, pageSize=None, pageToken=None, x__xgafv=None)</a></code></p>
<p class="firstline">List the versions of a script project.</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>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="create">create(scriptId, body, x__xgafv=None)</code>
  <pre>Creates a new immutable version using the current code, with a unique
version number.

Args:
  scriptId: string, The script project's Drive ID. (required)
  body: object, The request body. (required)
    The object takes the form of:

{ # A resource representing a script project version. A version is a "snapshot"
      # of a script project and is similar to a read-only branched release. When
      # creating deployments, the version to use must be specified.
    "versionNumber": 42, # The incremental ID that is created by Apps Script when a version is
        # created. This is system assigned number and is immutable once created.
    "description": "A String", # The description for this version.
    "scriptId": "A String", # The script project's Drive ID.
    "createTime": "A String", # When the version was created.
  }

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A resource representing a script project version. A version is a "snapshot"
        # of a script project and is similar to a read-only branched release. When
        # creating deployments, the version to use must be specified.
      "versionNumber": 42, # The incremental ID that is created by Apps Script when a version is
          # created. This is system assigned number and is immutable once created.
      "description": "A String", # The description for this version.
      "scriptId": "A String", # The script project's Drive ID.
      "createTime": "A String", # When the version was created.
    }</pre>
</div>

<div class="method">
    <code class="details" id="get">get(scriptId, versionNumber, x__xgafv=None)</code>
  <pre>Gets a version of a script project.

Args:
  scriptId: string, The script project's Drive ID. (required)
  versionNumber: integer, The version number. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A resource representing a script project version. A version is a "snapshot"
        # of a script project and is similar to a read-only branched release. When
        # creating deployments, the version to use must be specified.
      "versionNumber": 42, # The incremental ID that is created by Apps Script when a version is
          # created. This is system assigned number and is immutable once created.
      "description": "A String", # The description for this version.
      "scriptId": "A String", # The script project's Drive ID.
      "createTime": "A String", # When the version was created.
    }</pre>
</div>

<div class="method">
    <code class="details" id="list">list(scriptId, pageSize=None, pageToken=None, x__xgafv=None)</code>
  <pre>List the versions of a script project.

Args:
  scriptId: string, The script project's Drive ID. (required)
  pageSize: integer, The maximum number of versions on each returned page. Defaults to 50.
  pageToken: string, The token for continuing a previous list request on the next page. This
should be set to the value of `nextPageToken` from a previous response.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Response with the list of the versions for the specified script project.
    "nextPageToken": "A String", # The token use to fetch the next page of records. if not exist in the
        # response, that means no more versions to list.
    "versions": [ # The list of versions.
      { # A resource representing a script project version. A version is a "snapshot"
            # of a script project and is similar to a read-only branched release. When
            # creating deployments, the version to use must be specified.
          "versionNumber": 42, # The incremental ID that is created by Apps Script when a version is
              # created. This is system assigned number and is immutable once created.
          "description": "A String", # The description for this version.
          "scriptId": "A String", # The script project's Drive ID.
          "createTime": "A String", # When the version was created.
        },
    ],
  }</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>

</body></html>