Коды X3: Земной конфликт. Комбинации клавиш для работы с редактором скриптов. Прекращение боевых действий с указанным кораблем или станцией

Notepad++, Sublime Text 2, а для кого-то и Notepad или Блокнот - удобные и неприхотливые инструменты для написания JavaScript кода. Но в последнее время у них появились достойные конкуренты ни в чем не уступающие по функциональности, а кое в чем и превосходящие их. Онлайн редакторы - позволяют не только создавать скрипты непосредственно в браузере, но и наблюдать вносимые изменения в режиме реального времени .

Многие из этих редакторов уже перестали быть только редакторами и превратились в полноценные онлайн IDE со встроенными системами контроля версий, средствами для коллективной работы и развертывания проектов на различных платформах.

Поскольку количество, равно как и функциональность этих средств разработки, постоянно растет, и они уже становятся реальными конкурентами десктопных приложений, предлагаю рассмотреть их более подробно.

JS Bin

Классический представитель своего класса онлайн редакторов . Пять панелей ( , JS, Console и Output) каждая из которых предназначена для своего блока кода (впрочем для экономии места любую из них можно погасить). Вносимые изменения отображаются, соответственно, в панели Output в реальном времени или по требованию. Достаточно широкий набо подключаемых JavaScript библиотек - jQuery, MooTools, AngularJS и др.

Стоимость: бесплатно для открытых проектов, $17 в месяц для приватных.

JSFiddle

Самый, пожалуй, известный, функциональный и в то же время довольно простой онлайн редактор JavaScript . Позволяет подключать различные фреймворки, библиотеки и расширения - например такие инструменты как TidyUp и JSHint для проверки и форматирования кода или плагины для организации совместной работы.

Стоимость: бесплатно

Codenvy

Codenvy это не просто редактор, это полноценная облачная IDE, способная полностью заменить собой традиционные десктопные инструменты для разработки приложений. Рабочие области с интегрированной системой контроля версий , полноценная совместная работа, свобода в выборе использования собственной облачной инфрастуктуры или CodeEnvy. Просто посетите домашнюю страницу CodeEnvy и оцените весь спектр продуктов и решений, предлагаемых этой компанией.

Стоимость: $350 в год, однако для разработчиков opensource-проектов, студентов или частного использования имеются различные тарифные планы более низкой стоимости.

Rendera

Возможно я ошибаюсь но, мне кажется, многие начинающие разработчики недооценивают то время, которое тратится на переключение между вкладками, чтобы проверить работоспособность кода. Хотя даже если разработчики Rendera обратили на это внимание, то значит я не так уж и не прав. Как бы там ни было, а проверить как работает код в созданном ими редакторе чрезвычайно просто и быстро - при помощи всего одного клика.

Очень легкий и удобный редактор , идеальный выбор для начинающих разработчиков. Создан с помощью Sinatra.

Стоимость: бесплатно

Cloud9

Признаюсь честно - я люблю С9! Мне нравится профессионализм, современность и стильность этой среды. Мне нравится то, что я могу создавать рабочие пространства для различных проектов, будь то Node.js, WordPress, Django, Rails или какие-либо другие. Она действительно облегчает процесс разработки. А для начинающих может быть прекрасным инструментом для обучения.

Стоимость: бесплатно и $19 за премиум-версию

sourceLair

sourceLair заинтересует тех, кто хочет иметь среду разработки с тесной интеграцией с системами контроля версий Git или Mercurial . Поддерживает проекты на Django, PHP, node.js, Flask, подсветку синтаксиса и автодополнение Python и Java, базы данных MySQL, PostgreSQL и MongoDB.

Признаюсь, раньше я не слышал об этой облачной среде, но попробовав ее могу утверждать, что выглядит она очень многообещающе.

Стоимость: от $5 в месяц

Liveweave

Великолепный редактор JavaScript , одновременно поддерживающий и . Очень похож на JSFiddle. Правда обладает чуть меньшим набором библиотек, зато более богатым и функциональным интерфейсом. Есть кнопка отключения «живого» просмотра (ускоряет работу, так как изменения отображаются не сразу, а только по требованию) и встроенный генератор цветовых палитр.

Стоимость: бесплатно

CodePen

Без преувеличения, выдающийся онлайн редактор с просмотром результатов в реальном времени . Кроме того имеет тысячи примеров, демонстрирующих всю мощь этой троицы - HTML, CSS и JavaScript.

Стоимость: бесплатно

kodtest

Интерфейс - другой, возможности - те же. Это про kodtest. По большому счету еще один клон известного редактора JSFiddle. Помимо интерфейса, небольшие отличия в наборе библиотек. Разрабатывается .

Codio

Достаточно мощная среда разработки. Сравнительно новая, но обладающая неплохим потенциалом для того, чтобы доверится ей при разработке достаточно серьезного проекта.
Бесплатная версия доступна только для open-source проектов .

Стоимость: от $15 в месяц

Koding

Koding определенно один из лучших онлайн инструментов для разработки. И не имеет значения какой язык или фрейморк вы используете - список поддерживаемых настолько широк, что вряд ли в нем не окажется вашего. Koding очень хорошо поддерживает коллективную работу, поэтому весьма популярен среди команд, работающих над одним проектом. Впрочем и программисту-одиночке Koding тоже есть что предложить - замечательные руководства как для новичков, так и для людей с опытом позволят начать изучение программирования с нуля или же значительно повысить свой уровень, если вы занимаетесь разработкой не первый год.

Стоимость: до 4-х пользователей - бесплатно, свыше - $29 за разработчика в месяц (но учтите, что оплата снимается только за активных пользователей)

Code Beautify

Code Beautify не является редактором кода в прямом смысле этого слова, но является прекрасным дополнением к любому из рассмотренных здесь. Это своеобразный парикмахер, который придаст лоск вашему коду - причешет, уберет лишние пробелы, добавит нужные отступы - в общем, сделает его структурированным и легко читаемым. Code Beautify стоит того, чтобы добавить его в свои закладки.

Стоимость: бесплатно

Codeanywhere

Последняя в нашем обзоре, но далеко не последняя по своим возможностям среда разработки Codeanywhere. Весьма легкая и быстрая, так что вы даже не заметите, что работаете в браузере.

Многофункциональный редактор, возможность синхронизировать файлы проекта через FTP или работа с файлами, находящимися на DropBox или Google Drive и встроенная система контроля версий - вы точно забудете о десктопных IDE!

Стоимость: бесплатно (для одного пользователя) и платные тарифные планы от $2 до $40 в месяц за пользователя.

Заключение

Когда я начал писать этот обзор в мои планы входило рассказать о 5 онлайн редакторах, с которыми мне в то или иное время приходилось работать. Но в процессе написания и общения с коллегами этот список стал быстро пополняться и вот уже в нем 16 различных инструментов. Конечно же, этот список не полон, но я удовлетворен результатом - хороших онлайн IDE становится больше, а значит каждый разработчик сможет выбрать себе наиболее подходящую среду, которая ускорит сам процесс разработки и повысит качество готового продукта.

Редактор скриптов служит для создания и редактирования пользовательских скриптов.

Для вызова редактора кликните на Modify для желаемого скрипта в окне Navigator или создайте новый скрипт, в этом случае окно редактора скриптов откроется автоматически.

Окно редактора скриптов разделено на несколько областей. Перечислим эти области сверху вниз:

  • Строка меню
  • Панель с кнопками основных операций
  • Область редактирования скрипта
  • Область сообщений компилятора
  • Строка состояния

Строка меню редактора скриптов:

  • Script
    • Save . Сохранить скрипт
    • Compile . Скомпилировать скрипт
    • Close . Закрыть окно редактора
  • Edit
    • Undo . Отменить последнее действие
    • Redo . Отменить операцию Undo
    • Copy . Скопировать выделенный блок кода
    • Paste . Вставить код/текст из буфера обмена
    • Cut . Вырезать выделенный код в буфер обмена
    • Select All . Выделить весь код скрипта
    • Delete . Удалить выделенный код
    • Find... Поиск
    • Find Next . Поиск следующего вхождения желаемого текста при поиске
    • Find Previous . Поиск предыдущего вхождения желаемого текста при поиске
    • Replace... Замена
  • Help - Help Topics . Справка по работе с программой

Комбинации клавиш для работы с редактором скриптов

  • Ctrl+S Save (сохранить)
  • F7 Compile (скомпилировать)
  • Ctrl+Z Undo (отменить)
  • Ctrl+Y Redo (отменить операцию Undo)
  • Ctrl+C Copy (копировать)
  • Ctrl+V Paste (вставить)
  • Ctrl+X Cut (вырезать)
  • Ctrl+A Select All (выделить весь код на странице)
  • Del Delete (удалить)
  • Ctrl+F Find... (найти)
  • F3 Find Next (найти следующее совпадение)
  • Shift+F3 Find Previous (найти предыдущее совпадение)
  • Ctrl+H Replace (заменить)
  • F1 Help Topics (Файл помощи)

Опишем процесс создания утилиты при помощи встроенного редактора скриптов:

  1. В окне Navigator кликаем правой клавишей мыши на папке Utilities и выбираем Create
  2. Указываем желаемое имя скрипта и нажимаем OK
  3. В открывшемся окне редактора вводим программный код утилиты и нажимаем кнопку Compile
  4. При отсутствии ошибок компиляции, в области уведомлений выведется сообщение Compiling done
  5. Закрываем окно редактора
  6. В окне Navigator кликаем правой клавишей на созданном скрипте и выбираем в контекстном меню Execute on chart для запуска скрипта
Часть 1. Общие данные.

Не знаю, сколько сотен раз уже был задан этот вопрос, но я считаю, что об следует написать.

Для того, чтобы активировать Редактор скриптов, нужно вместо имени пилота ввести Thereshallbewings (T - заглавная буква, остальные строчные; обратите внимание на двойную "l" (эль); Вы не должны быть пристыкованы к станции). Если Вы все ввели правильно, то игра должна чуть-чуть подвиснуть, а имя пилота должно остаться прежним.

Редактор скриптов (далее ScE (от Script Editor)) будет доступен в меню каждого корабля/станции, а также в "Общих командах". Есть небольшая разница в месте, откуда его запускать. Из "Общих команд" он запускается штатно, а при запуске, например, из командного меню корабля, редактор позволяет отлаживать локальные скрипты, запускаемые на этом корабле.

Часть 2. Пункты меню.

При первом запуске Вам ознакомят с возможными рисками, а также списком горячих клавиш (которые действительно ой как нужны и крайне полезны).

Script Task Statistics - статистика по всем скриптам, когда либо запущенным за данную игру, ничего особо полезного.
Редактор скриптов - при выборе данного пункта меню, Вы перейдете к списку скриптов, а также сможете создать новый (а Вы думали что-то иное? :).

Reinit Script Caches - перезагрузить кэш скриптов. Для более быстрой работы скрипты помещаются в кэш, поэтому обычно необходимо жмякать по этой кнопке, если Вы модифицировали какой-либо локальный скрипт. Примечание: изменения не будут применены к уже запущенным скриптам, пока они не будут запущены заново.

Script Debugging: <Объект> - инструмент для отладки локальных скриптов. Объект, локальные скрипты которого будут отлаживаться, зависит от того, через меню какого корабля/станции в этот раз был запущен редактор скриптов (чуть выше я писал об этом). Переключатель может быть в трех состояниях:

  • Off - отладка выключена.
  • Log - вся последовательность действий (исполняемых команд) будет записана логом. Картинка .
  • Trace - отладка "на лету", т.е. пошаговая (прежде чем исполнить следующую команду, будет запрошено разрешение; также в этом режиме указаны текущие (на момент исполнения каждой команды) значения всех локальных переменных). Картинка .

    Script Name – имя скрипта, команда которого была выполнена в данной строке.
    Line – номер строки в скрипте Script Name.
    Stackdepth – глубина стек в котором выполняется задача (количество скриптов в стеке отсчет ведется с 0)
    Prio – приоритет выполняемого скрипта
    PID – глобальный идентификатор задачи
    TaskID – Идентификатор задачи
    Command – исходный текст команды

    Script Debugging: Additional Information - отвечает за отображение доп. информации (отношение к расам, запущенные локальные скрипты) в инфо о корабле/станции. Два положения выключателя - on и off.

    Clear Debug Messages - очистить лог отладки (см. Script Debugging).

    Script Debugger Menu - или лог, или пошаговая отладка (см. Script Debugging).

    Global Script Task - список исполняющихся глобальных скриптов. Вооружившись кнопкой Delete, можно смотреть на глобальные скрипты, как на... ну вы понЕли.

    Помощь - без комментариев.

    Часть 3. Среда разработки.

    Итак, открыв Редактор скриптов и выбрав пункт <Новый скрипт> Вы попадете непосредственно в место, где можете начать творить. Вот как в целом выглядит встроенный интерфейс создания/редактирования скриптов:

    Пойдем по порядку.

    1. Первый блок очевиден и, я считаю, не требует комментариев.

    2. Блок "Параметры". Зачем он нужен? Представим, что у нас есть стиральная машина. Чтобы её правильно запустить требуется ввести правильные данные, в зависимости от вещей, которые Вы в неё загрузили, так как сама она понятия не имеет, что Вы туда загрузили и загрузили ли вообще. Тип белья, время стирки, дополнительные функции - это и есть эти самые "параметры", если стиральная машина - это исполняемый скрипт, а бельё - это то, с чем мы будем взаимодействовать. Есть скрипты, которым не требуются какие-либо параметры. Обычно они запускаются единожды и носят статус глобальных, но есть и исключения. Например, команда "Ожидать", когда корабль просто слоняется по сектору, в котором была отдана эта команда.
    Максимальное кол-во параметров в скрипте неограниченно, как и кол-во переменных. Параметры задаются, когда запускается скрипт и записываются в заданные Вами переменные. Если во время ввода параметра, Вы нажмете Escape, то ввод параметра будет прекращен, в переменную вернется null, а Вы перейдете к вводу следующего параметра.
    Обратите внимание на то, что если скрипт не подразумевает ручного ввода параметров, и параметров больше пяти (почему именно 5 - узнаете дальше), то рекомендуется передавать значения с помощью массива. Или нескольких массивов, чтобы было удобнее:)

    3. Блок "Код". Это место, где Вы начинаете Творить. Да, именно творить, ведь скрипты - это в первую очередь произведения искусства:)
    Любым скриптам доступно использование любых команд, за исключением команд вызова других скриптов при кое-каких условиях (но об этом опять же потом). Описание всех команд будет изложено позже, а также будут расписаны некоторые аспекты их исполнения.

    Часть 4. Типы переменных.

    Переменные, используемые командами зачастую содержат вовсе не циферки-буковки, а ссылки на какие либо объекты, причем в этой ссылке будет содержать абсолютно вся информация о нем, начиная от , заканчивая списком скриптов, исполняемых в его тасках. Но получить эту информацию можно только с помощью соответствующих скриптов или их совокупностей.

    Тип переменной Описание
    DATATYP_NULL То, что изначально содержит незаданная переменная - "null".
    DATATYP_UNKNOWN Неизвестный ScE тип данных.
    DATATYP_VAR В переменной содержится переменная ссылка на другую переменную (зачастую - на массив).
    DATATYP_CONST Константа.
    DATATYP_INT Какое-либо целочисленное значение.
    DATATYP_STRING Какой-либо текст, набор символов, цифр.
    DATATYP_SHIP Переменная-ссылка на корабль вместе с его свойствами (см. выше).
    DATATYP_STATION Аналогично тому, что выше, только вместо корабля - станция.
    DATATYP_SECTOR Переменная-ссылка на сектор.
    DATATYP_WARE Переменная-ссылка на какой-либо тип товара.
    DATATYP_RACE Какая-либо раса.
    DATATYP_STATIONSERIAL Серийный номер станции. Греческий алфавит от Альфа до Омега.
    DATATYP_OBJCLASS .
    DATATYP_TRANSPORTCLASS Класс груза. От S до ST.
    DATATYP_RELATION Отношение. Враг, нейтрал, друг.
    DATATYP_OP ???
    DATATYP_EXPR Логическое выражение, принимающее либо истину, либо ложь.
    DATATYP_OBJECT Ссылка на какой-либо объект. Используется для таких объектов, как, например, астероид.
    DATATYP_OBJCOMMAND Команда/Сигнал объекту (объект - корабль или станция).
    DATATYP_FLRET Семейство FLRET. Более подробно будет расписано позже.
    DATATYP_DATATYP Переменные этого типа содержат данные, которые содержат в себе переменные, которые содержат... . То есть Тип данных, то о чем сейчас и идет речь. С переменными этого типа взаимодействуют лишь две команды:)
    DATATYP_ARRAY Массив. Дело, однако, в том, что такая переменная вовсе не является массивом. Она лишь является ссылкой на него (поинтер).
    DATATYP_QUEST Переменная-миссия. Честно говоря, с ней мне еще не приходилось сталкиваться.

    Воспользовавшись моментом, добавлю таблицу с используемыми скриптами данными (то есть то, что нужно скрипту от переменной в зависимости от текста (кривовато сказал, но, думаю, Вы меня поняли:)).

    По-английски По-русски Описание
    <ВозврПерем> Переменная, в которую возвращается результат выполнения (или невыполнения, если данные заданы некорректно) команды.
    <Возвр/IF> То же, что и выше, но плюсом возможность выбрать один из операторов. Принцип - команда становится логическим выражением (которое-таки исполняется) и, если результат ненулевой (не "0" и и не "null"), принимащим истинное значение, в противном случае - ложное.
    <Возвр/IF/START> Тоже, что и выше, но с возможностью выбора префикса START. Используется только в командах вызова скриптов. Внимание! Если Вы запустите в локальном скрипте команду с данным префиксом, то игра повиснет!

    Вообще, этот префикс дает возможность запустить какой-либо скрипт по принципу "запустил и забыл", т.е. основному скрипту глубоко пофиг, как отработает запущенный им с данным префиксом скрипт.

    <Выражение> Логическое выражение, принимающее значение либо Истина (1), либо Ложь (0).
    <Перем/Текст> Текст, либо переменная, которая его содержит. Внимание! Число НЕ является текстом, также как и Текст НЕ является Числом. Для конвертирования текста в число, используйте команду = string to integer , для обратной операции = convert number to string .
    <Перем/Число> Какое-либо число, либо переменная его содержащее.
    <РеферОбъект> Объект, с которым взаимодействует команда. Либо переменная, содержащая этот объект (к слову говоря, все значения, используемые командами гораздо разумнее (да и есть возможность) хранить в переменных, поэтому далее не буду затрагивать этот момент).
    <Значение> Применение ситуативно и зависит от команды.

    Остальное, я думаю, понятно, и описывать это нет смысла.
    Часть 5. Немного о массивах.

    Итак, что же такое массив ? Можно почитать на википедии . Вкратце, это упорядоченный набор данных. Каждый элемент имеет свой порядковый номер, причем нумерация начинается с нуля. То есть элементы массива, состоящего из 5 элементов, имеют индексы 0, 1, 2, 3, 4. Кроме того, ничего не мешает содержать в массиве несколько вложенных массивов (вложенность также неограниченна).

    Чтобы создать массив, можно использовать команды = array alloc: size= и = create new array, arguments=, , , , (обе команды создают массив "с нуля"). Также некоторые команды возвращают в переменную массив, уже содержащий в себе некоторые значения, например = -> get array of missiles aiming to me возвращает массив ракет, наведенных на Ваш корабль.
    Стоит обратить внимание на то, что переменные никоим образом не содержат в себе массив. Они лишь ссылаются на него. То есть допустим у нас есть переменная $array1, которая является ссылкой на массив, и мы хотим скопировать этот массив, чтобы работать уже с двумя массивами. В данном случае команда "$array2 == $array1" лишь скопирует поинтер (читай: ссылку) на массив. Для того, чтобы скопировать массив есть команда = clone array : index ... , где - копируемый массив, а - его копия, начиная с элемента с индексом , заканчивая элементом с индексом .

    Чем нам полезны массивы? Тем, что иногда мы не знаем, с каким кол-вом объектов будем взаимодействовать. Допустим, у нас есть команда $array = $sector -> get ship array from sector/ship/station , она возвращает массив кораблей, находящихся в секторе $sector (или кол-во кораблей пристыкованных к кораблю/станции, все зависит от типа данных, содержащегося в переменной). И этих кораблей может быть хоть ноль, хоть 10, хоть 100 и так далее.
    Как нам работать с массивом? С помощью соответствующих команд, и, если требуется обработать/проверить каждый элемент массива, циклов.

    Описание одиночных команд Вы позже найдете . А сейчас разберемся с циклами, пускай нам дан массив неизвестного размера $array.

    1 вариант - когда важна последовательность обработки элементов от элементов с более низким индексом к элементам с более высоким.

    2 вариант - когда важна последовательность обработки элементов не важна.

    1. $sz = get size of array $array
    2. while $sz
    3. $element = $array [ $sz ]
    4. <кусок кода, который взаимодействует с элементом $element, находящимся по индексу $sz>
    5. = wait 1 ms
    6. dec $sz //аналогично $sz = $sz - 1
  • Google Apps Script - это язык для автоматизации работы с онлайн-приложениями, появившийся в 2009 году. Его основа - классический JavaScript, обогащенный расширениями для работы с сервисами Google. После прочтения этой статьи ты овладеешь основами использования этого языка, выучишь пару приемов манипуляции с почтой и документами, а также получишь представление о необозримых возможностях Google Apps Script.

    Основы использования

    Начать писать Google Apps скрипты очень просто. Первым делом надо открыть редактор скриптов в любом приложении, взаимодействие с которым будем автоматизировать. В Google Docs он находится в меню «Инструменты -> Редактор скриптов». Далее надо выбрать проект, внутри которого будет располагаться скрипт (см. рис. 1). В открывшемся окне пишем код:

    Function FirstExampleFunc() { Browser.msgBox("Это таки JS! "); }

    Декларированную функцию можно запускать из «Инструменты -> Управление скриптами» или сделать для нее отдельную кнопку. Для этого надо прописать еще одну функцию:

    Function menu() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var entries = [ {name: "Моя единственная функция", functionName: "FirstExampleFunc"}, ss.addMenu("Мои функции", entries); }

    Теперь в нашем меню есть пункт под названием ExampleFunc, при клике на который открывается однострочное подменю «Моя единственная функция».

    Декларированные функции можно использовать в формулах, которые вводятся внутрь ячеек электронных таблиц (см. рис. 3). Теперь перейдем к более практически полезным примерам.



    WARNING

    Перед запуском скрипта не забудь сделать резервную копию важной информации. Действия, выполненные GS, нельзя отменить нажатием .

    Работа с Google Docs

    Когда встает задача автоматизации работы с офисными документами, первым делом на ум приходит VBA, одно упоминание которого оказывает на многих тотальное антиэкстатическое воздействие, вызывая болезненные воспоминания из школьного и университетского прошлого. Google Script однозначно удобнее и доступнее для понимания. Особенно для веб-разработчиков, ведь это же родной, привычный и любимый JS! Разберем пару примеров скриптов для Google Docs. Приведенный код заполняет левую верхнюю ячейку первого листа активной таблицы:

    Var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet = ss.getSheets(); 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 = "#FF0000"; var paras = doc.getParagraphs(); var textLocation = {}; for (i=0; i

    WARNING

    Имей в виду, что Gmail не только защищает от входящего спама, но и ограничивает рассылку исходящего. Больше 500 писем за сутки с помощью Google Apps Script не выйдет.

    Работа с Google Translate

    С помощью Google Apps Script можно переводить текстовые строки с одного языка на другой. Пример:

    Var word = LanguageApp.translate("кукушка", "ru", "es"); Logger.log(word); // Скрипт выведет в консоль "cuco" - кукушка по-испански

    Коды для языков можно посмотреть в адресной строке сервиса Google Translate.

    INFO

    Если выделить код и нажать , то магическим образом расставятся все отступы для условий, циклов, объявленных функций и всех других мест, где им положено быть.

    Работа с Google Drive

    Google Apps Script может работать с файлами пользователя, размещенными на Google Drive. Этот скрипт выводит в консоль имена всех файлов пользователя:

    Var files = DriveApp.getFiles(); while (files.hasNext()) { var file = files.next(); Logger.log(file.getName()); }

    К файлам можно применять несколько десятков различных методов. Вот некоторые из них:

    • addEditor(«email пользователя») - наделяет пользователя правами на редактирование файла;
    • getOwner() - узнать владельца файла;
    • makeCopy(«имя», «путь») - создать копию файла;
    • getLastUpdated() - возвращает пользователя, который внес последнее изменение.

    Работа с 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()); }

    Работа с Google Tasks

    С помощью Google Apps Scripts можно работать с сервисом Google Task - создавать новые задачи и парсить уже имеющиеся.

    Этот код создает новое дело в списке:

    // Найти ID тасклиста можно внутри адресной строки в сервисе Google Task var taskListId="id тасклиста,"; var newTask = { title: "Выбросить финиковые косточки", notes: "Не забыть косточки под кроватью" }; newTask = Tasks.Tasks.insert(newTask , taskListId); Logger.log ("Задача с ID "%s" создана", newTask.id);

    А таким образом можно вывести список нумерованных задач в консоль:

    // Кладем все задачи списка в массив var tasks = Tasks.Tasks.list(taskListId); for (var i = 0; i < tasks.items.length; i++) { var task = tasks.items[i]; Logger.log(i. ". ",%s, task.title, task.id); }

    Задачи можно перемещать из одного списка в другой с помощью метода move, дополнять с помощью метода update и удалять с помощью метода delete.

    Всего есть несколько десятков методов для работы с задачами. Полный их список доступен вGoogle Apps Script References для Google Tasks .

    Работа с календарем

    Создавать события в календаре тоже можно автоматически (и так же, как в случае с рассылкой, формировать информацию о них из строк таблицы). Код для создания события:

    Var timeZone = CalendarApp.getTimeZone(); var description = Utilities.formatString("%s from %s to %s", "заголовок события", dateString_("дата начала события", "часовой пояс"), dateString_("дата конца события", "часовой пояс")); CalendarApp.createEventFromDescription(description);

    Формы обмена скриптами

    Гаджет - это приложение-контейнер, которое размещается на веб-странице и исполняет определенные функции. Примеры: мини-блок в углу страницы с прогнозом погоды или календарем. Чтобы поместить Google Script внутрь гаджета, необходимо в меню редактора скриптов выбрать пункт «Publish -> Deploy as web app».

    INFO

    А если нажать , то включится режим автозавершения, то есть редактор будет дописывать код за тебя.

    События

    Можно настроить скрипт так, чтобы он выполнялся после определенного события. К примеру, после открытия/редактирования электронной таблицы или отправки данных формы.

    Работа с базами данных

    Для этого существует сервис для работы с базами данных Google Cloud SQL. По сути - классический MySQL в облаке. Может взаимодействовать с Google Apps Script по стандарту Java Database Connectivity. Вот пример кода, который производит чтение записей из таблицы:

    Var conn = Jdbc.getConnection(dbUrl, user, userPwd); var start = new Date(); var stmt = conn.createStatement(); stmt.setMaxRows(1000); var results = stmt.executeQuery("SELECT * FROM entries"); var numCols = results.getMetaData().getColumnCount(); while (results.next()) { var rowString = ""; for (var col = 0; col < numCols; col++) { rowString += results.getString(col + 1) + "\t"; } Logger.log(rowString) } results.close(); stmt.close();

    Стоимость использования сервиса - 88 долларов в год за 10 Гб свободного места. С другими базами данных Google Apps Script, к сожалению, работать не может. Если ты запланировал написать скрипт, который должен взаимодействовать с данными, не стоит сразу расстраиваться или истощать свой бюджет пожертвованиями на закупку квадроциклов для жителей Кремниевой долины. Есть два способа выкрутиться из этой ситуации:

    • первый - хранить данные в виде таблиц на Google Drive;
    • второй - разместить базу на стороннем сервере, на нем же разместить {php}{hode.js}{python}{и т. д.} скрипт, который будет выполнять к ней запрос и возвращать ответ в формате JSON или XML, а его, в свою очередь, подвергать парсингу внутри GS.

    Приложения, с которыми может взаимодействовать Google Apps Script

    Я думаю, что далеко не каждый из наших читателей успел опробовать все онлайн-сервисы Google. В целях расширения кругозора и стимуляции творческого воображения приведем краткий обзор возможностей приложений, работу которых можно автоматизировать с помощью Google Apps Script.

    • Google Mail - почтовый клиент. Наиболее интересна в нем возможность отправлять письма людям, адреса которых неизвестны. Для этого надо включить настройку «Отправлять письма пользователям Google+» и ввести имя и фамилию получателя в поле «Кому».
    • Google Calendar - органайзер. Самое удобное в нем - возможность отправки SMS-уведомлений о событиях на номера российских операторов.
    • Google Contacts - приложение для хранения контактов. Самый цимес его в том, что если ты случайно синхронизируешь свой список контактов с новым смартфоном и все имена сотрутся, то сможешь попросить у Google резервную копию предыдущей версии, которая навечно сохранена в его архивах.
    • Google Drive - облачное хранилище данных. 15 Гб, на которых также размещаются данные всех других приложений, доступны бесплатно.
    • Google Maps - онлайн-карты. Жителям СНГ повезло, у них есть альтернативный инструмент для построения маршрутов и просмотра панорам улиц - Яндекс.Карты. Для жителей большинства других территорий альтернатив нет. Google Maps - единственная всемирная картографическая система, позволяющая искать населенные пункты, вводя названия на языке государства, в котором они находятся. Допустим, не Kotlas, а Котлас, не Vagharshapat, а Վաղարշապատ.
    • Google Docs - онлайн-редактор офисных документов. Во время написания статьи этот сервис совершил мега-прорыв - появилась возможность редактировать документы, созданные в Microsoft Office. Это произошло после интеграции сервиса с функционалом приложения Quickoffice. Ради интереса попробовала отредактировать в Google Docs пояснительную записку к диплому (как пример документа с простейшим форматированием). Преобразование docx в гугл-формат пришлось ждать около минуты, и внешний вид текста явно отличался от оригинала.
    • Google Forms позволяет создавать формы для сбора различных данных (онлайн-опрос, страницу регистрации на событие, обратную связь для сайта и прочее), которые можно привязать к таблицам в различных форматах (HTML, CVS, TXT, PDF, RSS, XLS, ODF). Собранные данные хранятся на Google Drive.
    • Google Sites - бесплатный хостинг (100 Мб) с предельно ограниченным функционалом и собственной wiki-разметкой. Полнофункциональный HTML, а также CSS и JS недоступны.

    SRC

    По старой доброй традиции, которой уже почти три месяца, мы выложили несколько исходничков на GitHub:

    • autodeletemail.gs - удаляет письма, с момента получения которых прошло n-ное количество дней;
    • snoozeemails.gs - скрипт для повторной отправки самому себе прочитанных писем через определенный промежуток времени;
    • sendsmsaboutemails.gs - настраивает отправку SMS в случае получения писем, соответствующих определенным критериям. Перед его использованием надо указать свой номер телефона Google Calendar;
    • savemailtopdfindrive.gs - сохраняет содержимое письма в файлах на Google Drive;
    • fromcalendartospreadsheet.gs - записывает информацию из календаря в электронную таблицу;
    • sendmailsfromspreadsheet.gs - рассылает письма по списку адресов из электронной таблицы;
    • createdocsfromspread.gs - генерирует текстовые документы из данных электронной таблицы.

    Advanced Google Services

    У Google есть множество API для разработчиков, которые можно внедрять в программы, написанные на Google Apps Script. Для этого надо подключить в редакторе скриптов эту возможность (в меню Resources, далее Advanced Google services). После этого можно будет задействовать возможности следующих сервисов:

    • Google AdSense - сервис для работы с контекстными рекламными объявлениями.
    • Google Analytics - осуществляет анализ посещаемости веб-сайтов и мобильных приложений.
    • Google BigQuery - позволяет производить различные манипуляции (запись, чтение, перемещение и так далее) над большими объемами данных, а также анализировать их.
    • Google Fusion Tables - экспериментальный сервис, позволяющий размещать данные в облаке, отправлять к ним запросы и получать результаты выполнения в формате JSON и CSV. Из которых, в свою очередь, можно формировать электронные таблицы, карты, графики и другие виды визуального представления данных.
    • Google Domains - сервис для регистрации доменов (новый проект, открылся в конце июня 2014 года).
    • Google Mirror - API для взаимодействия с Google Glass.
    • Google Prediction - сервис для анализа данных (основанный на технологии машинного обучения). Позволяет внедрять в приложения следующие фичи: классификатор документов и писем, расчет churn rate (показатель оттока пользователей), детектор спама, оптимизатор маршрутизации сообщений и множество других интересных вещей, достойных отдельной статьи.
    • Google Tasks - встроенный в Gmail сервис для составления списков дел.
    • Google URL Shortener - любимый нашим журналом сервис для сокращения длинных ссылок.
    • YouTube Analytics - сервис для анализа статистики просмотров видео на YotTube. Примечателен возможностью узнать демографические и географические характеристики пользователей, смотрящих определенный видеоролик. Ведь интересно выложить очередную копию клипа на песню «До свидания, кореша» и проанализировать, какого пола, возраста и места жительства ее слушатели.
    • Сергей Савенков

      какой то “куцый” обзор… как будто спешили куда то