<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></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="script_v1.projects.deployments.html">deployments()</a></code>
</p>
<p class="firstline">Returns the deployments Resource.</p>

<p class="toc_element">
  <code><a href="script_v1.projects.versions.html">versions()</a></code>
</p>
<p class="firstline">Returns the versions Resource.</p>

<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(body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Creates a new, empty script project with no script files and a base manifest file.</p>
<p class="toc_element">
  <code><a href="#get">get(scriptId, x__xgafv=None)</a></code></p>
<p class="firstline">Gets a script project's metadata.</p>
<p class="toc_element">
  <code><a href="#getContent">getContent(scriptId, versionNumber=None, x__xgafv=None)</a></code></p>
<p class="firstline">Gets the content of the script project, including the code source and metadata for each script file.</p>
<p class="toc_element">
  <code><a href="#getMetrics">getMetrics(scriptId, metricsGranularity=None, metricsFilter_deploymentId=None, x__xgafv=None)</a></code></p>
<p class="firstline">Get metrics data for scripts, such as number of executions and active users.</p>
<p class="toc_element">
  <code><a href="#updateContent">updateContent(scriptId, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Updates the content of the specified script project. This content is stored as the HEAD version, and is used when the script is executed as a trigger, in the script editor, in add-on preview mode, or as a web app or Apps Script API in development mode. This clears all the existing files in the project.</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(body=None, x__xgafv=None)</code>
  <pre>Creates a new, empty script project with no script files and a base manifest file.

Args:
  body: object, The request body.
    The object takes the form of:

{ # Request to create a script project.
    &quot;parentId&quot;: &quot;A String&quot;, # The Drive ID of a parent file that the created script project is bound to. This is usually the ID of a Google Doc, Google Sheet, Google Form, or Google Slides file. If not set, a standalone script project is created.
    &quot;title&quot;: &quot;A String&quot;, # The title for the project.
  }

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

Returns:
  An object of the form:

    { # The script project resource.
    &quot;parentId&quot;: &quot;A String&quot;, # The parent&#x27;s Drive ID that the script will be attached to. This is usually the ID of a Google Document or Google Sheet. This filed is optional, and if not set, a stand-alone script will be created.
    &quot;updateTime&quot;: &quot;A String&quot;, # When the script was last updated.
    &quot;title&quot;: &quot;A String&quot;, # The title for the project.
    &quot;lastModifyUser&quot;: { # A simple user profile resource. # User who last modified the script.
      &quot;name&quot;: &quot;A String&quot;, # The user&#x27;s display name.
      &quot;photoUrl&quot;: &quot;A String&quot;, # The user&#x27;s photo.
      &quot;email&quot;: &quot;A String&quot;, # The user&#x27;s identifying email address.
      &quot;domain&quot;: &quot;A String&quot;, # The user&#x27;s domain.
    },
    &quot;scriptId&quot;: &quot;A String&quot;, # The script project&#x27;s Drive ID.
    &quot;creator&quot;: { # A simple user profile resource. # User who originally created the script.
      &quot;name&quot;: &quot;A String&quot;, # The user&#x27;s display name.
      &quot;photoUrl&quot;: &quot;A String&quot;, # The user&#x27;s photo.
      &quot;email&quot;: &quot;A String&quot;, # The user&#x27;s identifying email address.
      &quot;domain&quot;: &quot;A String&quot;, # The user&#x27;s domain.
    },
    &quot;createTime&quot;: &quot;A String&quot;, # When the script was created.
  }</pre>
</div>

<div class="method">
    <code class="details" id="get">get(scriptId, x__xgafv=None)</code>
  <pre>Gets a script project&#x27;s metadata.

Args:
  scriptId: string, The script project&#x27;s Drive ID. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # The script project resource.
    &quot;parentId&quot;: &quot;A String&quot;, # The parent&#x27;s Drive ID that the script will be attached to. This is usually the ID of a Google Document or Google Sheet. This filed is optional, and if not set, a stand-alone script will be created.
    &quot;updateTime&quot;: &quot;A String&quot;, # When the script was last updated.
    &quot;title&quot;: &quot;A String&quot;, # The title for the project.
    &quot;lastModifyUser&quot;: { # A simple user profile resource. # User who last modified the script.
      &quot;name&quot;: &quot;A String&quot;, # The user&#x27;s display name.
      &quot;photoUrl&quot;: &quot;A String&quot;, # The user&#x27;s photo.
      &quot;email&quot;: &quot;A String&quot;, # The user&#x27;s identifying email address.
      &quot;domain&quot;: &quot;A String&quot;, # The user&#x27;s domain.
    },
    &quot;scriptId&quot;: &quot;A String&quot;, # The script project&#x27;s Drive ID.
    &quot;creator&quot;: { # A simple user profile resource. # User who originally created the script.
      &quot;name&quot;: &quot;A String&quot;, # The user&#x27;s display name.
      &quot;photoUrl&quot;: &quot;A String&quot;, # The user&#x27;s photo.
      &quot;email&quot;: &quot;A String&quot;, # The user&#x27;s identifying email address.
      &quot;domain&quot;: &quot;A String&quot;, # The user&#x27;s domain.
    },
    &quot;createTime&quot;: &quot;A String&quot;, # When the script was created.
  }</pre>
</div>

<div class="method">
    <code class="details" id="getContent">getContent(scriptId, versionNumber=None, x__xgafv=None)</code>
  <pre>Gets the content of the script project, including the code source and metadata for each script file.

Args:
  scriptId: string, The script project&#x27;s Drive ID. (required)
  versionNumber: integer, The version number of the project to retrieve. If not provided, the project&#x27;s HEAD version is returned.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # The Content resource.
    &quot;files&quot;: [ # The list of script project files. One of the files is a script manifest; it must be named &quot;appsscript&quot;, must have type of JSON, and include the manifest configurations for the project.
      { # An individual file within a script project. A file is a third-party source code created by one or more developers. It can be a server-side JS code, HTML, or a configuration file. Each script project can contain multiple files.
        &quot;source&quot;: &quot;A String&quot;, # The file content.
        &quot;name&quot;: &quot;A String&quot;, # The name of the file. The file extension is not part of the file name, which can be identified from the type field.
        &quot;createTime&quot;: &quot;A String&quot;, # Creation date timestamp. This read-only field is only visible to users who have WRITER permission for the script project.
        &quot;type&quot;: &quot;A String&quot;, # The type of the file.
        &quot;functionSet&quot;: { # A set of functions. No duplicates are permitted. # The defined set of functions in the script file, if any.
          &quot;values&quot;: [ # A list of functions composing the set.
            { # Represents a function in a script project.
              &quot;name&quot;: &quot;A String&quot;, # The function name in the script project.
            },
          ],
        },
        &quot;lastModifyUser&quot;: { # A simple user profile resource. # The user who modified the file most recently. This read-only field is only visible to users who have WRITER permission for the script project.
          &quot;name&quot;: &quot;A String&quot;, # The user&#x27;s display name.
          &quot;photoUrl&quot;: &quot;A String&quot;, # The user&#x27;s photo.
          &quot;email&quot;: &quot;A String&quot;, # The user&#x27;s identifying email address.
          &quot;domain&quot;: &quot;A String&quot;, # The user&#x27;s domain.
        },
        &quot;updateTime&quot;: &quot;A String&quot;, # Last modified date timestamp. This read-only field is only visible to users who have WRITER permission for the script project.
      },
    ],
    &quot;scriptId&quot;: &quot;A String&quot;, # The script project&#x27;s Drive ID.
  }</pre>
</div>

<div class="method">
    <code class="details" id="getMetrics">getMetrics(scriptId, metricsGranularity=None, metricsFilter_deploymentId=None, x__xgafv=None)</code>
  <pre>Get metrics data for scripts, such as number of executions and active users.

Args:
  scriptId: string, Required field indicating the script to get metrics for. (required)
  metricsGranularity: string, Required field indicating what granularity of metrics are returned.
    Allowed values
      UNSPECIFIED_GRANULARITY - Default metric granularity used to query no metrics.
      WEEKLY - Represents weekly metrics.
      DAILY - Represents daily metrics over a period of 7 days.
  metricsFilter_deploymentId: string, Optional field indicating a specific deployment to retrieve metrics from.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Resource containing usage stats for a given script, based on the supplied filter and mask present in the request.
    &quot;activeUsers&quot;: [ # Number of active users.
      { # Metrics value that holds number of executions counted.
        &quot;startTime&quot;: &quot;A String&quot;, # Required field indicating the start time of the interval.
        &quot;value&quot;: &quot;A String&quot;, # Indicates the number of executions counted.
        &quot;endTime&quot;: &quot;A String&quot;, # Required field indicating the end time of the interval.
      },
    ],
    &quot;failedExecutions&quot;: [ # Number of failed executions.
      { # Metrics value that holds number of executions counted.
        &quot;startTime&quot;: &quot;A String&quot;, # Required field indicating the start time of the interval.
        &quot;value&quot;: &quot;A String&quot;, # Indicates the number of executions counted.
        &quot;endTime&quot;: &quot;A String&quot;, # Required field indicating the end time of the interval.
      },
    ],
    &quot;totalExecutions&quot;: [ # Number of total executions.
      { # Metrics value that holds number of executions counted.
        &quot;startTime&quot;: &quot;A String&quot;, # Required field indicating the start time of the interval.
        &quot;value&quot;: &quot;A String&quot;, # Indicates the number of executions counted.
        &quot;endTime&quot;: &quot;A String&quot;, # Required field indicating the end time of the interval.
      },
    ],
  }</pre>
</div>

<div class="method">
    <code class="details" id="updateContent">updateContent(scriptId, body=None, x__xgafv=None)</code>
  <pre>Updates the content of the specified script project. This content is stored as the HEAD version, and is used when the script is executed as a trigger, in the script editor, in add-on preview mode, or as a web app or Apps Script API in development mode. This clears all the existing files in the project.

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

{ # The Content resource.
  &quot;files&quot;: [ # The list of script project files. One of the files is a script manifest; it must be named &quot;appsscript&quot;, must have type of JSON, and include the manifest configurations for the project.
    { # An individual file within a script project. A file is a third-party source code created by one or more developers. It can be a server-side JS code, HTML, or a configuration file. Each script project can contain multiple files.
      &quot;source&quot;: &quot;A String&quot;, # The file content.
      &quot;name&quot;: &quot;A String&quot;, # The name of the file. The file extension is not part of the file name, which can be identified from the type field.
      &quot;createTime&quot;: &quot;A String&quot;, # Creation date timestamp. This read-only field is only visible to users who have WRITER permission for the script project.
      &quot;type&quot;: &quot;A String&quot;, # The type of the file.
      &quot;functionSet&quot;: { # A set of functions. No duplicates are permitted. # The defined set of functions in the script file, if any.
        &quot;values&quot;: [ # A list of functions composing the set.
          { # Represents a function in a script project.
            &quot;name&quot;: &quot;A String&quot;, # The function name in the script project.
          },
        ],
      },
      &quot;lastModifyUser&quot;: { # A simple user profile resource. # The user who modified the file most recently. This read-only field is only visible to users who have WRITER permission for the script project.
        &quot;name&quot;: &quot;A String&quot;, # The user&#x27;s display name.
        &quot;photoUrl&quot;: &quot;A String&quot;, # The user&#x27;s photo.
        &quot;email&quot;: &quot;A String&quot;, # The user&#x27;s identifying email address.
        &quot;domain&quot;: &quot;A String&quot;, # The user&#x27;s domain.
      },
      &quot;updateTime&quot;: &quot;A String&quot;, # Last modified date timestamp. This read-only field is only visible to users who have WRITER permission for the script project.
    },
  ],
  &quot;scriptId&quot;: &quot;A String&quot;, # The script project&#x27;s Drive ID.
}

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

Returns:
  An object of the form:

    { # The Content resource.
    &quot;files&quot;: [ # The list of script project files. One of the files is a script manifest; it must be named &quot;appsscript&quot;, must have type of JSON, and include the manifest configurations for the project.
      { # An individual file within a script project. A file is a third-party source code created by one or more developers. It can be a server-side JS code, HTML, or a configuration file. Each script project can contain multiple files.
        &quot;source&quot;: &quot;A String&quot;, # The file content.
        &quot;name&quot;: &quot;A String&quot;, # The name of the file. The file extension is not part of the file name, which can be identified from the type field.
        &quot;createTime&quot;: &quot;A String&quot;, # Creation date timestamp. This read-only field is only visible to users who have WRITER permission for the script project.
        &quot;type&quot;: &quot;A String&quot;, # The type of the file.
        &quot;functionSet&quot;: { # A set of functions. No duplicates are permitted. # The defined set of functions in the script file, if any.
          &quot;values&quot;: [ # A list of functions composing the set.
            { # Represents a function in a script project.
              &quot;name&quot;: &quot;A String&quot;, # The function name in the script project.
            },
          ],
        },
        &quot;lastModifyUser&quot;: { # A simple user profile resource. # The user who modified the file most recently. This read-only field is only visible to users who have WRITER permission for the script project.
          &quot;name&quot;: &quot;A String&quot;, # The user&#x27;s display name.
          &quot;photoUrl&quot;: &quot;A String&quot;, # The user&#x27;s photo.
          &quot;email&quot;: &quot;A String&quot;, # The user&#x27;s identifying email address.
          &quot;domain&quot;: &quot;A String&quot;, # The user&#x27;s domain.
        },
        &quot;updateTime&quot;: &quot;A String&quot;, # Last modified date timestamp. This read-only field is only visible to users who have WRITER permission for the script project.
      },
    ],
    &quot;scriptId&quot;: &quot;A String&quot;, # The script project&#x27;s Drive ID.
  }</pre>
</div>

</body></html>