我一直玩谷歌应用程序脚本一段时间,我偶然发现了#34;你的输入包含超过单个单元格中最多50000个字符"错误。但是当我试图阻止我的脚本崩溃时,使用try-catch语句,它没有用。
我查看了Google应用脚本文档网站(https://developers.google.com/apps-script/),但一无所获。
此外,我尝试运行该示例代码:
function myFunction() {
try
{
var a = ""
for (i = 0; i< 50000; i++)
a += '111'
SpreadsheetApp.open(DriveApp.getFileById("FileID")).getActiveSheet().getRange(1,1).setValue(a)
}
catch (e)
{
Logger.log(e.message)
}
}
它崩溃了,在日志中没有记录。
关于如何防止崩溃的任何想法?最好有一些代码段,允许我操纵输入?
我将不胜感激任何帮助。
我的脚本应该处理大量数据,因此运行时间对我来说非常重要。现在我正在使用类似
的解决方案a.substring (0,50000)
但我真正希望看到的东西只有在需要时才能激活,所以它会更快......
答案 0 :(得分:0)
如下:
var CELL_MAX_LEN = 50000; // Or whatever value you choose
function checkAndWriteCellValue(range, value) {
if (value.length > CELL_MAX_LEN) {
value = 'Too long!'; // Or something else, truncate value etc
}
range.setValue(value);
}
您可以这样称呼它:
var range = spreadsheet.getActiveSheet().getRange(...); // Add the specifics of your range
checkAndWriteCellValue(range, value);
答案 1 :(得分:0)
要解决捕获&#34;您的输入包含单个单元格中最多50000个字符的问题&#34;错误使用SpreadsheetApp.flush();
npm i tether --save
<script src="node_modules/jquery/dist/jquery.min.js"></script>
<script src="node_modules/tether/dist/js/tether.min.js"></script>
<script src="node_modules/bootstrap/dist/js/bootstrap.min.js"></script>
注意:我没有回答性能问题,因为我认为在上一个答案中已经解决了这个问题。