Google Apps Script

Хмарна мова сценаріїв для розробки легких додатків.

Apps Script — скриптова платформа, розроблена в Google для розробки легких веб додатків на платформі Google Workspace. Google Apps Script початково розроблена Майком Гармом як побічний проєкт під час роботи над Google Sheets.[2] Google Apps Script вперше публічно анонсований у травні 2009, коли бета тестування програми було анонсовано Джонатаном Рошелем, який на той час займав посаду продакт менеджера Google Docs.[3] У серпні 2009 Google Apps Script згодом став доступним для всіх клієнтів Google Apps Premier та Education Edition.[4] Фреймворк базується на JavaScript 1.6, але також включає в себе деякі частини з 1.7 та 1.8, а також підмножину ECMAScript 5 API.[5] Проєкти Apps Script запускуються в інфраструктурі Google на стороні сервера. Згідно Google, Apps Script «забезпечує прості шляхи для автоматизації задач на перетині продуктів Google та сторонніх сервісів.»[6] Apps Script також являється інструментом для написання розширень для Google Docs, Sheets та Slides.[7]

Apps Script
Тип Вебфреймворк
Розробник Google
Перший випуск 19 серпня 2009; 14 років тому (2009-08-19)[1]
Операційна система Android, iOS, macOS, Chrome OS
Мова програмування JavaScript
Доступні мови багатомовний</ref>
Українська мова є
Вебсайт script.google.com

Переваги ред.

  1. Базується на JavaScript 1.6, а також включеннях з JavaScript 1.7 та 1.8[8]
  2. Хмарний зневаджувач для зневадження App Scripts у веб браузері.
  3. Може бути застосований для створення простих інструментів для внутрішнього використання в організаціях.
  4. Може бути застосований для виконання простих адміністративних задач.
  5. Модель підтримки спільнотою. [1] [Архівовано 30 грудня 2021 у Wayback Machine.]

Обмеження ред.

  1. Обробка – Як хмарний сервіс, Apps Script обмежує час виконання сценарію користувача, а також обмежує доступ до сервісів Google.[9]
  2. Наразі Google Apps Store не дозволяє прямого підключення до внутрішніх (за брандмауером) корпоративних баз даних, що є ключем до створення бізнес-додатків, однак за допомогою служби JDBC це можна подолати, якщо підключення дозволено із серверів Google на внутрішній сервер бази даних.[10] Аналогічно, відсутність інших підключень, таких як підключення LDAP, обмежує рівень, до якого Goodle Apps Script може використовуватися на підприємстві.
  3. Через хмарний характер Apps Script функції, пов'язані з датою та часом, дають результати, які здаються неправильними через перетин даних часових поясів. Використання об'єктів і функцій Date/Time без дуже точного оголошення та ретельного тестування може призвести до неточних результатів.[11]

Приклад ред.

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, Google представив розширення для Docs та Sheets (незабаром з'явилися Forms). Магазини доповнень дозволяють користувачам додавати додаткові функції до редакторів Google, такі як злиття пошти, робочі процеси, конструктори діаграм тощо. Усі додатки або на 100 % створені за допомогою Apps Script, або просто використовують Apps Script для відображення інтерфейсу користувача в редактори Google, покладаючись на зовнішній сервер для виконання деяких завдань. Наприклад, MailChimp, інструмент для злиття листів, має розширення для Документів Google, яке взаємодіє з платформою MailChimp для надсилання електронних листів.

До Розширень можна було публікувати сценарії для Google Sheets у Script Gallery. Коли користувачі встановлювали сценарії через Gallery, копія коду Apps Script встановлювалася на аркуші таблиць користувача. З додатками кінцевий користувач не має доступу до вихідного коду, і всі використовують останню версію, опубліковану розробником. Цей новий підхід полегшує підтримку існуючого коду і допоміг переконати кілька компаній, наприклад MailChimp або LucidChart, інвестувати в Apps Script.

У рамках випуску доповнень Google також представив посібник зі стилю розробки користувацького інтерфейсу[12] і пакет CSS стилів, щоб допомогти розробникам створювати доповнення, які інтегруються в редактори. Кожне доповнення також перевіряється Google перед його публікацією, і розробники можуть скористатися порадами співробітників Google щодо покращення взаємодії з користувачем. Рекламу не можливо вставляти в доповнення, але можна їх монетизувати.[13]

Див. також ред.

Примітки ред.

  1. Meyer, David (20 серпня 2009). Google Apps Script gets green light. CNet. Архів оригіналу за 10 серпня 2012. Процитовано 26 березня 2011.
  2. Koleda, Eric (21 серпня 2019). Celebrating 10 years of Apps Script: looking back on how it started. Google Cloud Blog. Архів оригіналу за 22 серпня 2019. Процитовано 22 серпня 2019.
  3. Rochelle, Jonathan (27 травня 2009). Old tool, new tricks. Google Cloud Blog. Архів оригіналу за 22 серпня 2019. Процитовано 22 серпня 2019.
  4. Levey, Evin (19 серпня 2009). Google Apps Script Launched to Google Apps Premier and Education. Google Apps Script. Архів оригіналу за 22 серпня 2019. Процитовано 22 серпня 2019.
  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. S2CID 11650861. Архів оригіналу за 29 червня 2010. Процитовано 25 березня 2011.
  6. Google Apps Script. Архів оригіналу за 28 квітня 2016. Процитовано 30 грудня 2021.
  7. Bring a little something extra to Docs and Sheets with add-ons. Архів оригіналу за 24 листопада 2015. Процитовано 30 грудня 2021.
  8. Google Inc. (28 серпня 2018). Built-in Google Services. Google Apps Script. Архів оригіналу за 28 квітня 2016. Процитовано 16 травня 2019.
  9. Quotas for Google Services | Apps Script. Архів оригіналу за 14 липня 2018. Процитовано 30 грудня 2021.
  10. JDBC | Apps Script. Архів оригіналу за 27 квітня 2016. Процитовано 30 грудня 2021.
  11. Issue 1035: utilities.formatdate subtracts a day. Архів оригіналу за 6 листопада 2013. Процитовано 17 грудня 2012.
  12. UI Style Guide for Add-ons. Архів оригіналу за 28 квітня 2016. Процитовано 30 грудня 2021.
  13. I've started a little experiment…. Архів оригіналу за 26 лютого 2017. Процитовано 30 грудня 2021.

Посилання ред.