2017-01-14 175 views
0

我只是想检查文档中的每个字符,但是这超过了6分钟的限制时间,对于40000个字符的文档。我猜我应该存储这些数据,然后从那里访问它,但是这种做法是如何被调用的?基本但极其缓慢

function myFunction() { 
    var body = DocumentApp.getActiveDocument().getBody(); 
    var text = body.getText(); 
    var editText = body.editAsText(); 


    for (var i = 0 ; i < text.length; i++){ 
    Logger.log(text[i]); 
    Logger.log(editText.getAttributes(i)); 
    } 
} 
+1

你想对角色做什么?像这样,你正在对Logger进行80k的调用,这显然会很慢。它真的会被记录为单个字符吗? –

+0

为了更正特定的错误和/或属性,我需要我的脚本来考虑每一个字符,以便定义模式。日志记录比做任何其他操作更重要吗? – lucanapo

+0

是的,但是你想以什么方式检查它们,对记录器执行80k次调用会很慢,因为它是一个IO操作(为此目的包括API调用等),如果你在内存中做的事情你应该没问题。 –

回答

0

尝试使用batch operations这是Best Practices的一部分在谷歌Apps脚本编程时。指南中包含优化的代码。

通过最大限度地减少读取和写入次数,您可以编写脚本以最大限度地利用内置缓存。交替读取和写入命令很慢。要加速脚本,请使用一个命令将所有数据读入数组,然后对数组中的数据执行任何操作,然后使用一个命令写入数据。