【发布时间】:2021-05-14 14:09:27
【问题描述】:
我在运行 Google Sheet 脚本时总是收到以下错误:
服务超时:电子表格(第 10 行,文件“代码”)
脚本应将整个工作表从一个工作表复制并粘贴到另一个工作表(仅限值)。 问题是源表非常大,这就是我猜我得到错误的原因。源表以编程方式填充,但通常约为 8-10k 行
当我在较小的数据集上使用相同的脚本时,它可以完美运行。
很遗憾,我不是开发人员,只是营销人员,所以谁能帮我优化脚本以使其在 5 分钟限制内运行得更快?
这是脚本
function cloneGoogleSheet(ssA, ssB) {
var sss = SpreadsheetApp.openById('sheet_id');
var ss = sss.getSheetByName('Sheet1');
var SRange = ss.getDataRange();
var A1Range = SRange.getA1Notation();
var SData = SRange.getValues();
var tss = SpreadsheetApp.openById('sheet_id');
var ts = tss.getSheetByName('Script');
ts.clear({contentsOnly: true});
ts.getRange(A1Range).setValues(SData);
};
谢谢!
杰克
【问题讨论】:
-
数据范围有多大??这个函数是另一个函数的一部分吗?您知道可以复制工作表本身而不是值吗?
.copyTo(spreadsheet) -
嗨,詹姆斯,感谢您的评论数据范围约为 10k 行和 10 列。说总共大约 100k 个单元 该函数是一个独立的脚本,没有任何其他函数。问题是我需要保留与其他工作表中的公式相同的工作表。并且该功能必须每天以编程方式运行。但我会尝试你的建议,让你知道!谢谢!
-
我刚刚使用 11k 行和 12 列(随机 20 个字母的文本字符串)进行了快速测试,您的方法耗时 16 秒,而完成工作表耗时 3 秒。你的数据是什么样的?可以提供样张吗?
-
哇哦,它基本上是一个产品提要,几乎每秒都会以编程方式更新。这是工作表的副本,其中我删除了实际数据,但您可以看到列。它通常有大约 10k 行数据docs.google.com/spreadsheets/d/…
-
但老实说,有时它会起作用。这是一个有 50% 的时间有效的东西。但是您知道,这还不够:) 另外,对于其他工作表,我使用相同的脚本也遇到了同样的错误。我还有一个可能有 20 列但最多只有 3k 行的。它看起来也像一个产品提要。这里的问题是它充满了公式。但我看不出公式如何减慢脚本速度,因为它应该只粘贴值
标签: google-apps-script google-sheets