2017-03-07 50 views
0

我有一个简单的功能,将光标移动到电子表格的另一个地方。有时这段代码需要30秒才能执行,有时需要1秒才能执行,这使得它无用。有没有办法重新编码它,以便执行时间更一致?谷歌应用脚​​本:广泛的执行时间

function go_to(){ 
var ss = SpreadsheetApp.getActiveSpreadsheet() 
var active = SpreadsheetApp.getActiveRange().getValue() 
var sheet = ss.getSheetByName("Records") 
var range = sheet.getRange("B"+(active+2)) 
sheet.setActiveRange(range) 
} 
+0

变量'active'的期望值是多少?你没有解释代码的作用,或者预期的最终结果。你只需要添加一些'Logger.log()'语句来查看代码正在做什么,然后你就可以确定你是否得到了意想不到的结果。你想从单个细胞中获得价值吗?如果是这样,我会使用'SpreadsheetApp.getActiveRange()。getCell(1,1).getValue()' –

回答

1

这对我来说在时间表现上看起来非常一致。它如何在你的设置上工作?

function go_to() 
{ 
    var sht = SpreadsheetApp.getActiveSheet(); 
    var rsht = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Records'); 
    rsht.setActiveRange(rsht.getRange("B" + Number(sht.getActiveRange().getValue() + 2))); 
} 
+0

@ Cooper。我不知道为什么你的代码中有一个'if'语句。它应该做的就是用getValue()从活动单元格中选择一个值“10”,然后将光标移动到“Records!B10” – jason

+0

哦,我误解了您的要求。你想在每张纸上这样做,但随后移动到名为“记录”的纸张上的新位置好吧,我做错了。我会看看它是如何改变游戏的。稍后回来... – Cooper

+0

我在这里也得到了一些不一致的结果。看起来页面变化是不太可预测的。我有一个构建jstree目录树的例程,有时它会在30秒内运行,有时会更长。我不知道幕后的细节。因此,也许我们需要搭起一个旋转轮,让用户知道正在考虑移动。 – Cooper