Google Apps Script
- Ограничения: Quotas for Google Services
- GAS — Оплаты клиентов — импорт выписок из разных банков и из Google Form
- GAS — Генератор документов
- Google Forms Email Sender — отправка e-mail уведомлений из Google Forms.
Можно использовать для красивых уведомлений из брифов и т.п. наскоро сделанных анкет,
а также для замены почтовых форм сайта - см. Форма обратной связи на основе Google Forms
https://www.benlcollins.com/apps-script/google-apps-script-ide/
| Auto-complete Google stuff | Ctrl+Space |
| Auto-complete your own variables | Alt+/ |
| Run selected function | Ctrl+R |
| View log of run | Ctrl+Enter |
| (With auto-indent on) indent all code correctly |
Tab (works on selected text) |
| Comment/uncomment | Ctrl+/ |
Logger.log("variableName: " + variableName);
Затем нажать Выполнить.
return;
function getActiveRowInfo() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var activeRow = ss.getActiveCell().getRow();
Logger.log("activeRow: " + activeRow);
}
function testMoment() {
eval(UrlFetchApp.fetch('https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js').getContentText());
eval(UrlFetchApp.fetch('https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/locale/uk.js').getContentText());
// eval(UrlFetchApp.fetch('https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/locale/ru.js').getContentText());
var date = moment().format('LL');
var momentLocale = moment.locale();
Logger.log(date);
Logger.log(momentLocale);
}
Доступные в CDN библиотеки: https://cdnjs.com/libraries/moment.js/
function clearHighLight() {
var bgcolor = '#ffffff'; //white
var doc = DocumentApp.getActiveDocument();
var rangeBuilder = doc.newRange();
var body = doc.getBody();
var numCh = body.getNumChildren();
for (var i=0; i<numCh; i++) {
var child = body.getChild(i); //collect all range elements
var all = rangeBuilder.addElement(child);
}
doc.setSelection(all);
var selectedElements = all.getRangeElements();
for (var i=0; i<selectedElements.length; i++) {
var selElem = selectedElements[i];
var el = selElem.getElement();
var isPartial = selElem.isPartial();
if (isPartial) {
var selStart = selElem.getStartOffset();
var selEnd = selElem.getEndOffsetInclusive();
el.asText().setBackgroundColor(selStart, selEnd, bgcolor)
} else {
var selStart = selElem.getStartOffset();
var selEnd = selElem.getEndOffsetInclusive();
el.asText().setBackgroundColor(bgcolor);
}
}
var rg = doc.newRange();
rg.addElement(body.getChild(0)); //child zero normally has nothing in it
doc.setSelection(rg.build());
}
function getDocAsHtml(docId){
var url = 'https://docs.google.com/feeds/download/documents/Export?exportFormat=html&format=html&id=';
return UrlFetchApp.fetch(url+docId).getContentText();
}
Приведенный код заполняет левую верхнюю ячейку первого листа активной таблицы:
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];
sheet.getRange("A1").setValue("Содержимое ячейки");
А этот код создает копию текстового документа и кладет его в определенное место:
var source = DocsList.getFileById("SOURCE_ID");
var newFile = source.makeCopy("новое имя файла");
var targetFolder = DocsList.getFolderById("ID папки, в которой будет размещен свежесозданный файл");
newFile.addToFolder(targetFolder);
А вот так можно провести замену строк в текстовом документе:
var doc = DocumentApp.openById("ID редактируемого документа");
doc.editAsText().replaceText("старый текст", "новый текст");
Logger.log(doc.getText())
Следующий пример кода подсвечивает определенные слова в тексте:
var doc = DocumentApp.openById('id документа');
var textToHighlight = 'текст для подсветки';
var highlightStyle = {};
highlightStyle[DocumentApp.Attribute.FOREGROUND_COLOR] = '#FF0000';
var paras = doc.getParagraphs();
var textLocation = {};
for (i=0; i<paras.length; ++i)
{
textLocation = paras[i].findText(textToHighlight);
if (textLocation != null && textLocation.getStartOffset() != -1)
{
textLocation.getElement().setAttributes(textLocation.getStartOffset(),textLocation.getEndOffsetInclusive(), highlightStyle);
}
}
Работа с Google Translate:
var word = LanguageApp.translate('кукушка', 'ru', 'es');
Logger.log(word);
// Скрипт выведет в консоль "cuco" — кукушка по-испански
Google Contacts: Приведенный ниже код копирует все контакты из группы «Редакция» в лист Google Spread Sheet:
var group = ContactsApp.getContactGroup("Редакция");
var contacts = group.getContacts();
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Контакты редакции");
for (var i in contacts) {
// Сохраняем данные о контактах в ячейки: имя, фамилия, номер телефона
sheet.getRange(i, 1, 1, 1).setValue(contacts[i].getGivenName());
sheet.getRange(i, 2, 1, 1).setValue(contacts[i].getFamilyName());
sheet.getRange(i, 3, 1, 1).setValue(contacts[i].getPhones());
// И еще есть метод для получения номера пейджера (!) контакта
sheet.getRange(i, 4, 1, 1).setValue(contacts[i].getPager());
}
Работа с календарем: Создавать события в календаре тоже можно автоматически (и так же, как в случае с рассылкой, формировать информацию о них из строк таблицы). Код для создания события:
var timeZone = CalendarApp.getTimeZone();
var description = Utilities.formatString( '%s from %s to %s', "заголовок события", dateString_( "дата начала события", "часовой пояс" ), dateString_("дата конца события", "часовой пояс" ));
CalendarApp.createEventFromDescription(description);
- Ресурсы Google Sheets, Apps Script и Data Studio
- GitHub-репозиторий с Google Apps скриптами
- Пишем скрипты для автоматизации работы с приложениями Google
- Create Google Docs from a Google Sheet
- Генерируем документы в google из шаблона
- Google Apps Script Tips to build Add-ons
- Google Apps Script - How to create Javascript and CSS files for a Sidebar Project in Google Apps Script
- Google Sheets - Drop Down List, 2 Dependent Dropdown Lists - YouTube
- QUERY - Drop Down List to Filter Data - Google Sheets - YouTube
- Google Forms - Drop Down List from Spreadsheet
- User form in Google Sheets using Apps Script and Materialize CSS
- Petrovich - корректно склоняет украинские имена
- Lvovich - доработанная версия Петровича (Live Demo)
- склонения названий городов (работает для большинства составных названий: Санкт-Петербург, Ростов-на-Дону и пр.)
- определения пола по имени фамилии и отчеству
- склонения падежей русских имен, фамилий и отчеств
- Веб-сервис склонения по падежам «Морфер»
- GitHub - nodkz/lvovich: Склонение названий городов, определения пола по ФИО, склонения имен по падежам