I’m having trouble with my Google Apps Script timing out when I try to import data from a MySQL database into a Google Sheet. The database connection and query execution work fine and finish in under 10 seconds, but when it comes to writing over 12000 rows to the spreadsheet, the script runs extremely slow and hits the execution time limit before completing.
var dbHost = 'server.address.com';
var dbPort = 3306;
var database = 'my_database';
var user = 'db_user';
var pass = 'db_password';
var connectionString = 'jdbc:mysql://' + dbHost + ':' + dbPort + '/' + database;
function importDatabaseData() {
var connection = Jdbc.getConnection(connectionString, user, pass);
var statement = connection.createStatement();
var queryResult = statement.executeQuery('SELECT * FROM my_table');
var columnInfo = queryResult.getMetaData();
var totalColumns = columnInfo.getColumnCount();
var activeSheet = SpreadsheetApp.getActiveSpreadsheet();
var targetSheet = activeSheet.getSheetByName('data_import');
targetSheet.clear();
var rowData = [];
for (var i = 0; i < totalColumns; i++) {
rowData.push(columnInfo.getColumnName(i + 1));
}
targetSheet.appendRow(rowData);
while (queryResult.next()) {
rowData = [];
for (var i = 0; i < totalColumns; i++) {
rowData.push(queryResult.getString(i + 1));
}
targetSheet.appendRow(rowData);
}
queryResult.close();
statement.close();
targetSheet.autoResizeColumns(1, totalColumns + 1);
}
What’s the best way to optimize this for better performance?