Архив: Скрипт импорт из MySQL в Google Таблицы

Бюджет По договоренности
Создан: 4 года назад
Закрыт
Описание
Необходимо разработать Google App Script импортирующий данные из MySQL в Google Таблицы.

При отклике называйте сроки и стоимость реализации.



Суть задачи:

Существует условная MySQL база данных, которая содержит таблицы приблизительно следующей структуры. Данная структура указана в качестве примера и для разных таблиц она может отличаться. Необходимо написать скрипт для Google Spreadsheet, который подключался к БД и выгружал/обновлял все значения из таблиц MySQL базы данных.



Структура DB:

id;date;form;ip;ua;uid;login;password;phone;address1;address2;zip;city



Пример структуры Google Таблицы.

https://docs.google.com/spreadsheets/d/1hb8UteTLuKtLxT8IkSaUBsx6H6nhvKWVkahJJbQ7DJk/

На листе sql_example (temp) в ячейке лежит mysql dump.



Нюансы:

1) В Google Таблицах создается Лист, содержащий все интересующие колонки из таблицы в MySQL БД

2) Название листа в Google Таблицах = Название таблицы

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

4) Данные в БД могут обновляться, для этого необходимо реализовать отдельную функцию Update. У каждой Таблицы будет колонка date, содержащая актуальное время поступления данных (или обновления их в MySQL). Нужно пробежаться по тем, которые были изменены и обновить значения в ячейках.

5) Настройки для подключения к БД необходимо вывести на отдельный лист Google Таблиц "settings": host;db_name;user;pass

Т.е. фактически весь набор переменных для формирования SQL запроса лежит в ячейках + в Названии Листа

6) На отдельный лист Google Таблиц "logs" необходимо выводить информацию о результатах импорта и выводить ошибки

7) Вызов функций, отвечающих за импорт/обновление данных необходимо вынести в отдельное меню. (https://developers.google.com/apps-script/guides/menus)

8) При каждом новом импорте, старые данные не должны затираться.



Мои мысли относительно логики работы функций:

Логика работы Insert

- Получаем название активного листа

- Собираем все названия из первой строки (Заголовки) + приводим в нижний регистр. Получаем значение последнего ID в колонке. Есть вероятность перемещения строк, поэтому нужно найти самое большое значение среди всех существующих в массиве.

- Получаем значение для подключения с Листа settings

- Формируем запрос

- Получаем ответ

- Логгируем

- Производим поиск необходимых колонок

- Вставляем в цикле данные

- Логгируем



Логика работы Update

- Получаем название активного листа

- Собираем все названия из первой строки (Заголовки) + приводим в нижний регистр.

- Получаем значение для подключения с Листа settings

- Формируем запрос

- Получаем ответ

- Логгиру
Категория