Google Apps Script（GAS、ガス）とは、Googleによって開発されたスクリプトプラットフォームである軽量のアプリケーション開発のためのGoogleのワークスペースプラットフォーム。 主にGoogleのサービスを自動化するスクリプト言語である。JavaScriptがもとになっているため汎用性が高く、開発環境はGoogle Chromeだけでいいのでプログラミング初心者が始めやすい言語の1つである。Google Apps Scriptは当初、Mike HarmがGoogleスプレッドシートの開発者として働いていたときに、サイドプロジェクトとして開発された。Google Apps Scriptは、2009年5月に、GoogleドキュメントのプロダクトマネージャーであったJonathanRochelleによってベータテストプログラムが発表されたときに初めて公開された。 その後、2009年8月にGoogle AppsScriptがすべてのGoogleAppsPremierおよびEducationEditionのお客様に利用可能になる。 これはJavaScript1.6に基づいているが、1.7と1.8の一部、およびECMAScript 5APIのサブセットも含まれている 。

2020年3月、Googleは従来の Rhino JavaScript インタープリタに加えて V8 Rhino JavaScript インタープリタの提供を開始し、ECMAScript6以降の機能にも対応した。

Apps Scriptプロジェクトは、 Googleのインフラストラクチャで、サーバー側で実行される。 Googleによると、Apps Scriptは、「Google製品とサードパーティサービス全体のタスクを自動化する簡単な方法を提供します」。 Apps Scriptは、 Googleドキュメント、スプレッドシート、スライドのアドオンを強化するツールでもある。

 概要 
Googleスプレッドシートで主に使われるが、それ以外でも利用ができる。非常に適応範囲が広いので、例えば、SNSに返信が届いた場合Gmailに届ける、Gmailで期限の近いタスクを自分のSlackで表示する等のこともできる。

 例 
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; 
}

 アドオン 
2014年3月、Googleはドキュメントとスプレッドシートへのアドオンを導入。まもなくフォームにも導入された。アドオンを使用することで、メールマージやワークフロー、ダイアグラムビルダーをドキュメントエディタに追加することが可能になった。このアドオンらは全てApps Scriptで構築されているか、あるいはそれを使用してUIを表示し、タスクを外部バックエンドに依存させることで形成されている。例えばメールチンプは、メールチンプのプラットフォームと通信し、メールを送信するためのドキュメント用アドオンを使用している。

これが登場する前は、スクリプトギャラリーというものが存在し、そこでスクリプトを公開することができた。これを通じインストールすると、Apps Scriptのコードのコピーが自身のスプレッドシートに入るようになっていた。アドオンでは、エンドユーザーにソースコードを公開することはされず、全員が最新バージョンを使用することができる。

アドオンリリースの一環として、開発者がエディタに統合しやすくなるよう、ガイドとCSSを導入している。また、それぞれのアドオンは正式公開前にGoogleによってレビューされるので、Google社員からのアドバイスを受けることができる。広告をアドオンに掲載することは原則不可能だが、マネタイズで利益を得ることは可能とされる。