Чтение Google Spreadsheet из 1C на примере простой службы Help Desk


В статье рассматривается работа с Excel-подобными таблицами (spreadsheet) Гугл через Web API этой службы (только чтение). А также практический пример использования Google Spreadsheet для простейшей организации службы поддержки Help Desk.

В статье рассматривается работа с Excel-подобными таблицами (spreadsheet) Гугл через Web API этой службы (только чтение). А также практический пример использования Google Spreadsheet для простейшей организации службы поддержки Help Desk.

Организация службы поддержки с помощью Google Spreadsheet

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

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

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

Инструменты — Управление скриптами, далее функция onEdit:

Добавляем скрипт:

function twoDigit(value) {

  return (value < 10 ? ‘0’ : ») + value;

}

 

function formatRfc3339(date) {

  var y = date.getUTCFullYear();

  var l = twoDigit(date.getUTCMonth() + 1);

  var d = twoDigit(date.getUTCDate());

  var h = twoDigit(date.getUTCHours()+3);

  var m = twoDigit(date.getUTCMinutes());

  var s = twoDigit(date.getUTCSeconds());

  return d + ‘.’ + l + ‘.’ + y + ‘ ‘ + h + ‘:’ + m + ‘:’ + s;

}

 

function onEdit(event) {

  var range = event.source.getActiveRange();

var  Row= range.getRow();

 

  var timestamp = formatRfc3339(new Date());

  var user = event.user;

  var ss = SpreadsheetApp.getActiveSpreadsheet();

  var sheet = ss.getActiveSheet();

var  cell = sheet.getRange(Row,2);

 var col=range.getColumnIndex();

  var shname= sheet.getName();

  if ((cell.getValue()==»»)&&(col!=2)&&(shname==»HelpDesk»))  {

  cell.setValue( timestamp );

  }

}

В таблице для организации службы поддержки используются следующие колонки:

  • Дата, время – дата и время обращения
  • Заявитель – кто обратился с заявкой
  • Тема – тема, краткое содержание заявки
  • Специалист – кто из специалистов поддержки взялся за задание
  • Статус – статус задания
  • Комментарий – комментарий по ходу выполнения
  • Часы – затраченное на задание время

 

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

Принципы чтения Google Spreadsheet

Описание API Google реализовано тут:

http://code.google.com/apis/spreadsheets/data/1.0/reference.html

Нюансы, касающиеся аутентификации, рассмотрены тут:

http://code.google.com/apis/spreadsheets/data/1.0/developers_guide_protocol.html#AuthSubHTTP

Тем не менее, в реализации возникли некоторые сложности, которые удалось решить только обращением на форум sql.ru:

 

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

На практике для чтения публичных и приватных документов требуется указывать различные адреса потоков public/values и private/full соответственно, как это делается в коде обработки:

Соединение = Новый HTTPСоединение("spreadsheets.google.com", , , , , Истина);
ИДФайла = "0Ao9KCEqHCZbidGVlUVcyYmt0NTlid2VDZ1ZxSF9vbHc";
Если ИмяПользователя = "" Тогда
Соединение.Получить("/feeds/list/" + ИДФайла +"/od8/public/values", ФайлИД);
Иначе
Соединение = Новый HTTPСоединение("spreadsheets.google.com", , , , , Истина);
Соединение.Получить("feeds/list/" + ИДФайла + "/od8/private/full", ФайлИд, Заголовки);
КонецЕсли;

Демонстрационная обработка

Обработка из примера читает гугл-документ, расположенный по адресу: https://docs.google.com/spreadsheet/ccc?key=0Ao9KCEqHCZbidGVlUVcyYmt0NTlid2VDZ1ZxSF9vbHc :

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

При этом она разукрашивает статусы разным цветом.

Можно отбирать заявки только за последние две недели.

Результат имеет вид:

29 Comments

  1. sai_NT

    (1) Eugeneer, кстати не так много рускоязычной инфы по работе со спредшитами (таблицами) от корпорации добра…

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

    Reply
  2. iov

    (1) Я вот прям никак не пойму картину «черный квадрат» но она стоит много денег и считается мировым достоянием или как-то так… Так вот это я к чему пусть пишет… Это лучше чем в политику или гопники…

    И тем более не лукавь — ты же прочитал — да еще и отписался — хотя в реально бесполезных темах — тебя замечено не было…

    Reply
  3. fixin

    (1) я на базе Google Spreadsheets делал службу HelpDesk, как и описано в примере. Мало ли где нужна коллективная работа, 😉

    (2)(3) спасибо.

    Reply
  4. rus128

    не, за информацию по взаимодействию с Google Spreadsheets — спасибо, конечно, но делать HelpDesk на ее базе — это жесть…

    как в нее внести заявку «не работает интернет»? 🙂

    Reply
  5. fixin

    (5) это HelpDesk по вопросам 1С. а не по вопросам интернета. Интересно, а как вы внесете заявку про интернет в любой ХелпДекс? Бугога.

    Reply
  6. rus128

    (6) а чо «бугога»? или реализация HelpDesk без интернета невозможна по определению?

    на одном из прошлых мест работы HelpDesk был реализован на веб-приложении, на другом — не поверите — даже на 1С 8.1/8.2! 🙂

    Reply
  7. fixin

    (7) это если специалисты поддержки находятся в пределах интранет. Что натянуто как-то.

    Reply
  8. Abadonna

    (6), (7)

    Если бы наш сисадмин не был таким ленивым, он бы опубликовал, как сделать правильный Help-Desk в совокупности с корпоративным чатом 😉

    Subject: Сообщение дня

    Добро пожаловать! Информационно-техническая служба Сервис-М приветствует вас!

    Напоминаем Вам, что запросы в службу технической поддержки принимаются в электронной форме по адресу http://help.its

    Справочная информация о чате http://doc.its/chat/help

    …. бла бла

    // ссылки, разумеется, отсюда никуда не приведут

    А Сережа пусть лучше обработки пишет, чем в форумах ругается.

    Так что, fixin, плюс (но в уме)

    Reply
  9. fixin

    (9) вот видишь, чтобы поднять такой ХД как у тебя, нужно иметь сисадмина, сервер PHP и MySQL. А тут без всяких сись-админов, взял и поднял в Гугле… Речь не о том, что у меня крутой ХД, а о том, что дешевый и сердитый. Надеюсь, теперь всё понятно?

    Reply
  10. Abadonna

    (10) Дык я и не говорил, что у тебя плохой. Даже плюс в уме поставил 😉

    Reply
  11. fixin

    (11) загадочны помыслы твои. остался ты мною не понят.

    Reply
  12. vasiliy_b

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

    Reply
  13. fixin

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

    Начали юзать хелпдеск.

    Reply
  14. awk

    (9) Abadonna, Почему в уме? Идея хоть и через G, но вполне интересная своей нетривиальностью…. Хотя думаю, что бесплатный хостинг трака или редмайна найти в сети можно. Так что я пожалуй плюсану.

    Reply
  15. Abadonna

    (15)

    Почему в уме?

    Потому что, если уж делать чисто одноэсовский Help Desk через инет, то и делать его надо 1С web-клиенте. Дешево, сердито, юзверям почти привычно. Но и такое решение, в общем, право на жизнь имеет, поэтому и в уме.

    Reply
  16. fixin

    (16) вы не вкурили суть идеи — минимальными средтсвами.

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

    сравните с другими вариантами — подымать апач, СКЛ сервер — для редмайна и подобных трекеров.

    у вас ваще надо писать еще на 1с клиента и раздавать ключи доступа пользователям.

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

    я не к тому, что хелпедеск через гугл — самый клевый, просто он самый простой.

    Reply
  17. awk

    (16) Abadonna,

    Но и такое решение, в общем, право на жизнь имеет, поэтому и в уме.

    Ясно. Другими словами не хочется светить свой ник в решении: «Как проводить топором хирургические операции». Плюс если в конце статьи написано, «берем скальпель» (это я про

    Обработка из примера читает гугл-документ, расположенный по адресу:

    ).

    Reply
  18. fixin

    (18) мдя

    Reply
  19. Abadonna

    (17)

    я не к тому, что хелпедеск через гугл — самый клевый, просто он самый простой.

    Я тебе еще раз повторяю: я вовсе не говорил, что твое решение плохое.

    Решение как решение.

    Reply
  20. адуырщдв

    Хорошее решение. Годно, конечно ж, не только для задачей обозначенных автором. Однозначно плюс.

    Reply
  21. адуырщдв

    (21) адуырщдв,

    Например, три раза делали такое для 1. торгпредов с андроидами, 2. замерщиков и сборщиков с андроидами, и 3. босса фирмы просиживающего штаны в думе с ипадом 🙂 Плюсы очевидны, недорого и надежно. Плюс ненужно никакого левого софта.

    Reply
  22. Новиков

    (17)

    сравните с другими вариантами — подымать апач, СКЛ сервер — для редмайна и подобных трекеров.

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

    — либо юзать WEBrick, который идет вместе Ruby.

    — либо доставить mongrel.

    В первом случае — НИЧЕГО ДЕЛАТЬ НЕ НУЖНО, «оно само уже работает». В втором случае — написать одну команду в консоле.

    Поэтому непонятно, что какую сложность Фиксин вкладывает в слово «подымать».

    2.по поводу СУБД — можно выбрать тот сервер из поддерживаемых, который больше устраивает. Бесплатные в т.ч. Вся установка сходится к дальше-дальше-да-да-да-ок-ок. Опять не понятно, в чем затраты и сложность этого действия?

    Сухой остаток: Redmine вместе с веб-сервером поднимается за 20 минут неторопливых действий. Сколько автор потратил на свои изыскания?

    Но за статью я ставлю плюс, однозначно. Как демонстрация технической стороны вопросы.

    За идею баг-трекера, суппорт-трекера и какого-то еще трекера — минус.

    Reply
  23. fixin

    (23) Новиков, насколько же зашорено ваше сознание, боже мой!!!

    Поймите, что ньюбу проще начать сразу с колес работать с Google Desk, чем разбираться 20 минут, как ставить сервер БАЗЫ ДАННЫХ и веб-сервер, какими бы простыми они не были. НЕ бывает серверов баз данных и веб-серверов с нулевым администрированием.

    И потом, если вы напрактиковались ставить базы данных и веб-сервера за 20 минут, это не значит, что у ньюба это взлетит быстрее, чем за два часа.

    Новиков, вы как с луны упали.

    Хотя, если бы в интернете существовал НЕДОРОГОЙ платный сервис хелп-деск или коллективной работы, можно было бы им воспользоваться, как вариант.

    И кстати, у наших клиентов стоит Redmine — никому не советую его в качестве хелп-деск, редкостное гуано.

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

    Да. если ВСЕРЬЕЗ и НАДОЛГО, то нормальный хелпдеск лучше, спору нет.

    А если на коленке и с колес, то нормалек и через Гугл-докс.

    Reply
  24. Новиков

    (24)

    И потом, если вы напрактиковались ставить базы данных и веб-сервера за 20 минут, это не значит, что у ньюба это взлетит быстрее, чем за два часа.

    Вы описываете «ньюба» в лице себя, я так полагаю?

    Reply
  25. fixin

    (25) как вариант. Новиков, вы поймите, что потребность в ХД может возникнуть не только в конторе, укомплектованной тру-админами, но и в мелкой организации, где нужны коллективные действия, и где даже корпоративного сайта нет.

    Выйдите за рамки своей организации, подумайте о проблеме в общем. Пока нормальных средств взаимодействия, кроме гугл-докс нету.

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

    В ИТ кризис — нет нормальных решений и нет анализа решений. Поэтому так много автоматизации на Экселе, спуститесь уже к реальной жизни, уважаемый олимпиец.

    Reply
  26. Новиков

    (26) Сергей, я даже не критиковал Вас, а вы уже ярлыки навешиваете в виде олимпийцев, луны и еже с ними. Я только высказал свою точку зрения. Если вы неприемлете это, укажите это в тексте статьи, я бы прошел мимо 🙂

    Reply
  27. fixin

    (27) Я критикую не вас, а вашу точку зрения, используя красочные эпитеты. Если для вас такой стиль ведения дискуссии неприемлим, не будем ее продолжать. По существу вопроса я ответил, не нужно обсуждать офорление ответа. Обсуждайте аргументы, если дискуссия интересна.

    Reply
  28. Новиков
    Если для вас такой стиль ведения дискуссии неприемлим, не будем ее продолжать

    ок.

    Reply
  29. 7OH

    Ваш файл считывается хорошо.

    А вот свой по примеру не выходит.

    Файл открыт на полный доступ — его надо считать (люди добавляют данные, я считываю).

    Исправил ссылку на /private/full, ошибка считывания исчезла, но файл получает пустой.

    Поможете ?

    Интересует тупо считывание таблицы в таблицу значений (может есть ещё публикации на эту тему)

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *