0

我想为谷歌完成进行计算(即我想要添加到脚本到谷歌文档模仿一些VBA“计算”写一个脚本,让我尽快执行命令功能)。谷歌文档的自定义脚本刷新

剧本设想通过将一系列成一个字符串,并寻找子工作“正在加载...”(或“#VALUE!”或“#N/A”),在该字符串。在“while”循环应该睡觉,直到不再在字符串中发现不需要的子字符串。

我用下面的表格作为沙盒,并且代码似乎工作在沙盘还好只是在寻找“正在加载...”:

https://docs.google.com/spreadsheet/ccc?key=0AkK50_KKCI_pdHJvQXdnTmpiOWM4Rk5PV2k5OUNudVE#gid=0

在其他情况下,但是,我的单元格的值可能会返回为“#VALUE!”或“#N/A”比事实等,谷歌仍在加载/思维/计算的原因。这是怎么回事?

function onEdit() { 

Refresh(); 

}; 

function Refresh() { 

    var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1"); 
    var sheet2 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet2"); 

    // set the range wherever you want to make sure loading is done  

    var range = sheet.getRange('A:A') 
    var values = range.getValues(); 

    var string = values.toString(); 

    var loading = "Loading"; 

       do 
        { 
        var randomWait = Math.floor(Math.random()*100+50); 
        Utilities.sleep(randomWait); 
       } 
       while (string.search(loading) ==! null); 

     range.copyTo(sheet2.getRange('A1'), {contentsOnly:true}); 

customMsgBox(); 

}; 

function customMsgBox() { 
    Browser.msgBox("Data refreshed."); 
}; 
+0

要确认 - 你希望运行一些所有计算完成后的代码?这是你正在寻找的事件吗? –

+0

@ArunNagarajan:是的。这正是我要找的。 – zenhuman

+0

@Henrique:感谢您抽出宝贵的时间。我会记住你的建议。 – zenhuman

回答

0

,而不是使用while循环“睡眠”不应该将事件处理程序添加到您的文档捕获更新/刷新事件,然后运行任何你需要的数学/处理。

下面就开始阅读有关事件的好地方:https://developers.google.com/apps-script/understanding_events

,但如果你搜索API文档的事件处理程序,你可以得到一些示例代码,快...