[英]Google Docs Custom Refresh Script
我正在尝试编写一个脚本,该脚本可以让我在Google完成计算后立即执行命令(即,我正在尝试向Google文档添加一个脚本,以模仿某些VBA“计算”功能)。
通过将范围转换为字符串并在该字符串中查找子字符串“ 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.");
};
而不是使用while循环来“睡眠”,您应该在文档中添加一个事件处理程序,以捕获更新/刷新事件,然后运行所需的任何数学/处理。
这里是开始阅读有关事件的好地方: https : //developers.google.com/apps-script/understanding_events
但是,如果您在api文档中搜索eventhandler,则可以快速获取示例代码...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.