我正在尝试使用Google App脚本将数据添加到我的Google Cloud SQL数据库中。我的代码昨晚结束时工作正常,但是今天早晨运行时,它现在给我错误“由于超时或客户端请求而取消了声明”,我在云控制台中遇到的错误是“得到了一个错误阅读信息”通信数据包”。
昨晚它正在处理大约1600行数据。我玩弄它并缩小了范围,以至于当15行多了时,就会发生错误。15行会很好地添加数据,将其更改为16行会引发错误,这告诉我这不是连接本身。我还通过将第15行复制到第16行并删除了所有其他数据来测试了电子表格中的数据,但这没有用。我对我读过的所有内容都表示正在超时感到困惑,主要是因为昨晚它可以正常处理1600行数据。我的代码如下:
function connection(folderId, db, c1, c2, c3, c4, c5, c6, c7) { var files = DriveApp.getFolderById(folderId).getFiles(); var excelfile = files.next(); var fileId = excelfile.getId(); var data = SpreadsheetApp.openById(fileId).getSheetByName('Report 1'); var last = data.getLastRow() var sheetdata=data.getRange("B5:H16").getValues(); var conn = Jdbc.getCloudSqlConnection(dbUrl, user, userPwd);//dburl is not defined conn.setAutoCommit(false); var start = new Date(); var stmt = conn.prepareStatement('INSERT INTO '+ db + ' ' + '('+c1+','+c2+','+c3+','+c4+','+c5+','+c6+','+c7+') values (?, ?, ?, ?, ?, ?, ?)'); for (var i=0; i<sheetdata.length; i++) { stmt.setString(1, Utilities.formatDate(sheetdata[i][0], 'Etc/GMT', 'yyyy-MM-dd')); stmt.setString(2, sheetdata[i][1]); stmt.setString(3, sheetdata[i][2]); stmt.setString(4, sheetdata[i][3]); stmt.setString(5, sheetdata[i][4]); stmt.setString(6, sheetdata[i][5]); stmt.setString(7, sheetdata[i][6]); stmt.addBatch(); } var batch = stmt.executeBatch(); conn.commit(); conn.close(); var end = new Date() Logger.log('Time elapsed: %sms for %s rows.', end - start, batch.length); }
发现问题出在新的App Script Runtime V8上。要解决此问题,请将运行时更改回Rhino。为此,请转到“查看>显示项目清单”,然后在其上显示“ runtimeVersion”:“ V8”,将其更改为“ runtimeVersion”:“ STABLE”。当前在此问题上存在一个未解决的错误:https : //issuetracker.google.com/issues/149413841