<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="#close">close()</a></code></p>
<p class="firstline">Close httplib2 connections.</p>
<p class="toc_element">
  <code><a href="#create">create(scriptId, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Creates a new immutable version using the current code, with a unique version number.</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="close">close()</code>
  <pre>Close httplib2 connections.</pre>
</div>

<div class="method">
    <code class="details" id="create">create(scriptId, body=None, 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&#x27;s Drive ID. (required)
  body: object, The request body.
    The object takes the form of:

{ # A resource representing a script project version. A version is a &quot;snapshot&quot; of a script project and is similar to a read-only branched release. When creating deployments, the version to use must be specified.
  &quot;scriptId&quot;: &quot;A String&quot;, # The script project&#x27;s Drive ID.
  &quot;description&quot;: &quot;A String&quot;, # The description for this version.
  &quot;createTime&quot;: &quot;A String&quot;, # When the version was created.
  &quot;versionNumber&quot;: 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.
}

  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 &quot;snapshot&quot; of a script project and is similar to a read-only branched release. When creating deployments, the version to use must be specified.
    &quot;scriptId&quot;: &quot;A String&quot;, # The script project&#x27;s Drive ID.
    &quot;description&quot;: &quot;A String&quot;, # The description for this version.
    &quot;createTime&quot;: &quot;A String&quot;, # When the version was created.
    &quot;versionNumber&quot;: 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.
  }</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&#x27;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 &quot;snapshot&quot; of a script project and is similar to a read-only branched release. When creating deployments, the version to use must be specified.
    &quot;scriptId&quot;: &quot;A String&quot;, # The script project&#x27;s Drive ID.
    &quot;description&quot;: &quot;A String&quot;, # The description for this version.
    &quot;createTime&quot;: &quot;A String&quot;, # When the version was created.
    &quot;versionNumber&quot;: 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.
  }</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&#x27;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.
    &quot;nextPageToken&quot;: &quot;A String&quot;, # The token use to fetch the next page of records. if not exist in the response, that means no more versions to list.
    &quot;versions&quot;: [ # The list of versions.
      { # A resource representing a script project version. A version is a &quot;snapshot&quot; of a script project and is similar to a read-only branched release. When creating deployments, the version to use must be specified.
        &quot;scriptId&quot;: &quot;A String&quot;, # The script project&#x27;s Drive ID.
        &quot;description&quot;: &quot;A String&quot;, # The description for this version.
        &quot;createTime&quot;: &quot;A String&quot;, # When the version was created.
        &quot;versionNumber&quot;: 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.
      },
    ],
  }</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 &#x27;execute()&#x27; on to request the next
  page. Returns None if there are no more items in the collection.
    </pre>
</div>

</body></html>