Главное Авторские колонки Вакансии Образование
7 107 1 В избр. Сохранено
Авторизуйтесь
Вход с паролем

Гугл таблицы как база данных

Краткий обзор использования google spreadsheets в качестве облачной базы данных. Таблицы привычны всем, в том числе и мне, поэтому, пока я искал подходящую облачную БД для одного из проектов, данные “временно” расположил в них.
Мнение автора может не совпадать с мнением редакции

Гугл таблицы как БД

Краткий обзор использования google spreadsheets в качестве облачной базы данных. Таблицы привычны всем, в том числе и мне, поэтому, пока я искал подходящую облачную БД для одного из проектов, данные “временно” расположил в них.

Хотелось, конечно, сразу использовать таблицы как БД, но для этого существовал ряд препятствий:

  1. Для получения данных нужна 0Auth - аутентификация, что ограничивает доступ к инфе не авторизированных пользователей
  2. Получаемыми даже при такой аутентификации данными неудобно оперировать (надо сначала причесывать)

Вскоре я обнаружил, что таблицу можно опубликовать в интернете в формате csv:

Что решает сразу и проблему причесывания данных - CSV легко парсится на массив объектов.

С помощью JQuery легко получить данные и распарсить их в массив объектов, фильтровать и оперировать этими объектами.

$.ajax({

type: "GET",

url: "#ССЫЛКА_НА_ТАБЛИЦУ_В_ФОРМАТЕ_CSV#",

dataType: "text",

success: function(data) {

csvdata = data;

tasks = $.csv.toObjects(csvdata); // необходимо подключить библиотеку https://cdnjs.cloudflare.com/ajax/libs/jquery-csv/...

})

}

});

У концепта есть 2 минуса:

  1. Таблица доступна всем по прямой ссылке (но только при условии, что эта ссылка в общем доступе. В моем проекте не стало проблемой, тем более, что конфиденциальной информации в таблице нет)
  2. Нельзя просто так записывать в эту БД. То есть Таблицы можно использовать в качестве “админки” сайта со всеми ее формулами, скриптами и пр. Для записи же нужно пользоваться “костылями”.

В конце привожу кусок кода, выводящий задачи разработчика (реализация трекера задач в firebase)

var csvdata = '';

var tasks = [];

var user;

var utasks;

function drawTable(td1,td2,td3){

$('tbody').append('' + td1 + '' + td2 + ''+ td3 +'')

}

function workWithUser(user){

if(user.role == 'dev'){

$('th:nth-child(3)').text('Статус');

$.ajax({

type: "GET",

url: "https://docs.google.com/spreadsheets/d/e/2PACX-1vT1I-YFGfiH80flu07zn7y965iey4QOsgo1N1GD5V1MYCaDcLgUdjFO_el2aVWRic4V_YdclCBfHGFF/pub?gid=64405821&single=true&output=csv",

dataType: "text",

success: function(data) {

csvdata = data;

tasks = $.csv.toObjects(csvdata);

utasks = tasks.filter(function(task){return (task['Ответственный'] == user.name) & (task['Ответственный'] !== '')& (task['Статус'] !== 'Завершена')});

$(utasks).each(function(key,task){

console.log(task);

drawTable(task['Название'],task['Описание'],task['Статус']);

})

}

});

}

}

firebase.auth().onAuthStateChanged(function(user) {

if (user) {

firebase.database().ref('users/'+user.uid).on('value',function(val){

console.log(val.val());

user = val.val();

workWithUser(user);

$('table').attr('class','table-stripe ui-bar-d ui-body-d ui-responsive table-stroke ui-table ui-table-columntoggle');

});

}})

0
В избр. Сохранено
Авторизуйтесь
Вход с паролем