{{위키데이터 속성 추적}}
{{소프트웨어 정보
| name                   = 앱 스크립트
| logo                   = Google Apps Script.svg
| logo_size              = 100
| logo caption           = 
| developer              = [[구글]]
| released               = {{시작 날짜와 나이|2009|8|19}}<ref>{{뉴스 인용|last=Meyer|first=David|title=Google Apps Script gets green light|url=http://news.cnet.com/8301-1001_3-10314002-92.html|access-date=26 March 2011|newspaper=CNet|date=August 20, 2009|archive-date=2012-08-10|archive-url=https://web.archive.org/web/20120810230818/http://news.cnet.com/8301-1001_3-10314002-92.html|url-status=dead}}</ref>
| programming language   = [[자바스크립트]]
| genre                  = [[웹 프레임워크]], [[스크립팅 프레임워크]]
| website                = {{URL|https://script.google.com}}
}}
'''앱 스크립트'''(Apps Script)는 [[구글 워크스페이스]] 플랫폼에서 가벼운 애플리케이션 개발을 위해 [[구글]]이 개발한 스크립팅 플랫폼이다. 구글 앱 스크립트는 처음에 마이크 함(Mike Harm)이 구글 시트의 개발자로서 일할 당시 부차적인 프로젝트로서 개발하였다.<ref>{{웹 인용|last=Koleda|first=Eric |title=Celebrating 10 years of Apps Script: looking back on how it started |url=https://cloud.google.com/blog/products/g-suite/celebrating-10-years-of-apps-script-looking-back-on-how-it-started |website=Google Cloud Blog |access-date=22 August 2019 |date=August 21, 2019}}</ref> 구글 앱 스크립트는 2009년 5월 베타 테스트 프로그램이 당시 구글 문서 제품 관리자 조나란 로첼에 의해 발표되었을 때 처음 발표되었다.<ref>{{웹 인용|last=Rochelle|first=Jonathan |title=Old tool, new tricks |url=https://cloud.googleblog.com/2009/05/old-tool-new-tricks.html |website=Google Cloud Blog |access-date=22 August 2019 |date=May 27, 2009}}</ref> 2009년 8월 구글 앱 스크립트는 모든 구글 앱 프리미어 및 에듀케이션 에디션 고객들에게 이용이 가능해졌다.<ref>{{웹 인용|last=Levey|first=Evin |title=Google Apps Script Launched to Google Apps Premier and Education | url=http://googleappsscript.blogspot.com/2009/08/google-apps-script-launched-to-google.html |website=Google Apps Script |access-date=22 August 2019 |date=August 19, 2009}}</ref> [[자바스크립트]] 1.6에 기반을 두지만 [[ECMA스크립트]] 5 API의 하위 집합 및 1.7, 1.8의 일부도 포함한다.<ref>{{저널 인용|last=Kienle|first=Holger|title=It's About Time to Take JavaScript (More) Seriously|journal=IEEE Software|date=May–June  2010|volume=27|issue=3|pages=60–62|url=http://www.computer.org/portal/web/csdl/doi/10.1109/MS.2010.76|access-date=25 March 2011|doi=10.1109/MS.2010.76|archive-url=https://web.archive.org/web/20100629042409/http://www.computer.org/portal/web/csdl/doi/10.1109/MS.2010.76|archive-date=29 June 2010|url-status=dead}}</ref> 앱 스크립트 프로젝트는 [[구글]] 인프라의 [[서버 사이드]]로 실행된다. 구글에 따르면 구글 스크립트는 구글 제품과 서드파티 서비스 간 태스크를 자동화하기 용이한 방법을 제공한다.<ref>[https://developers.google.com/apps-script/guides/services/#basic_javascript_features Google Apps Script]</ref> 앱 스크립트는 또한 [[구글 드라이브]]용 추가 기능을 제공하는 도구이기도 하다.<ref>[http://googledrive.blogspot.com/2014/03/add-ons.html Bring a little something extra to Docs and Sheets with add-ons]</ref>

== 예시 ==
<syntaxhighlight lang="javascript>
function doGet(e) {
  var searchTerm = 'Script Tools'
  var ui = XmlService.createDocument(XmlService.createElement('html')).setDocType(XmlService.createDocType('html'))
  var body = XmlService.createElement('body')
  body = buildTree(body, searchTerm);
  ui.getRootElement().addContent(body)
  return HtmlService.createHtmlOutput(XmlService.getRawFormat().format(ui))
}


function buildTree(node, searchTerm) {
  var ul = XmlService.createElement('ul').addContent(XmlService.createElement('p').addContent(XmlService.createText(searchTerm)));
  // Use of the Apps Script DriveApp Service to retrieve the collections.
  var folders = DriveApp.getFoldersByName(searchTerm).next().getFolders()
  while (folders.hasNext()){
    var thisFolder = folders.next();
    var li = XmlService.createElement('li');
    var resp = buildTree(li, thisFolder.getName())
    ul.addContent(li);
  }

  var files =  DriveApp.getFoldersByName(searchTerm).next().getFiles()
  while (files.hasNext()) {
    var thisFile = files.next()
    if (thisFile.getMimeType() === "application/vnd.google-apps.document") {
      urlBase = "https://docs.google.com/document/edit?id=";
      iconHTML = "https://drive-thirdparty.googleusercontent.com/32/type/application/vnd.google-apps.document";
    }
    else if (thisFile.getMimeType() === "application/vnd.google-apps.spreadsheet") {
      urlBase = "https://spreadsheets.google.com/ccc?key=";
      iconHTML = "https://drive-thirdparty.googleusercontent.com/32/type/application/vnd.google-apps.spreadsheet";
    }
    else if (thisFile.getMimeType() === "application/vnd.google-apps.script") {
      urlBase = "https://docs.google.com/fileview?id=";
      iconHTML = "https://drive-thirdparty.googleusercontent.com/32/type/application/vnd.google-apps.script";
    }
    else if (thisFile.getMimeType() === "application/vnd.google-apps.presentation") {
      urlBase = "https://docs.google.com/present/edit?id=";
      iconHTML = "https://drive-thirdparty.googleusercontent.com/32/type/application/vnd.google-apps.presentation";
    }
    else if (thisFile.getMimeType() === "application/vnd.google-apps.drawing") {
      urlBase = "https://docs.google.com/drawings/edit?id=";
      iconHTML = "https://drive-thirdparty.googleusercontent.com/32/type/application/vnd.google-apps.drawing";
    }
    else {
      urlBase = "https://docs.google.com/fileview?id=";
      iconHTML = "https://drive-thirdparty.googleusercontent.com/32/type/application/application/vnd.google-apps.unknown";
    }

    var li = XmlService.createElement('li');
    var image = XmlService.createElement('img').setAttribute('src', iconHTML);
    var fileLabel =  XmlService.createElement('a').setAttribute('href', urlBase + thisFile.getId())
                      .setAttribute('target', '_blank').addContent(XmlService.createText(thisFile.getName()))
    var fileLabelPanel = XmlService.createElement('div').setAttribute('style', 'display:flex;flex-direction: row;')
    fileLabelPanel.addContent(image)
    fileLabelPanel.addContent(fileLabel)
    li.addContent(fileLabelPanel)
    ul.addContent(li)
  }
  node.addContent(ul)
  return node;
}
</syntaxhighlight>

== 같이 보기 ==
* [[구글 앱 엔진]]
* [[구글 앱 메이커]]

== 각주 ==
{{각주}}

== 외부 링크 ==
* {{공식 웹사이트}}
* [https://developers.google.com/apps-script/case-studies developers.google.com/apps-script/case-studies]

{{구글}}

[[분류:구글의 서비스|앱 스크립트]]
[[분류:크로스 플랫폼 소프트웨어]]
[[분류:자바스크립트]]
[[분류:프로토타입 기반 프로그래밍 언어]]
[[분류:스크립트 언어]]
[[분류:웹 프레임워크]]
[[분류:객체 기반 프로그래밍 언어]]