谷歌文档自定义刷新脚本



我正在尝试编写一个脚本,允许我在Google完成计算后立即执行命令(即我正在尝试将模仿某些VBA"计算"功能的脚本添加到Google文档中)。

该脚本旨在通过将范围转换为字符串并查找子字符串"正在加载..."(或"#VALUE!"或"#N/A")在该字符串中。 "while"循环应该休眠,直到字符串中不再找到不需要的子字符串。

我使用以下电子表格作为沙箱,代码似乎在沙盒中正常工作,只需搜索"正在加载...":

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

但是,在其他上下文中,我的单元格的值可能返回为"#VALUE!"或"#N/A",原因不是Google仍在加载/思考/计算。 有什么办法可以解决这个问题?

    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.");
};

与其使用 while 循环来"睡眠",不如向文档添加一个事件处理程序,该处理程序捕获更新/刷新事件,然后运行您需要的任何数学/处理。

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

但是,如果您在 API 文档中搜索事件处理程序,您可以快速获得一些示例代码......

最新更新