我已经使用Google Apps脚本大约2个月了,可以使用数据库中的信息自动更新电子表格。这个脚本一直运行这段时间没有任何问题,直到本周。无处不在的三个脚本开始失败。在深入研究之后,我设法修复了三个电子表格中的两个,但其中一个尚未解决。我通过手动清除工作表修复了其中一个电子表格,尽管脚本本身已经这样做了。另一个我必须为。创建一个新表。
运行脚本时,日志指定它按原样插入数据,但显然不是。它还显示不正确的运行时间(在15-20秒之间,但现实是2-3分钟)。确切的错误是
执行失败:我们很抱歉,发生了服务器错误。请稍等一下再试一次。
脚本本身每周触发一次。它复制前几周的工作表以维护某些格式并重命名,运行查询并将结果集插入电子表格。然后它插入一个公式和它。该脚本仍然有效。在新电子表格上使用脚本时,它运行没有问题。它只是拒绝在现有的电子表格上运行,因此我认为这就是问题所在。
我尝试过手动清除旧纸张(因此在复制之前),创建一个新纸张,删除旧纸张,但一切都无济于事。到目前为止,我遇到的唯一解决方案似乎是创建一个新的电子表格,但这不是一个真正的选择。其中一些床单每天由40多人使用。在发生这种情况时必须更换和转发电子表格,这使得它成为一种不太可靠的解决方案。
所以我的问题是为什么会发生这种情况,是否有任何解决方案可以使用现有的电子表格?即使有某处背景数据导致错误也不应该在清除工作表时删除。
以防万一我发布写入电子表格的代码snippit,但我确信这不是原因,因为它在新的电子表格上正常运行并且没有运行问题近2个月:
function buildWeek() {
var doc = SpreadsheetApp.getActiveSpreadsheet();
latestWeek();
var sheets = doc.getSheets();
var latestSheet = sheets[0];
Logger.log(latestSheet.getName());
var conn = Jdbc.getConnection("connection details");
var stmt = conn.createStatement();
var rs = stmt.executeQuery("query");
//Writing range start
var cell = latestSheet.getRange('A2');
var row = 0;
while (rs.next()) { // Inserts data from rows
var colcount = rs.getMetaData().getColumnCount();
for (var col = 0; col < colcount; col++) {
Logger.log(rs.getString(col + 1));
cell.offset(row, col).setValue(rs.getString(col + 1));
}
row++;
}