Архив: Скрипт импорт из 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
- Формируем запрос
- Получаем ответ
- Логгиру
- Категория