GoogleSheet_4

Импорт даных из таблиц Google Sheet

Автор: Перла Аркадий (компания «ТриАПринт»)

Эта текст написан по мотивам недавно опубликованного поста на сайте www.campsoftware.com. Однако опубликованная техника нуждается в дополнении. Ниже вольный перевод  с моими дополнениями.

Google Sheet — это часть набора приложений Google Docs, он-лайн аналога Microsoft Office. Google Sheet, соотвественно, отвечает за работу с электронными таблицами. Как разработчикам FileMaker, нам может потребоваться импорт данных такой таблицы. Очевидно, что таблицы, как и любые другие файлы в  Google Docs, можно скачать, но как наладить автоматическую загрузку данных?

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

Чтобы получить ссылку доступа для нашего файла воспользуемся кнопкой «Настройка доступа» в Google Sheet и в диалоговом окне включим «Доступ по ссылке». У нас получится что-то вроде этого:

GoogleSheet_1

Теперь у нас есть ссылка типа:

https://docs.google.com/spreadsheets/d/1DkuMj9fxEKNsRM_gGgGHeJgwJin3H8A5yIFasTKD7po/edit?usp=sharing

Ссылка несет в себе уникальный идентификатор файла в системе Google Docs. Переход по такой ссылке откроет файл в режиме редактирования.* (*в данной статье приведены заведомо не рабочие ссылки, однако их структура корректна)

Теперь мы воспользуемся небольшим хаком и заменим окончание ссылки «edit?usp=sharing» на «export?&format=tsv» у нас получилось:

https://docs.google.com/spreadsheets/d/1DkuMj9fxEKNsRM_gGgGHeJgwJin3H8A5yIFasTKD7po/export?&format=tsv

Если теперь мы вставим такую ссылку в строку браузера, то вместо того чтобы открыть файл в Google Sheet, этот файл скачается в формате tsv. TSV — это текстовый формат таблиц, с разделением колонок знаками табуляции, аналогичен CSV. В этой статье мы используем TSV, однако Google Sheet позволит нам скачать файлы и в других форматах, достаточно указать формат в ссылке. Поддерживаются форматы: xlsx, pdf, tsv, csv, ods.

Теперь перейдем в FileMaker. Раз у нас есть ссылка на файл, то мы можем воспользоваться командой Insert From URL И тут у нас есть два варианта (в CampSoftware рассматривают только первый вариант, то мы рассмотрим также и более автоматизированный процесс):

Команда Insert From URL вставляет содержимое ссылки в поле таблицы, и здесь важен формат этого поля. Если поле текстовое, то результатом команды Insert From URL, будет содержимое нашего tsv файла в указанном поле. Дальше нам остается обработать полученный текст. Поскольку колонки данных разделены знаком табуляции, а строки знаком перевода строки, то не сложно написать скрипт, который в цикле обрабатывает это текст «раскидывая» данные в поля нужной таблицы. Для убыстрения работы, рекомендуется полученный импортом текст сохранить перед циклом в переменную, чтобы при обработке не требовалось каждый раз обращаться к полю.

GoogleSheet_2

Очевидно, что вариант с обработкой данных как единого теста выглядит не слишком производительным. Можно ли просто импортировать данные воспользовавшись Import Records? Конечно, можно. Для этого выполним команду Insert From URL применительно не к текстовому полю, а к полю-контейнер. В этом случае в поле запишется не содержимое файла TSV, а сам файл. Дальше все просто: импортируем полученный файл во временную папку FileMaker и выполняем команду Import Records из только что сохраненного файла.

GoogleSheet_3

Обращаем внимание, что в качестве котировки при импорте я указал UTF-8, иначе у нам могут быть проблемы с русскими символами.

Небольшой бонус:

Тем кто заинтересовался возможностью скачивания файлов из Google Docs , приведем основные поддерживаемые форматы, которые можно подставить в ссылку доступа:

Sheets: xlsx, pdf, tsv, csv, ods, and zip (a folder with the sheet as html).
Docs: docx, pdf, rtf, txt, odt, and zip (a folder with the sheet as html).
Slides: pptx, pdf, txt, png, jpg, and svg.

 

2 комментария

Leave a Reply

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

38 − 36 =