私は、GoogleスプレッドシートからmySQLデータベーステーブルにデータを書き込むために以下のコードを使用しています。このスクリプトは約4000レコードあり、非常に遅いです。すべてのGoogleスプレッドシートのデータをメモリに読み込んでから、MySQLデータベースに書き込むことはできますか?Google Appsスクリプトの実行を改善する
私の知る限りでは、あなたがvar data = sheet.getDataRange().getValues();
を使用しているとき、それはあなたの「シート1」は、メモリへの1つのチャンク内のシートなので、あなたがデータをやっている方法からのすべてのデータを読み込み、
function myfunction() {
var colA;
var colB;
var colC;
var colD;
var colE;
var mysqldb = Jdbc.getConnection("jdbc:mysql;dbipaddress","user","pa$$word");
var sql = mysqldb.createStatement();
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('sheet1');
var data = sheet.getDataRange().getValues();
mysqldb.setAutoCommit(false)
var query = "{call [dbo].[sp_copygsheets](?,?,?,?,?)}";
sql = mysqldb.prepareCall(query);
for (var i = 1; i < data.length; i++) {
colA = data[i][0];
colB = data[i][1];
colC = data[i][2];
colD = data[i][3];
colE = data[i][4];
sql.setString(1, colA);
sql.setString(2, colB);
sql.setString(3, colC);
sql.setString(4, colD);
sql.setString(5, colE);
sql.addBatch();
}
sql.executeBatch();
mysqldb.commit();
sql.close();
mysqldb.close();
}
スクリプトエディタで_View - 実行transcript_を選択すると、最後のスクリプト実行の詳細なタイミングを確認できます。 – Kos