Google Apps Script

Google Apps Script
Google Apps Script.png
Developer(s) Google
Initial release 2009 (2009)[1]
Development status Active
Written in JavaScript
Operating system Cross-platform
Type Web application framework, Scripting language
Website script.google.com

Google Apps Script is a cloud based scripting language for light-weight application development in the Google Apps platform. It is based on JavaScript 1.8 and provides subset of ECMAScript 5 API,[2] however instead of running on the client, it gets executed in the Google Cloud. Google Apps Script essentially provides easy ways to automate tasks across Google products and third party services.[3]

Contents

Benefits

  1. Based on JavaScript 1.8. Easy to learn.
  2. Under the hood, Google Apps Script uses the Google Web Toolkit (GWT) to create and display user interface elements.[4] GWT is easy to learn, and completely abstracts the complexity of AJAX/HTML from the developer.
  3. Cloud based debugger for debugging App Scripts in the web browser.
  4. It can be used to create simple tools for an organization's internal consumption.
  5. It can be used to perform simple system administration tasks.

Limitations

  1. Currently Google Apps Script does not allow connection to internal (behind-the-firewall) corporate databases, which is key to building business apps. Similarly, lack of other connectivity, such as LDAP connectivity, limits the level to which GAS can be used in the enterprise.[citation needed]
  2. Google's implementation of Javascript may be inaccurate and some functions may not return expected results.[5]

Example

The following code demonstrate use of Google Apps Script UI Services and DocList Services to display contents of a Google Docs Collection in Tree format.

Notice the use of JavaScript and the use of Google Web Toolkit widgets.

function doGet(e){   
  var app = UiApp.createApplication();
  var scrollPanel = app.createScrollPanel(); // Scroll Panel is a Google Web Toolkit Widget
  tree = app.createTree(); // Tree is a Google Web Toolkit Widget
  tree.addItem(buildTree(app, "Enterprise 2.0 - Saqib"));
  scrollPanel.add(tree);  
  scrollPanel.setHeight("500");
  app.add(scrollPanel);
  return app;
}
 
function buildTree(a, searchTerm){
  var tree = a.createTreeItem(); // TreeItem is Google Web Toolkit Widget
  tree.setText(searchTerm);
 
  // Use of the Google Apps Script DocList Service to retrieve the collections.
  var folders = DocsList.getFolder(searchTerm).getFolders(); 
  for (var i = 0; i < folders.length; i++)
      tree.addItem(buildTree(a, folders[i].getName())).setState(true, true);
 
  var files = DocsList.getFolder(searchTerm).getFiles();
  for (var i = 0; i < files.length; i++) {    
    if (files[i].getType() == "document") {
     urlBase = "https://docs.google.com/document/edit?id=";
     iconHTML = "https://docs.google.com/images/doclist/icon_7_document_list.png";
    } 
    else if (files[i].getType() == "spreadsheet") {      
      urlBase = "https://spreadsheets.google.com/ccc?key=";
      iconHTML = "https://docs.google.com/images/doclist/icon_7_spreadsheet_list.png";
    }
    else if (files[i].getType() == "presentation") {       
      urlBase = "https://docs.google.com/present/edit?id=";
      iconHTML = "https://docs.google.com/images/doclist/icon_7_presentation_list.png";
    }
    else if (files[i].getType() == "drawing") {       
      urlBase = "https://docs.google.com/drawings/edit?id=";
      iconHTML = "https://docs.google.com/images/doclist/icon_7_drawing_list.png";       
    }
    else {
      urlBase = "https://docs.google.com/fileview?id=";
      iconHTML = "https://docs.google.com/images/doclist/icon_7_generic_list.png";    
    }    
 
    var image = a.createImage(iconHTML);
    var fileLabel = a.createAnchor(files[i].getName(), urlBase+ files[i].getId());     
    var fileLabelPanel = a.createHorizontalPanel();
    fileLabelPanel.add(image);
    fileLabelPanel.add(fileLabel);     
    tree.addItem(fileLabelPanel).setState(true, true);
  }   
  return tree;   
}


Embedding HTML in GAS with a GWT Widget: [6]

function doGet() {
   var app = UiApp.createApplication();
   app.add(app.createHTML("<b>Hello World!</b>"));
   return app;
 }

References

External links