Чтение Google Spreadsheet из 1C на примере простой службы Help Desk
Интеграция - Загрузка и выгрузка в Excel
Файлы
ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.
Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний
Оформите подписку на компанию для решения рабочих задач
Оформить подписку и скачать решение со скидкойВы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».
- 0% комиссии — оплата напрямую исполнителю;
- Исполнители любого масштаба — от отдельных специалистов до команд под проект;
- Прямой обмен контактами между заказчиком и исполнителем;
- Безопасная сделка — при необходимости;
- Рейтинги, кейсы и прозрачная система откликов.
В статье рассматривается работа с 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 :

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

Вступайте в нашу телеграмм-группу Инфостарт
См. также
5490 руб.
12.08.2021 48481 654 71
6000 руб.
11.12.2019 68081 1163 3
12444 руб.
29.10.2014 237932 777 544
6000 руб.
26.11.2020 51312 865 4
24400 руб.
10.03.2016 76184 321 100