Google Apps Script

出典: フリー百科事典『ウィキペディア(Wikipedia)』
ナビゲーションに移動 検索に移動
Google Apps Script
開発元 Google
プラットフォーム InstagramYouTubeGmailカレンダーChatドライブドキュメントスプレッドシートプレゼンテーションKeepサイト、Vault
種別 マクロ言語およびクラウドコンピューティング
公式サイト 公式ウェブサイト
影響を受けた言語 JavaScript
テンプレートを表示
Apps Script
Google Apps Script.png
開発元 Google
初版 2009年8月19日 (12年前) (2009-08-19)[1]
プログラミング
言語
JavaScript
種別 Web application framework, scripting framework
公式サイト script.google.com
テンプレートを表示

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

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

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

概要[編集]

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

アドオン[編集]

関連項目[編集]

参考文献[編集]

  1. ^ Meyer, David (2009年8月20日). “Google Apps Script gets green light”. CNet. http://news.cnet.com/8301-1001_3-10314002-92.html 2011年3月26日閲覧。 
  2. ^ Koleda (2019年8月21日). “Celebrating 10 years of Apps Script: looking back on how it started”. Google Cloud Blog. 2019年8月22日閲覧。
  3. ^ Rochelle (2009年5月27日). “Old tool, new tricks”. Google Cloud Blog. 2019年8月22日閲覧。
  4. ^ Levey (2009年8月19日). “Google Apps Script Launched to Google Apps Premier and Education”. Google Apps Script. 2019年8月22日閲覧。
  5. ^ Kienle, Holger (May–June 2010). “It's About Time to Take JavaScript (More) Seriously”. IEEE Software 27 (3): 60–62. doi:10.1109/MS.2010.76. http://www.computer.org/portal/web/csdl/doi/10.1109/MS.2010.76 2011年3月25日閲覧。. 
  6. ^ Alexandrina Garcia-Verdin (2020年3月17日). “Data processing just got easier with Apps Script’s new V8 runtime”. Google Cloud Blog. 2021年7月4日閲覧。
  7. ^ Google Apps Script
  8. ^ Bring a little something extra to Docs and Sheets with add-ons

外部リンク[編集]