我有一个脚本,该脚本依赖于从另一张纸中提取的数据。唯一的问题是要花一些时间(大约10秒钟)才能完成所有更新。为此,我将QUERY
与IMPORTRANGE
结合使用。
无需重写代码,以便GAS处理导入和SQL,是否有任何办法强制更新工作表,等同于删除单元格中的公式然后撤消?我尝试编写一些代码来做到这一点:
var sqlCell = ss.getSheetByName("LOOKUP").getRange("L4");
var sqlCellFormula = sqlCell.getFormula();
sqlCell.setFormula("");
sqlCell.setFormula(sqlCellFormula);
Utilities.sleep(1000);
SpreadsheetApp.flush();
但是由于某种原因,这根本不起作用。 SLEEP
和FLUSH
简直是绝望!
一如既往地收到任何帮助。
答案 0 :(得分:0)
尝试一下:
function sqlcell() {
var ss=SpreadsheetApp.getActive();
var sqlCell = ss.getSheetByName("LOOKUP").getRange("L4");
var sqlCellFormula = sqlCell.getFormula();
sqlCell.setFormula("");
sqlCell.setFormula(sqlCellFormula);
}
我对此进行了一些研究,并决定将此公式放在L4中:=sum(A1:A20)
在A2中:我将= A1 + 1并复制到A20下,然后在函数中每次运行时都向A1中添加一个。
function sqlTest() {
var ss=SpreadsheetApp.getActive();
var sh=ss.getSheetByName('LOOKUP');
var rg=sh.getRange("L4");
sh.getRange('A1').setValue(sh.getRange('A1').getValue()+1);
//var sqlCellFormula = '=sum(A1:A20)';
var sqlCellFormula = rg.getFormula();
var T1=rg.getFormula();
rg.setFormula("");
var T2=rg.getFormula();
rg.setFormula(sqlCellFormula);
var T3=rg.getFormula();
var ui=HtmlService.createHtmlOutput(Utilities.formatString('<br />T1: %s<br />T2: %s<br />T3: %s',T1,T2,T3 ));
SpreadsheetApp.getUi().showModelessDialog(ui, 'getFormula()')
var end="is near";
}
起初,我在T1处收到“ #REF”错误,但随后将A1重置为1,并且由于某些未知原因,它开始按预期方式工作。我不知道为什么但这可以使数据每次都稍有变化,以查看公式是否仍然有效。
很抱歉,我没有更多帮助。