Чтение Google Spreadsheet из 1C на примере простой службы 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 :

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

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

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

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

Скачать