Если вы хотите быстро создать прототип своих следующих веб-приложений, попробуйте использовать Google Spreadsheets в качестве базы данных.

С помощью созданной мной небольшой библиотеки под названием get-sheet-done вы можете получить бесплатную облачную базу данных с редактором графического интерфейса менее чем за 5 минут.

История создания Get Sheet Done

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

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

Я рассмотрел несколько решений, в том числе использование полного подхода «бэкэнд как услуга», при котором данные хранятся в виде файла в Dropbox. Затем я выбрал несколько неортодоксальное решение: я сохранил данные в электронной таблице Google.

Когда база данных на основе электронных таблиц является подходящим решением?

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

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

Помните: мы говорим о электронной таблице, которая отлично подходит для структурированных табличных данных. Но не подходит для хранилища документов / объектов.

Помимо этого, следует учитывать некоторые плюсы и минусы:

Плюсы

  • Это бесплатно
  • Очень легко настроить - не нужны ключи API или сложные SDK
  • Отсутствие обслуживания
  • Вы получаете бесплатный графический интерфейс для редактирования данных
  • Вы получаете управление доступом на запись бесплатно
  • Может включать внутренние расчеты с использованием функций электронных таблиц
  • Приложение, использующее данные, может быть легко обновлено на более позднем этапе для использования реальной базы данных, поскольку данные представлены как стандартный JSON.
  • Некоторого уровня автоматизации можно достичь, используя приложения-скрипты в сочетании с временными триггерами.
  • Его можно комбинировать с Google Forms для сбора данных.

Минусы

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

Как я это реализовал

Мне не удалось найти много информации или хороших библиотек для удобного чтения данных из электронной таблицы Google. Поэтому я решил накатить собственное решение. Теперь он доступен на npm как готовый пакет.

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

Одна из сложностей заключается в том, что вам нужно получить его с помощью JSONP или как-то обработать CORS. Я решил пойти с JSONP и использовать библиотеку fetch-jsonp для управления этим, поэтому нет необходимости в особых мерах.

Как это использовать

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

  1. Создайте электронную таблицу Google с некоторыми данными
  2. Опубликуйте лист в Интернете: File -> Publish to the web.
    Обратите внимание на идентификатор документа из URL-адреса.
  3. Установите пакет: npm install --save get-sheet-done
  4. Получите данные:
import GetSheetDone from 'get-sheet-done'
GetSheetDone.labeledCols(DOCUMENT_ID).then(sheet => console.log(sheet))

5. Прибыль!

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

Вот живая демонстрация, с которой вы можете поиграть.

Стоит подумать об использовании Google Spreadsheets в качестве источника данных для веб-приложения, особенно если вы просто создаете быстрый прототип. У него есть уникальные преимущества, и его легко реализовать с моей библиотекой (или без нее).

Сообщите мне в комментариях, если вы нашли эту библиотеку полезной и есть ли отсутствующие функции.