我有一个使用ImportHTML导入数据的工作表。数据变化非常频繁,有什么方法可以让Google表自动刷新数据吗?
我尝试将& year(now()) & month(now()) & day(now()) & hour(now()) & minute(now()),添加到公式中,但得到了以下错误:
此函数不允许使用NOW()、RAND()或RANDBETWEEN()引用单元格
发布于 2015-12-21 04:05:20
“任何方法”?是的,但正如莫尔斯达德之前提到的,“自从GOOGLECLOCK函数退役后,没有任何公式可以触发自动重新计算。”
使用谷歌应用程序脚本之类的..。
function getData() {
var queryString = Utilities.formatDate(new Date(), "GMT", "yyyyMMddHHmmss");
var cellFunction = '=IMPORTHTML("<your-url>?' + queryString + '","<your-query>",<your-index>)';
SpreadsheetApp.getActiveSpreadsheet().getSheetByName("<your-sheet>").getRange('<your-cell>').setValue(cellFunction);
}...should把你带到那里。在保存、命名和授权脚本之后,设置一个触发器,以便它尽可能频繁地运行/刷新数据。
发布于 2020-08-14 04:14:27
很晚才回答这个问题。我最近不得不做一件类似的事情。我想我应该在这里写些东西,让别人找到useful..hopefully。
我的用例:
我希望我的google每隔几分钟就在一个特定的url上调用IMPORTDATA,因为存储在该url上的数据正在被一个计时器触发器和一个Http触发器Azure函数更改。
基本上,我希望我的谷歌页面每5分钟刷新一次,因为我知道url上的数据在不断变化。
我尝试了什么:
一开始,我的剧本和“格雷格”提到的差不多。(为此干杯)我为这个脚本设置了一个5分钟的计时器触发器。所有的人看起来都很强壮。
问题:
我意识到将函数设置为单元格上的值只会导致函数在工作表为空时才在开始时运行。第二次扳机命中时,床单没有被刷新。所以我试着
cell.setValue("");
cell.setValue('=IMPORTDATA("my-url")');没有运气。新的数据没有刷新工作表。似乎工作表看到单元格中设置的值与现有值相同,因此它没有麻烦地重新运行函数。
为了证实我的假设,
我手动尝试:
工作表没有刷新。
当我手动尝试时,但是:
这个成功了。因此,似乎cell.SetValue()甚至cell.setFormula()都没有重新运行我设置的函数,因为单元格中存在相同的函数。
我的解决方案最适合我的用例:
由于我所指向的针对url的数据已经是CSV格式,所以我执行了如下操作:
var firstSheet = SpreadsheetApp.getActiveSpreadsheet().getSheets()[0];
var text = UrlFetchApp.fetch(url).getContentText(); //gets the data.
var csv = Utilities.parseCsv(text); //parses the data.
var range = firstSheet.getRange(1, 1, csv.length, 17) //getting the range.
range.setValues(csv); //setting the data.我基本上是从url中抓取数据,并以计时器方式将其放入工作表中,而不是调用IMPORTDATA函数,因为这种方法对我不太适用。
如果您想获取某种表格或图表内容并将值保存到工作表中,您可以做类似的事情。
https://stackoverflow.com/questions/33643517
复制相似问题