googlesheet用importxml、importhtml、importdata、importfeed等函数抓取数据的时候有数量限制。

一张表格里超过50个上述函数,就会提示抓取数据量太大超出了限制,需要等待,显示为loading。这就是所谓的数量限制。

googlesheet抓取的数据是放在缓存里,比如你抓取了股价实时数据,但是这个数据并不会自动刷新,它可能15min刷新一次,在这之前,如果你想要刷新数据,即使把格子里的抓取 公式删掉,再重新填进去,google也只是把缓存中旧的数据直接给你。你可能需要一种强制刷新的手段。

一、怎么突破数量限制

(我自己的投资记录表格原先有大约70个抓取,经过下面这些处理,现在只有6个import函数,再也不会没完没了的loading了。)

1在不同的文件里抓取,然后用importrange函数调用到一个文件里

比如有一个投资组合,你抓取了一些价格和汇率的数据,也抓取了一些pe、pb、eps、财报日期、分红日期等的基本面数据,那么可以考虑把实时的数据的抓取放在本文件里,把基本面数据的抓取放在另一个文件里,然后调用它。

importrange函数的用法见googlesheet函数帮助。

2用尽可能少的import函数来抓取尽可能多的数据

A.

比如从sina抓取两个股票的数据,你下面这样写要用两个importdata

=importdata(“https://hq.sinajs.cn/list=sh600519”)

=importdata(“https://hq.sinajs.cn/list=usr_fb”)

可以直接写成

=importdata(“https://hq.sinajs.cn/list=sh600519,usr_fb)

如果有很多个,你可以把他们的代码写在b1-b10(注意前面加逗号)

=importdata(“https://hq.sinajs.cn/list=”&b1&b2&b3&b4&b5&b6&b7&b8&b9&b10)


B.

比如用importxml函数抓数据,正常写法是

=importxml(“url”,”xpath”)

如果同一个地址有多个数据需要抓取,可以写成

=importxml(“url”,”xpath1|xpath2|xpath3|xpath4|xpath5″)


C.

比如用importhtml函数抓网页表格数据,你需要表格上的两个数据,可能是这么写的

=index(importhtml(“url”,”table”,1),1,2)

=index(importhtml(“url”,”table”,1),2,4)

可以考虑直接取下整个表格

=importhtml(“url”,”table”,1)

毕竟import函数有限时,而整个取下来再怎么处理都没限制。


D.

不要在一个公式里写多个import函数,比如

=if(importxml(“url”,”xpath”)<>””,importxml(“url”,”xpath”)*100,0)

有什么要计算,要处理格式的,另外去处理,向下面这样

B1格子写 =importxml(“url”,”xpath”)

B2格子写=if(b1<>””,b1*100,0)


 

二、怎么强制刷新

比如原来你有几个抓取,他们不会自动刷新

=importxml(“url”,”xpath”)

=importdata(“url”)

=importhtml(“url”,”table”,1)

你在A1格子里写上#test

把所有的抓取公式都改成下面这样

=importxml(“url”&A1,”xpath”)

=importdata(“url”&A1)

=importhtml(“url”&A1,”table”,1)

之后,要强制刷新的时候,你只要把A1格子的内容改一下,比如#test1,#test2。

抓取的地址变了,google就不会给你缓存数据了,会重新去抓取,这样就强制刷新了。

 

三、扩展阅读

《googlesheet抓取bloomberg数据补充》

 

《googlesheet怎么取高质量的pe-ttm数据》

 

说点什么