<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="#create">create(body, x__xgafv=None)</a></code></p>
<p class="firstline">Creates a new, empty script project with no script files and a base</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</p>
<p class="toc_element">
  <code><a href="#getMetrics">getMetrics(scriptId, metricsFilter_deploymentId=None, x__xgafv=None, metricsGranularity=None)</a></code></p>
<p class="firstline">Get metrics data for scripts, such as number of executions and</p>
<p class="toc_element">
  <code><a href="#updateContent">updateContent(scriptId, body, x__xgafv=None)</a></code></p>
<p class="firstline">Updates the content of the specified script project.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="create">create(body, 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. (required)
    The object takes the form of:

{ # Request to create a script project.
    "title": "A String", # The title for the project.
    "parentId": "A String", # 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.
  }

  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.
    "updateTime": "A String", # When the script was last updated.
    "lastModifyUser": { # A simple user profile resource. # User who last modified the script.
      "domain": "A String", # The user's domain.
      "email": "A String", # The user's identifying email address.
      "name": "A String", # The user's display name.
      "photoUrl": "A String", # The user's photo.
    },
    "title": "A String", # The title for the project.
    "creator": { # A simple user profile resource. # User who originally created the script.
      "domain": "A String", # The user's domain.
      "email": "A String", # The user's identifying email address.
      "name": "A String", # The user's display name.
      "photoUrl": "A String", # The user's photo.
    },
    "scriptId": "A String", # The script project's Drive ID.
    "parentId": "A String", # The parent'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.
    "createTime": "A String", # 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's metadata.

Args:
  scriptId: string, The script project'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.
    "updateTime": "A String", # When the script was last updated.
    "lastModifyUser": { # A simple user profile resource. # User who last modified the script.
      "domain": "A String", # The user's domain.
      "email": "A String", # The user's identifying email address.
      "name": "A String", # The user's display name.
      "photoUrl": "A String", # The user's photo.
    },
    "title": "A String", # The title for the project.
    "creator": { # A simple user profile resource. # User who originally created the script.
      "domain": "A String", # The user's domain.
      "email": "A String", # The user's identifying email address.
      "name": "A String", # The user's display name.
      "photoUrl": "A String", # The user's photo.
    },
    "scriptId": "A String", # The script project's Drive ID.
    "parentId": "A String", # The parent'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.
    "createTime": "A String", # 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's Drive ID. (required)
  versionNumber: integer, The version number of the project to retrieve. If not provided, the
project'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.
    "files": [ # The list of script project files.
        # One of the files is a script manifest; it must be named "appsscript",
        # 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.
        "updateTime": "A String", # Last modified date timestamp.
            # This read-only field is only visible to users who have WRITER
            # permission for the script project.
        "lastModifyUser": { # 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.
          "domain": "A String", # The user's domain.
          "email": "A String", # The user's identifying email address.
          "name": "A String", # The user's display name.
          "photoUrl": "A String", # The user's photo.
        },
        "source": "A String", # The file content.
        "functionSet": { # A set of functions. No duplicates are permitted. # The defined set of functions in the script file, if any.
          "values": [ # A list of functions composing the set.
            { # Represents a function in a script project.
              "name": "A String", # The function name in the script project.
            },
          ],
        },
        "type": "A String", # The type of the file.
        "createTime": "A String", # Creation date timestamp.
            # This read-only field is only visible to users who have WRITER
            # permission for the script project.
        "name": "A String", # The name of the file. The file extension is not part of the file
            # name, which can be identified from the type field.
      },
    ],
    "scriptId": "A String", # The script project's Drive ID.
  }</pre>
</div>

<div class="method">
    <code class="details" id="getMetrics">getMetrics(scriptId, metricsFilter_deploymentId=None, x__xgafv=None, metricsGranularity=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)
  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
  metricsGranularity: string, Required field indicating what granularity of metrics are returned.

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.
    "totalExecutions": [ # Number of total executions.
      { # Metrics value that holds number of executions counted.
        "endTime": "A String", # Required field indicating the end time of the interval.
        "startTime": "A String", # Required field indicating the start time of the interval.
        "value": "A String", # Indicates the number of executions counted.
      },
    ],
    "activeUsers": [ # Number of active users.
      { # Metrics value that holds number of executions counted.
        "endTime": "A String", # Required field indicating the end time of the interval.
        "startTime": "A String", # Required field indicating the start time of the interval.
        "value": "A String", # Indicates the number of executions counted.
      },
    ],
    "failedExecutions": [ # Number of failed executions.
      { # Metrics value that holds number of executions counted.
        "endTime": "A String", # Required field indicating the end time of the interval.
        "startTime": "A String", # Required field indicating the start time of the interval.
        "value": "A String", # Indicates the number of executions counted.
      },
    ],
  }</pre>
</div>

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

{ # The Content resource.
  "files": [ # The list of script project files.
      # One of the files is a script manifest; it must be named "appsscript",
      # 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.
      "updateTime": "A String", # Last modified date timestamp.
          # This read-only field is only visible to users who have WRITER
          # permission for the script project.
      "lastModifyUser": { # 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.
        "domain": "A String", # The user's domain.
        "email": "A String", # The user's identifying email address.
        "name": "A String", # The user's display name.
        "photoUrl": "A String", # The user's photo.
      },
      "source": "A String", # The file content.
      "functionSet": { # A set of functions. No duplicates are permitted. # The defined set of functions in the script file, if any.
        "values": [ # A list of functions composing the set.
          { # Represents a function in a script project.
            "name": "A String", # The function name in the script project.
          },
        ],
      },
      "type": "A String", # The type of the file.
      "createTime": "A String", # Creation date timestamp.
          # This read-only field is only visible to users who have WRITER
          # permission for the script project.
      "name": "A String", # The name of the file. The file extension is not part of the file
          # name, which can be identified from the type field.
    },
  ],
  "scriptId": "A String", # The script project'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.
    "files": [ # The list of script project files.
        # One of the files is a script manifest; it must be named "appsscript",
        # 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.
        "updateTime": "A String", # Last modified date timestamp.
            # This read-only field is only visible to users who have WRITER
            # permission for the script project.
        "lastModifyUser": { # 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.
          "domain": "A String", # The user's domain.
          "email": "A String", # The user's identifying email address.
          "name": "A String", # The user's display name.
          "photoUrl": "A String", # The user's photo.
        },
        "source": "A String", # The file content.
        "functionSet": { # A set of functions. No duplicates are permitted. # The defined set of functions in the script file, if any.
          "values": [ # A list of functions composing the set.
            { # Represents a function in a script project.
              "name": "A String", # The function name in the script project.
            },
          ],
        },
        "type": "A String", # The type of the file.
        "createTime": "A String", # Creation date timestamp.
            # This read-only field is only visible to users who have WRITER
            # permission for the script project.
        "name": "A String", # The name of the file. The file extension is not part of the file
            # name, which can be identified from the type field.
      },
    ],
    "scriptId": "A String", # The script project's Drive ID.
  }</pre>
</div>

</body></html>