IMPORTXML Google Sheets Fetch URL 错误(仅在打开时需要脚本触发器帮助)
IMPORTXML Google Sheets Fetch URL Error (Need script trigger help on open only)
我的日期来源是:https://walletinvestor.com/forecast/achain-prediction
网站上有三个主要数字,我正尝试将其导入我的 Google 电子表格(当前价格、1 年预测、5 年预测)。
在单元格 C3 中我有:
https://walletinvestor.com/forecast/achain-prediction
我的 D 列将用于导入 "Current Price" 数字,我的 E 列将用于导入“1 年预测”数字,我的 F 列将用于导入“5 年预测”数字。
这是我在 D3 中用来导入三个数字的代码:
=arrayformula(regexreplace(TRANSPOSE(IMPORTXML(C3,"//div[@class='col-md-4 col-xs-12 np']//span[@class='bignum']")),"USD",""))
大约 1% 的时间它会工作并且它会导入我需要的数字,但大多数时候我会收到 "Can't fetch URL" 的错误。我认为这是因为 Google Sheets 过于频繁地提取数据。我想知道的是,是否有一个 Google Sheets 脚本可以让我只在打开电子表格时提取这些数据?我是文盲,如有任何帮助,我们将不胜感激。
我认为有 2 种模式可以实现您想要的。
模式 1 :
如果您想以自定义函数的形式检索值,这个脚本怎么样?例如,当您使用它时,请将 =fetch(C3)
设置为 D3
。
示例脚本 1:
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()
.
示例脚本 2:
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
。因此无法检索这些值。- 在这种情况下,我无法理解您想要的值。对不起。
如果我误解了你的问题,我很抱歉。