Google应用脚本不会抛出异常

时间:2016-11-30 14:10:18

标签: google-apps-script

我一直玩谷歌应用程序脚本一段时间,我偶然发现了#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)

但我真正希望看到的东西只有在需要时才能激活,所以它会更快......

2 个答案:

答案 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>

注意:我没有回答性能问题,因为我认为在上一个答案中已经解决了这个问题。