Войти
Android, Windows, Apple, Ликбез. Социальные сети. Драйверы
  • Японские телефоны Новый японский смартфон
  • Lenovo G500S: характеристики, основные особенности
  • Определяем серию продукта видеокарт Nvidia Характеристики карты nvidia 9800 gt
  • А конкуренты у смартфона есть
  • Что такое расширение файла TRZ?
  • Не работает динамик в "айфоне"
  • Расширенный поиск Яндекса (и Гугла) с помощью установленного скрипта или в интерфейсе. Скрипт поисковой системы как Google Пользовательский скрипт изменение поиска google com

    Расширенный поиск Яндекса (и Гугла) с помощью установленного скрипта или в интерфейсе. Скрипт поисковой системы как Google Пользовательский скрипт изменение поиска google com

    Здравствуйте, уважаемые читатели блога сайт. Это вторая статья из серии по заработку в инете () и посвящена она будет работе с системой контекстной рекламы Гугл Адсенс.

    В первой статье мы подробно , научились работать с рекламными объявлениями, а так же узнали про такой способ вывода заработанных в этой системе денег, как Рапида ( ; кстати, советую задуматься об открытии ИП).

    Итак, будем считать, что вы разобрались с и поэтому сегодня мы попытаемся убить двух зайцев — поставим скрипт поиска по сайту от Google, который позволит улучшить качество встроенного в вашу CMS (систему управления контентом), а так же настроим показ в его результатах рекламных блоков AdSense, которые помогут вам получить дополнительный доход. Совместим, так сказать, приятное с полезным.

    Настройка и получения кода скрипта поиска от Google

    Я, например, уже давно задумывался об использовании поискового алгоритма от Google или Яндекса (), потому как встроенный в Вордпресс не устраивал меня (да и посетителей блога, наверное, тоже) как по качеству, так и по удобству предоставляемых результатов. Думаю, что практически тоже самое можно сказать и о его аналогах в Joomla и других популярных движках ().

    Для своего блога на WordPress я воспользовался уже имеющимся в шаблоне окном поиска, адаптировав его для Google. Его внешний вид при этом остался прежним, максимально соответствующим дизайну блога, а вот сам поиск теперь осуществляется с помощью алгоритмов самой мощной поисковой машины в мире, в его результатах идет показ рекламных блоков Google AdSense.

    Для этого мне пришлось скрестить ежа с ужом, т.е. изменить скрипт стандартного поиска по блогу с учетом кода полученного по материалам этой статьи.

    Полученный от Гугла скрипт для моего блога выглядел так:

    Стандартный код, который находился в файле searchform.php в папке с используемой мною темой оформления WordPress, выглядел так:

    Скрестив ежа с ужом я получил следующий скрипт, который сейчас и используется:

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

    Также советую почитать: Как зарабатывать больше в контекстной рекламе Google Adsense http://sosnovskij.ru/google-adsense-secrety-uspeha/ — восемь секретов успешной работы с блоками контекстной рекламы.

    В яндекс-поисковике, как и в Гугле, есть настройки расширенного поиска (по датам, документам, сайтам, стране, языку, ...) и специальные страницы для расширенного поиска . То и другое бывает неудобно из-за интерфейса - большого количества нажимаемых кнопок, кликов и движений. Для некоторых (частоиспользуемых) режимов поиска сделаны юзерскрипты с выбором одной из десятков кнопок в один клик. На экране видны лишь несколько стартовых кнопок, работающих как спадающие списки по наведению мыши.

    Такой скрипт, когда-то бывший без спадающих списков, давно работал на страницах Гугла , и, судя по количеству скачиваний, приобрёл популярность среди англоязычных пользователей (есть выбор 5 языков интерфейса). Однажды подумалось, что его несложно будет перенести на Яндекс , и на выходных за пару дней адаптация и перекраска под цвета Яндекса была сделана, и теперь он представляется «целевой аудитории» - людям из IT, которым иногда приходится много искать и которым привычно устанавливать дополнительные скрипты и ходить по гит хабам .


    Кроме утилитарной пользы, скрипт может быть интересен как полигон для отработки интерфейсных решений. Связка 2-3 скриптов в перспективе может начать работать как мета-поисковик, всё для этого уже есть, кроме последних штрихов - поставить связующие кнопки, портировать на mаilru и другие поисковики.

    Сейчас же - рассмотрим, какие особенности Яндекса добавились в ранее существовавшее решение для Гугл.

    Первое и единственное ограничение у Яндекса, которое бросается в глаза - это отсутствие поиска за последние часы . Скорее всего, у Яндекса ещё нет такой функциональности, вопрос на toster.ru ответа не принёс, но сейчас, может быть, что-то напишут разработчики из Яндекса в комментариях.

    Появилось и расширение функций в поиске по документам - интерфейс запросов к Яндексу позволяет искать по группе типов документов (мультиселект в настройках), а Гугл каждый раз - только по одному типу документов (PDF, DOC, SWF, ...).

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

    Подробности хранения настроек - решение с внешним localStorage Ранее для Гугла аналогичное расширение приобрело сохранение настроек поиска. Просто потому что список своих доменов или язык интерфейса иногда желательно менять, а изменения прямо в скрипте - мало, что привычно лишь программистам-фронтендщикам, ещё и при довольно частых обновлениях нет возможности сохранить код части исправленного пользователем скрипта от общего обновления. Если появляются хранимые (в localStorage) настройки, то вопрос снимается.

    Но тут у Гугла обнаружилась привычка стирать локальную память! С этим сталкивались ранее и пользователи Фейсбука, и для решения этой проблемы была и скрипт по другому поводу (букмарклет закладок с прокруткой скролла окна). Здесь - аналогично, требовалось бежать с домена Гугла куда-нибудь на другой домен, куда скрипты-чистильщики не дотянутся. Организовано общение с тихой скромной страницей на github.io, где всё надёжно хранилось, почти как в банке. (Ссылка эта пригодится после установки скрипта, чтобы увидеть, куда настройки сохранились.)

    Для Яндекса это вылилось в то, что хранение его настроек тоже было сделано на том же домене (github.io). Это немедленно привело к тому, что 2 разных скрипта, разных домена и разные поисковики приобрели общие настройки. Нет, их крайне несложно разделить, но зачем? Список любимых сайтов для поиска, язык интерфейса, и впоследствии - хранение последних интервалов дат - всё это стало появляться одинаково как в Гугле, так и в Яндексе, при условии пользования одним и тем же браузером.

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

    Справочник вариантов расширенного поиска в Яндексе и Гугле Этот список, возможно, дополнят специалисты-пользователи и разработчики компаний (дополню по комментариям или ЛС).
    Все способы и виды сведены в список в целях организации небольшого справочника.
    Многое в интерфейсе юзерскрипта не реализовано. Что реализовано - указано.В Яндексе:
    • по региону
      в интерфейсе - поле с подсказками, где выбирается «регион» - страна, область или город;
      в запросе - &rstr= c магическим многозначным числом со знаком, совпадающим с другим недокументируемым параметром lr для своего региона; не всё работает - например, поиск по Маниле (rstr=-10629, это же Филиппины) не сильно отличается от общего;
    • по сайту или домену
      в интерфейсе - вводим в поле название домена (2 или 3 уровня, без продолжения)
      в строке поиска - пишем (без кавычек) " site:3dnews.ru" или подобное;
      Yandex Extra Buttons - спадающий список заранее прописанных доменов под кнопкой «site». Состав списка можно менять в настройках, через кнопку site--Настройки--форма настроек--перезагрузка страницы. Сохраняется во внешнем localStorage. Свой список доменов полезно скопировать для хранения, переноса на другой браузер и для восстановления.
      в запросе - &site=anysite.ru ;
    • по стране
      в интерфейсе - переключается кнопка со смыслом «своя страна», т.е. на домене.by это - выбор «by» и не более;
      в запросе - &country=by , при этом можно указать и некоторые другие страны, по которым работает Яндекс, но что из них реально работает - не документировано. Например, &country=tr или com.tr не работает, как и множество «не близких» стран, не обязательно мелких;
    • точный запрос
      в интерфейсе - отдельная кнопка в подзаголовке или на специальной странице;
      в строке поиска - обрамить все слова или часть из них (составляющие точную часть запроса) кавычками;
      в запросе - &wordforms=exact
    • по языку страницы
      выбор языков небольшой, но он покрывает все страны, где Яндекс присутствует как отдельный конкурирующий поисковик, плюс английский, немецкий, французский; (этот список может быть кандидатом на ещё одну кнопку в юзерскрипте, но многие ли пользуются этой настройкой? Скорее всего, нет) ;
    • по типам (множественное число) документов
      в интерфейсе - выбрать из мультиселектового списка; при каждом клике сменяется выдача по аяксу (без перезагрузки); на странице advanced - выбрать типы из 14 (сейчас) чекбоксов;
      в строке поиска mime: pdf" или подобное, поддерживается много типов, но один на запрос; что интересно, такой выбор типов НЕ поддерживается скриптами подзаголовка - очевидно, это - более старый способ выбора параметра;
      Yandex Extra Buttons - спадающий список заранее прописанных типов документа под кнопкой «PDF», которая сама по себе тоже выбирает указанный тип; по кликам страница подхватывает результаты и изменяет список выбранных типов в подзаголовке; скрипт устраняет баг отображения - подкрашивает кнопку типов, если хотя бы один тип был выбран; таким образом, кнопки юзерскрипта, по сути, инициируют «клики» по типам в подзаголовке, сами не отображают результаты мультивыбора, но работают и без подзаголовка (он появляется сам после первого клика);
      в запросе - &mime=rtf или &mime=rtf%2Cdoc , указывая все выбранные типы; работает и &mime=rtf&mime=doc и далее; запросы идут по AJAX, но с главной таким же способом можно отправить и не аяксовый запрос;
    • по последнему интервалу дат
      в интерфейсе - 3 отдельных кнопки в подзаголовке или 5 - на спецстранице;
      Yandex Extra Buttons - 4 спадающих списка в виде изначально небольших 4 кнопок - выбор за последние несколько: дней, недель, месяцев, лет. Выбранное значение сохраняется в настройках и перемещается в начало списка, чтобы при повторном таком же выборе было достаточно только нажать кнопку. Технически реализуется через запрос по произвольному интервалу дат (раздел ниже), страница запрос выполняет по AJAX, но с главной работает как обычная перезагрузка страницы;
      в запросе - магический параметр &within=число для некоторых интервалов; например, &within=1 - за 2 недели; 77 - за сутки, 2 - за месяц; 3 - за 3 месяца; 4 - за полгода, 5 - за год, 6 - за 2 года и т.д., 7 - за текущий день, 8 - за 3 суток или 4 дня (неизвестно точно, не проверялось), 9 - за 8 дней; можно попроверять, на результирующей странице интервал указывается с точностью до дня, а результаты - с точностью от часа до дня;
    • по интервалу дат
      в интерфейсе - 2 поля с дейт-пикерами (табличками для выбора дат из календаря);
      в запросе - &from_date_full=11.01.2016&to_date_full=19.01.2016

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

    В разделе Яндекс-новостей расширенный поиск идёт по другим именам параметров, и скрипт на данном этапе в этом разделе не выполняется. У Гугла же в разделе новостей действуют те же правила построения запросов, скрипт для Гугла работает во всех его основных разделах.

    В Гугле: Что интересно, разные параметры запроса дают те же результаты, но в 2 дизайнах страницы - с чёрным заголовком (более старый) и с белым. Качество выдачи при этом, скорее всего, одно и то же. Страница расширенного поиска выдаёт сейчас ответ с чёрным заголовком, и это не обязательно верно для разных стран. (Извстно также, что дудлы выдаются в разные часы для разных часовых поясов.)
    • по типу (единственное число) документа
      в интерфейсе - advanced_search - file type:
      - один из 10 форматов; текстовым запросом могут искаться и другие типы, кроме названных в списке;
      в строке поиска - дописывают (без кавычек) " filetype: pdf " или подобное;
      Google Search Extra Buttons - пока что сделано как 2 отдельных кнопки (без списков) для PDF и DOC (прочие типы в Гугле достаточно удобно задавать в строке поиска, поэтому много типов документов было введено, только начиная со скрипта для Яндекса);
      в запросе - &as_filetype=xls
    • по последнему интервалу дат
      в интерфейсе - Search Tools - (Any Time | Past ), далее - 5 вариантов выбора, или есть вариант задания любого интервала дат здесь же или на спецстранице;
      Google Search Extra Buttons - 5 спадающих списков в виде изначально небольших 5 кнопок - выбор за последние несколько: дней, недель, месяцев, лет, часов (в дополнение к тому же в Яндексе). Выбранное значение сохраняется в настройках и перемещается в начало списка, чтобы при повторном таком же выборе было достаточно нажать кнопку;
      в запросе - 2 вида запросов с теми же результатами, но с разным дизайном страницы выдачи
      &as_qdr=m2 - вид с чёрным заголовком;
      &tbs=qdr:h1 - более новый вид; вместо «h» ставится h, d, w, m, или y; число - количество размерных единиц или пусто, что будет равносильно 1;
    • по интервалу дат
      в интерфейсе - Search Tools - (Any Time | Past ) - Custom Range... ; на спецстранице - выбор только по нескольким последним интервалам дат (раздел выше);
      Google Search Extra Buttons - отдельная кнопка, сразу вызывающая форму интерфейса; на главной - нет её поддержки, поэтому кнопка скриптом не отображается;
      в запросе - &tbs=cdr%3A1%2Ccd_min%3A12%2F29%2F2015%2Ccd_max%3A1%2F5%2F2016 ;
    • по сайту или домену, в том числе верхнего уровня (.com, .cc, ...)
      в интерфейсе - на странице расширенного поиска (значок зубчатки - Advanced Search);
      в строке поиска - дописывают (без кавычек) " site: anysite.com " или подобное, в том числе домен верхнего уровня без точки;
      Google Search Extra Buttons - отдельная кнопка со спадающим списком с заранее прописанными доменами, список которых можно менять в настройках. При клике по начальной кнопке она не инициирует поиск, а только выводит текст в строку поиска, что удобно для поправки домена. Поэтому первый домен можно вообще задавать пустой строкой;
      в запросе - &as_sitesearch=anysite.com ;


    Другие параметры - у Гугла есть ряд других параметров для текстового поиска и язык запросов, подробное рассмотрение которых выходит за рамки цели статьи, но они могут оказаться в будущем в интерфейсе юзерскрипта.
    • точное слово или группа
    • любое из слов
    • исключая слова
    • интервал размерностей (кг, денежные единицы, годы)
    • по языку страницы
    • в регионе (государства)
    • по месту на странице
    • семейный фильтр
    • по наличию лицензий
    В выдаче возможна сортировка по релевантности или по дате.
    Имеется ряд типов поиска (картинки, видео, новости, карты, ...), где параметры поиска будут другие или со спецификой. Скрипт Google Search Extra Buttons сохраняет тип страницы поиска, с которой он был начат.По теме организации метапоиска по обычным запросам (Дальше пойдут планы и фантазии, интересные разработчикам интерфейсов.)

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

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

    Метапоиск на скриптах - это вероятность близкого будущего. Для реализации - коды скриптов имеются на Гитхабе (Yandex , Google), приветствуются новые решения.

    UPD : Кто поможет сделать белорусскую, казахскую и турецкую локализации?

    объём и формат

    ru:{ "search in PDF files":"поиск по документам PDF" ,"search in":"искать по" ,"from / to":"за период" ,"last":["за последний","за последние","за последнюю"] ,"day":"сутки" ,"days":["дня","дней"] ,"week":"неделю" ,"weeks":["недели","недель"] ,"month":"месяц" ,"months":["месяца","месяцев"] ,"year":"год" ,"years":["года","лет"] ,"hour":"час" ,"hours":["часа","часов"] ,"Settings":"Настройки" ,"of userscript":"юзерскрипта" ,"reload page for effect":"перезагрузить страницу" ,"Interface language":"Язык интерфейса" ,"Less positions at the end of selects":"Меньше выбора в конце селектов" ,"Sites":"Сайты" }


    UPD2 2016-01-22: первичные кнопки сделаны как стрелки, по стилю кнопки Яндекса. Скриншоты в статье заменены.

    Как установить поиск google на сайт, если вы совсем чайник? Это довольно просто и не требует специальных знаний, вам поможет инструкция ниже.

    Недавно я захотел добавить на свой сайт стороннюю поисковую форму от Google или Яндекса, остановился все же на первом варианте, так как ее используют многие вебмастера и вдобавок систему пользовательского поиска (СПП) от Google Inc можно еще и монетизировать с помощью , ну и, в-третьих — это настройка дизайна самой формы и поисковой выдачи, у Гугла она пожалуй по-круче будет.

    Где получить код поиска Google

    Способ №1 . Для того, чтобы получит код поиска Google для сайта, вы должны быть зарегистрированы в Гугле или проще говоря завести себе почту gmail.com . Создание системы пользовательского поиска происходит на сервисе Google CSE .

    Рисунок 1. Кнопка создать систему пользовательского поиска

    Кликаем по кнопке и приступаем к созданию СПП:

    Рисунок 2. Создание системы пользовательского поиска

    Здесь необходимо заполнить 3 поля:

    • Сайты, на которых выполняется поиск — указать домен вашего сайта и его зеркала;
    • Язык — выбираем Русский или который вам необходим — это язык интерфейса СПП;
    • Название поисковой системы — ведите название поисковой системы.

    После выполнения, выше указанных, настроек кликаем по кнопке Создать.

    Откроется окно с поздравлением, здесь также три пункта меню:

    Рисунок 3. Пользовательский поиск от Google создан


    На этом все настройки рассмотрены, вернемся к установке кода, показанного на рисунке 4. Выделяем и копируем его. Как данный скрипт устанавливается на сайт, расскажу на примере WordPress.

    Самым простым способом установки кода поиска Google на сайта являются виджеты, в Вордпрессе это можно сделать с помощью виджета Текст:

    Рисунок 6. Виджет текст в WordPress

    Виджет можно установить в сайтбар или другие доступные места вашего шаблона. Для ускорения загрузки рекомендую разделить код СПП на две части:

    • Собственно скрипт:
    1 2 3 //

    //

    • И тег отвечающий за вывод формы на блоге:
    1

    Код вывода рекомендую оставить в виждете, а скрипт перенести туда, где он не будет мешать загрузке основного содержимого сайта, перед закрывающим тегом . В Вордпрессе данный тег можно найти в файле footer.php .

    Создание поиска Google в аккаунте Adsense

    Способ 2 . Помимо того, что поиск Google можно создать на сайте Google CSE , есть еще один быстрый способ, доступный для тех у кого имеется работающий аккаунт Adsense. Если вы зарегистрированы в Адсенсе, то сможете получить поисковую форму Google в несколько шагов, причем показ рекламы там будет настроен сразу.

    Рисунок 7. Вкладка Мои объявления в Adsense

    Выбираем Поиск и переходим на страницу управления СПП в Adsense:

    Рисунок 8. Страница управления СПП

    Кликаем по кнопке Новая система пользовательского поиска и переходим на страницу создания СПП:

    Рисунок 9. Создание СПП

    На рисунке 9 я указал основные настройки:

    • Название ;
    • Область поиска — по какому сайту будет производиться поиск;
    • Страна — указываем страны;
    • Язык сайта — указываем язык вашего сайта;
    • Кодировка — рекомендую UTF-8;
    • Транслитерация — рекомендую выставлять английский;
    • Популярные запросы —

    При их заполнение нет ничего сложного. Остальные 4 пункта разберем подробнее:


    После выполнения всех настроек, сохраняем их и получаем код, который необходимо установить на сайта. Как это делается я рассказал выше.

    На этом все! Надеюсь на вопрос: Как установить поиск Google на сайт я ответил сполна.

    А вы слыхали про гугл скрипты (Apps Script) ? Нет?

    Ну, как же так получилось? Ай-яй-яй!

    Такая полезная вещь, а о ней в курсе лишь узкий круг специалистов. А зря!

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

    Почему зря?

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

    Та что там бизнес, каждый оценит по достоинству возможности этого сервиса, ведь способов применения просто бездна!

    Стоит немного вникнуть в кухню сервисов гугл, как, прям таки, перехватывает дыхание от открывающихся перспектив!

    Но не будем забегать вперед.

    Для начала необходимо разобраться что это такое и что с этим делать.

    Давным давно (с 2009 года ) великий гугл выпустил полезную фичу — .

    Этот сервис дает возможность автоматизировать работу сервисов гугл. Самый близкий аналог — это офисный пакет Microsoft Office со своими макросами на VBA (Visual Basic for Applications ) и его аналоги Libre Office, SoftMaker Office и т.п.

    Конечно, не совсем корректно сравнивать сравнвать GAS и VBA.

    Вот что об этом говорит один из ведущих специалистов по сервисам google в русскоязычном интернете, Александр Иванов.

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

    Александр Иванов

    Консультант по Google Apps Script

    Ознакомится с более подробным сравнением, которое Александр любезно составил специально для нас с вами, можно по этой ссылке .

    Конечно, у многих, кто пытался с ходу освоить использование макросов могли остаться не слишком приятные воспоминания, однако не стоит сразу морщиться!

    Gooogle Apps script — куда более дружелюбно настроенный к пользователю язык, чем может показаться на первый взгляд.

    Фактически это язык сценариев на базе JavaScript (стандарта ECMAScript 5 ), придуманный специально для того чтобы существенно упростить разработку приложений на основе Google Apps.

    Для тех, кто в танке, напоминаю, что Google Apps (кстати, пакет недавно переименовали в G Suit ) — это интернет-сервисы разработанные транснациональной корпорацией и с которыми в той или иной степени знаком каждый.

    Сервисы гугл

    (которые мы будем рассматирвать, писать для них сценарии на gas ):

    и многие другие, список приложений постоянно растет ( можно посмотреть весь список продуктов google ).

    Так вот, основные преимущества работы с гугл скриптами — это выполнение кода не на клиенте (т.е. непосредственно не на вашем рабочем компьютере ), а в облаке Google.

    Что дарит возможность создания автономных сценариев, для работы которых не требуется вмешательство пользователя (очень крутая фишка! ).

    Кроме того, для начала работы не требуется ничего устанавливать, Google уже обо всем позаботился.

    Есть готовый редактор со всем необходимым функционалом (фото ниже ).

    К плюсам также можно причислить
    • Достаточно низкий порог входа , т.е. легко обучаемый язык.
    • Возможность взаимодействия и с другими службами Google , такими как AdSense, Google Analytics, AdWords и тп.
    • Возможность создавать полноценные с графическим интерфейсом на HTML.
    • Также возможность делать http-запросы и обрабатывать их результаты (парсинг ). Тоесть с помощью класса UrlFetchApp в gas можно извлекать данные с веб-страниц и парсить XML/JSON ответы REST API сервисов.
    • Достаточный функционал для создания простых инструментов, необходимых в работе предприятия, вплоть до полноценной CRM системы.
    • Развитое комьюнити , в смысле, множество готовых решений и людей охочих подсказать и, конечно, документация. Правда все эти прелести в своем большинстве ориентированы на англоязычную публику.
    • и многое другое.
    Первый шаг — создание скрипта

    Не будем ходить вокруг, да около… Напишем свой первый скрипт прямо сейчас.

    Создание скрипта через панель инструментов Script Script

    Для начала зайдите в свой аккаунт Google (напомним, что для доступа ко всем сервисам требуется только один аккаунт, который заводится вместе с гугловской почтой ), а затем переходим по следующей ссылке script.google.com и попадаем на вот такую страницу (панель инструментов Script Script ):

    В левом боковом меню, кликните на кнопку + Создать скрипт .

    Перед вами окно редактора гугл скриптов:

    К слову, это не единственный способ его запуска .

    Можно пойти и другим путем.

    Создание скрипта через Google Диск

    Клацаем на кнопочку Создать , выпадет список с вариантами, тут выбираем Еще и жмем на Подключить другие приложения .

    В окошке подключений, в поиске, вводим клацаем Подключить и… вуаля!

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

    Теперь в списке ваших возможностей появился новый сервис и мы можем приступать непосредственно к коду.

    Создание скрипта через файл-контейнер

    Кроме того существует еще один способ создать файл для сценария.

    Это создание файла-сценария внутри (например внутри таблицы, документа, слайда или формы, условно внутри ).

    Но этот способ мы разберем в следующих статьях.

    Первый скрипт

    Создаем свой первый скрипт.

    Можно, конечно, сходить вот по этой ссылочке тыц и внимательно почитать что пишут знающие люди, или…

    Тем, кто никогда не пробовал свои силы в программировании, наверняка, “лаконичное” окно редактора покажется совершенно загадочным и возможно некоторым даже захочется сбежать с криками: “Меня обманули, говорили, что это просто!!!

    Не спешите смазывать лыжи! Это действительно просто, если, конечно, знать что делать.

    Так уж повелось, еще на заре цифровых технологий, первым тестовым сообщением, которое выводит свеженаписанная программа это: “Привет мир!”.

    Предлагаю чуть, отступить от канонов и вывести куда-нибудь сразу перевод знаменитого приветствия…ну, скажем, на суахили !

    Для начала меняем название функции с myFunction на firstTest .

    Function firstTest () { return Logger.log(LanguageApp.translate("Hello World!", "en", "sw")); }

    Давайте распишем тот же пример более подробно и разберем каждую строку function firstTest () { var text = "Hello World!", text_language = "en", language_of_translation = "sw"; text = LanguageApp.translate(text, text_language, language_of_translation); Logger.log(text); return; }

    Строка 1 . Директива function создает новую функцию, далее указываем ее название firstTest .

    Затем в круглых скобках () указываем параметры которые хотим передать в функцию (в нашем случае мы ничего не указываем, так как ничего не передаем ).

    А в фигурных скобках {} указывается код который выполняется когда эта функция будт вызвана.

    Function firstTest () { // Тут код функции }

    Если поставить два слеша // , то код после них и до конца строки выполнятся не будет.

    Это называется комментарий .

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

    Строки 2-4 . Объявляем переменные с помощью директивы var .

    • Переменная text со значением “Hello World!” — это текст, который требуется перевести,
    • text_language со значением “en” — код языка на котором написан текст, если оставить его пустым (вот так “” ), язык будет определяться автоматически,
    • И language_of_translation со значением “sw” — код языка на который будет переведен текст.

    (коды языков можно подсмотреть )

    Var text = "Hello World!", text_language = "en", language_of_translation = "sw";

    Строки 6-10 . Обращаемся к объекту LanguageApp , а точнее к методу этого объекта translate , который принимает три параметра (их мы уже описали выше в строках 2-4 ).

    Если некоторые термины вам непонятны и/или у вас нет базовых знаний JavaScript или другого языка, не расстраивайтесь!

    Результат

    Результатом работы этого метода будет — переведенный текст, который, в нашем случае, записывается в переменную text (то есть перезаписываем старое значение на новое ).

    Text = LanguageApp.translate(text, text_language, language_of_translation);

    Строка 12 . Logger.log(text) — это вывод нашего текста в журнал, где потом мы и будем его смотреть.

    Logger.log(text);

    К слову, данный способ (Logger.log(); ) в будущем не раз пригодится для отладки ваших сценариев, т.е. поиска и устранения ошибок, закравшихся в ваш сценарий.

    Строка 14 . Необязательная директива return — возвращает данные, указанные поле нее (мы ничего не указали, а это значит что по умолчанию возвратится false , с таким же успехом данную директиву можно было не указывать ).

    Продолжим, наша программа написана , теперь сохраним ее нажав на эту кнопку (иконка дискеты )

    К вам тут же выскочит окошко.

    В нем вводим название проекта в поле Укажите новое название проекта , пусть будет Привет мир! . Затем жмем на кнопку ok

    Теперь запустим ее , сначала выбрав нужную функцию а затем нажав на вот тут (иконка треугольник )

    И наконец, идем во вкладку Вид > Журналы или просто нажимаем Ctrl+Enter (горячии клавиши полезная штука ).

    И вот результат наших стараний…

    Синим подчеркнута информация, сообщающая когда была сделана запись,

    а красным наше содержимое переменной text .

    Да, да — Salamu, Dunia! И есть перевод знаменитого Hello World на суахили.

    Задача выполнена!

    Овации! Чувствуете гордость? Совершенно заслуженно.

    Мы с вами сделали первый шаг к освоению замечательного инструмента.

    Согласитесь, без ложной скромности, что это было не так уж и сложно.

    Остались вопросы?

    Вы всегда можете задать их в комментариях к данному посту.

    Да и поэкспериментируйте с кодом, а потом покажите нам его в комментариях.

    Итоги

    А теперь, коротко, подведем итоги:

    • Установка сервиса GAS простая процедура, которая займет меньше минуты.
    • Запустить редактор скриптов можно по ссылке script.google.com
    • LanguageApp.translate(text, sourceLanguage, targetLanguage); — автоматически переводит текст с исходного языка на целевой язык, он принимает 3 параметра: исходный текст)
    • Чтобы получить мнение или поговорить о проблеме, с которой вы сталкиваетесь, я рекомендую вам размещать сообщения в одном из сообществ Google+: Google Script. Russian , Google Документы и Диск или на Stack Overflow

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

    Имей в виду, что 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. Примечателен возможностью узнать демографические и географические характеристики пользователей, смотрящих определенный видеоролик. Ведь интересно выложить очередную копию клипа на песню «До свидания, кореша» и проанализировать, какого пола, возраста и места жительства ее слушатели.