我的日期来源是:https://walletinvestor.com/forecast/achain-prediction
在网站上,他们有三个主要数字,我试图导入我的Google电子表格(当前价格,1年预测,5年预测)。
在单元格C3中我有:
https://walletinvestor.com/forecast/achain-prediction
我的D列将用于导入“当前价格”编号,我的E列将用于导入“1年预测”编号,我的F列将用于导入“5 - 年预测“数字。
这是我在D3中用来导入三个数字的代码:
=arrayformula(regexreplace(TRANSPOSE(IMPORTXML(C3,"//div[@class='col-md-4 col-xs-12 np']//span[@class='bignum']")),"USD",""))
大约1%的时间这将起作用,它将导入我需要的数字,但大多数时候我收到“无法获取URL”的错误。我认为这是因为Google表格过于频繁地提取数据。我想知道的是,是否有一个Google表格脚本我可以在打开电子表格时仅提取这些数据?我写的是文盲,任何帮助都会受到赞赏。
答案 0 :(得分:0)
我认为有两种模式可以达到你想要的效果。
如果要将值检索为自定义函数,该脚本如何?例如,当您使用此功能时,请将=fetch(C3)
添加到D3
。
function fetch(url) {
var data = UrlFetchApp.fetch(url).getContentText();
var values = data.match(/col-md-4 col-xs-12 np\"\>([\s\S]+?)col-md-12/g)[0].match(/\s([0-9.]+)(?=[ |&])/g);
return [values.map(function(e){return e.trim()})];
}
如果您想在每次打开电子表格时检索值,那么这个脚本怎么样?使用此功能时,请为onOpen()
安装触发器。
function onOpen() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var urls = ss.getRange("C3:C21").getValues();
var res = [];
for (var i in urls) {
var data = UrlFetchApp.fetch(urls[i][0]).getContentText();
try {
var values = data.match(/col-md-4 col-xs-12 np\"\>([\s\S]+?)col-md-12/g)[0].match(/\s([0-9.]+)(?=[ |&])/g);
res.push(values.map(function(e){return e.trim()}));
} catch(e) {
res.push(["", "", ""]);
}
}
ss.getRange("D3:F21").setValues(res);
}
https://walletinvestor.com/forecast/funfair-prediction
,在检索到的数据中找不到col-md-4 col-xs-12 np
。因此无法检索这些值。
如果我误解了你的问题,我很抱歉。