Импорт из MySQL в Google Sheets: пошаговый скрипт

Импорт из MySQL в Google Sheets: пошаговый скрипт Google Таблицы
Пошаговое руководство по настройке автоматического импорта данных из базы MySQL в Google Таблицы с помощью Google Apps Script.

Автоматизация отчетности — ключевой шаг для оптимизации бизнес-процессов. Вместо ручной выгрузки CSV-файлов настройте прямой импорт данных из базы MySQL в Google Таблицы с помощью встроенного сервиса Google Apps Script (JDBC). Это позволит вам мгновенно обновлять отчеты, а при необходимости вы сможете связать ячейки в Excel и Google Таблицах для консолидации данных.

Видеоинструкция

Шаг 1: Разрешите доступ к вашей базе данных

Google Apps Script подключается к MySQL через JDBC. Для успешного соединения необходимо открыть доступ к вашему серверу MySQL для IP-адресов Google.

Дополнительно: IP-адреса Google

Вам нужно добавить в белый список (whitelist) вашего брандмауэра CIDR-диапазоны Google. Актуальный список адресов можно найти в официальной документации Google JDBC, так как они периодически обновляются.

Шаг 2: Откройте редактор скриптов

В вашей Google Таблице перейдите в меню: выберите Расширения > Apps Script.

Шаг 3: Вставьте код импорта

Удалите стандартный код и вставьте следующий скрипт, заменив параметры подключения на свои:

function importMySQL() {
  var host = 'YOUR_DATABASE_IP';
  var port = 3306;
  var dbName = 'YOUR_DB_NAME';
  var user = 'YOUR_USER';
  var password = 'YOUR_PASSWORD';
  var url = 'jdbc:mysql://' + host + ':' + port + '/' + dbName;
  
  try {
    var conn = Jdbc.getConnection(url, user, password);
    var stmt = conn.createStatement();
    var results = stmt.executeQuery('SELECT * FROM users LIMIT 1000');
    var metaData = results.getMetaData();
    var numCols = metaData.getColumnCount();
    
    var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
    sheet.clear();
    
    var headers = [];
    for (var i = 1; i <= numCols; i++) {
      headers.push(metaData.getColumnName(i));
    }
    sheet.appendRow(headers);
    
    while (results.next()) {
      var row = [];
      for (var i = 1; i <= numCols; i++) {
        row.push(results.getString(i));
      }
      sheet.appendRow(row);
    }
    
    results.close();
    stmt.close();
    conn.close();
  } catch (e) {
    Logger.log(e.toString());
  }
}

После вставки кода сохраните проект, нажав комбинацию клавиш Ctrl + S (или Cmd + S на macOS).

Шаг 4: Запуск и авторизация

Нажмите кнопку Запуск в верхней панели редактора. При первом запуске Google попросит вас предоставить скрипту разрешения на доступ к таблицам и внешним сервисам. Подтвердите авторизацию.

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

Частые ошибки / Устранение неполадок

Ошибка: Connection timed out / Failed to establish a database connection
Решение: Проверьте, открыт ли порт 3306 на вашем сервере MySQL и разрешен ли доступ для IP-адресов Google Apps Script.

Ошибка: Exceeded maximum execution time
Решение: Google Apps Script имеет лимит на время выполнения (обычно 6 минут). Если таблица слишком большая, оптимизируйте SQL-запрос с помощью оператора LIMIT или фильтруйте данные по дате.

Часто задаваемые вопросы

Можно ли настроить автоматическое обновление по расписанию?

Да, в редакторе Apps Script нажмите на иконку часов (Триггеры) на левой панели и настройте запуск функции по времени (например, каждый час).

Безопасно ли хранить пароль от базы данных в скрипте?

Для повышения безопасности рекомендуется использовать свойства скрипта (Script Properties) через PropertiesService, чтобы не хранить пароль в открытом виде.

Оцените статью
TechWork
Добавить комментарий