Пишем скрипты для автоматизации работы с приложениями Google. Скрипт поисковой системы как Google Создание скрипта через панель инструментов Script Script

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

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

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

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

Для того, чтобы настроить поиск Google , необходимо войти в аккаунт системы контекстной рекламы Google Adsense. Для этого на странице входа Гугл Адсенс введите свой e-mail и пароль в соответствующие поля, затем нажмите кнопку «Войти». В панели управления Adsense из верхнего меню выбираете «Мои объявления», следующим шагом - из левого столбца - «Поиск». Далее кликаете по ссылке «Новая система пользовательского поиска».


В самую верхнюю графу вводите название системы. Советую выбрать название своего ресурса. Для чего это нужно? Ну, прежде всего, для того, чтобы различать варианты поиска для каждого сайта, если их несколько. Первая настройка, которая будет предложена, это выбор области, по которой будет осуществляться поиск. Мы устанавливаем настройку для определенного (определенных) ресурса, потому ставим «Только выбранные мной сайты».

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


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

Для чего нужны эти КС? Для того, чтобы сузить область применения значения того или иного термина и повысить релевантность рекламных объявлений, которые будут появляться на странице результатов поиска. Приведу простой пример. Допустим, посетитель ввел в поисковую строку слово «карта». Это слово имеет несколько значений и довольно широкий диапазон применения этих значений.

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

Далее. Если поставите галочку напротив «Использовать Безопасный поиск», то включится фильтр SafeSearch, который отсеивает порнографические и другие нежелательные ресурсы. Но эта опция нужна только тогда, когда ведется поиск по нескольким сайтам или по всей сети. После этого указываете страну, в домене которой будет производится пользовательский поиск Google, язык вашего web-сайта и кодировку (обычно для блогов и сайтов Вордпресс используется Юникод (UTF-8)).

Несколько слов об опции «Транслитерация». Если отметить галочками соответствующие языковые группы, то иноязычные посетители вебсайта смогут получить ответ на запрос, введенный на других языках. Это справедливо, скорее всего, для мультиязычных блогов и сайтов.

Настройка клиентского канала для мониторинга эффективности рекламных объявлений на странице результатов поиска

Для этого активируем расширение, кликнув по значку шестеренки в правом верхнем углу окна браузера, из верхнего меню выбираем «Images», затем из появившегося списка - «View Image Information». В соседней вкладке откроется информация о всех изображениях на web-странице, в том числе получите сведения об URL вашего логотипа. Как видно из выше расположенного скриншота, изображение для шапки моего блога хранится в папке «img» .

Если есть желание использовать другую картинку для страницы результатов поиска Google, можно ее загрузить на сервер , после чего прописать путь для нового изображения напротив строчки «URL изображения логотипа». Можете выбрать из настроек, где будет располагаться изображение: над или рядом относительно окна (формы) поиска Google.

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


Для того, чтобы вывести результаты поиска Google по сайту, необходимо создать отдельную вебстраницу через админку WordPress. Обязательно ознакомьтесь с моей статьей , где я все очень подробно описал. Добавлю, что после того, как вы создали страницу для вывода результатов поиска, нужно прописать ее адрес в графу напротив строки «URL вывода результатов поиска». После того, как все выше описанные настройки установлены, надо нажать кнопку «Сохранить и получить код» в самом низу окна настроек.

Вставка кодов формы (окна) и страницы результатов поиска Google

Если вы настроили получение результатов поиска Google по сайту с использованием дизайна ресурса (третий вариант), то получите после сохранения два кода:


Верхний код определяет форму (окно) со строкой поиска. В старом варианте, когда я еще использовал поиск по умолчанию, на моем блоге это окно выглядело так:

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

На страницах блога я уже довольно подробно описывал применение стилей CSS к оформлению вебстраниц. В вашей теме Водпресс тоже должен быть файл с подобным названием (один из вариантов, например, search.php). После вставки кода форма поиска Google приняла такой вид:

Нижний код вставляем на вновь созданную страницу (у меня она названа «Результат поиска») прямо в окне HTML редактора админки Вордпресс. Да, чуть не забыл. Вебстраница с результатами поиска не должна фигурировать ни в одном меню блога или сайта. Поэтому нужно исключить ее id, чтобы не вводить читателей в заблуждение, поскольку никакой информации на ней не будет.

Для того, чтобы узнать id, зайдите в админ панель WordPress в раздел «Страницы» и подведите курсор к ссылке на нужную страницу. В результате внизу в строке состояния браузера увидите ее адрес, в составе которого будет указана цифра, которая и является искомым id.


Итак, id определен, теперь необходимо его исключить из всех меню на web-сайте. В моей теме, например, за вывод меню отвечает шаблон header.php. Данное меню определяется строчкой примерно следующего вида:

Здесь я дополнил эту строку следующей записью:

&exclude=4366

Получилось так:

Все, теперь страница пользовательского поиска Google на сайте будет исключена из меню и будет появляться только с результатами поиска по запросам читателей. Надеюсь, я все объяснил понятно. Честно говоря, объемные статьи писать непросто, но это именно тот случай, когда необходимо. Если считаете, что публикации блога помогают находить ответы на интересующие вас вопросы, существует возможность подписки на свежие материалы по e-mail . До скорого свидания.

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

Чем больше ваш ресурс пополняется новой информацией, тем быстрее возникнет необходимость вводить структурированный удобный поиск. Есть несколько вариантов, как это сделать. Первый способ предлагает воспользоваться встроенными средствами вашего CMS. Второй подойдет для тех, кто работает на чистом HTML - для этого пишется специальный скрипт поиска по сайту HTML. И третий вариант, самый удобный, проверенный и, что самое главное, подходящий для любых сайтов - это поиск на сайте через поисковые системы Google или "Яндекс". Что они собой представляют и как создаются?

Особенности поиска через поисковые системы

Существует несколько обоснованных причин для того, чтобы использовать поиск на сайте через "Яндекс" или Google:

  • Первый момент заключается в том, что это специализированные поисковые системы, а значит, их алгоритмам стоит доверять.
  • Во-вторых, поисковик дает подсказки, а значит, пользователю проще будет сформулировать свой вопрос и найти необходимое. По такому же принципу учитываются орфографические ошибки в словах или случайно переключенная клавиатура. Обычная форма поиска по сайту HTML этого не учтет, и искомое не будет найдено.
  • Третий немаловажный аспект - это ведение статистики. При запросе в Wordstat "Яндекс" выдает нам частоту того или иного поискового запроса. По этим данным мы знаем, какие ключи применять при наполнении сайта текстами, а также можем проанализировать, что ищет пользователь, что пользуется спросом, а что нет, что можно предложить потенциальному покупателю и т. п.

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

Поиск для сайта "Яндекс"

Русскоязычный гигант "Яндекс" предлагает разработчикам сайтов собственный бесплатный инструмент интеграции поиска. Он довольно удобен. Помимо учета морфологических особенностей языка - исправления ошибок, опечаток, поиск по сайту через "Яндекс" позволяет к каждому слову указать список синонимов и добавить выпадающую строку подсказок. Это позволит пользователю с большей вероятностью найти то, что ему было нужно.

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

Есть возможность искать не только текст, но и изображения.

И последняя, но не менее важная особенность. Используя поиск на сайте "Яндекс", вы автоматически чаще ранжируетесь системой, что позволяет вам быстрее продвинуться в ТОП запросов.

Как установить поиск "Яндекс"

Все просто, главное, чтобы ваш сайт был добавлен в "Яндекс.Вебмастер". Сделать это легко.

Нужно зайти в “Яндекс. Поиск на сайте” и нажать “Установить поиск”. Далее заполнить все данные, которые от вас требует система, включая название ресурса, e-mail и требования к поиску. В форме есть подсказки, поэтому разобраться, где ставить галочки, не составит труда.

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

Такой скрипт, когда-то бывший без спадающих списков, давно работал на страницах Гугла , и, судя по количеству скачиваний, приобрёл популярность среди англоязычных пользователей (есть выбор 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: первичные кнопки сделаны как стрелки, по стилю кнопки Яндекса. Скриншоты в статье заменены.

А вы слыхали про гугл скрипты (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