我正在尝试编写一个脚本,该脚本允许我在 Google 完成计算后立即执行命令(即,我正在尝试将脚本添加到模仿某些 VBA“计算”功能的 Google 文档中)。
该脚本通过将范围转换为字符串并在该字符串中查找子字符串“Loading...”(或“#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.");
};