-1

我的日期来源是:https ://walletinvestor.com/forecast/achain-prediction

在网站上,我尝试将三个主要数字导入我的 Google 电子表格(当前价格、1 年预测、5 年预测)。

在单元格 C3 中,我有:

https://walletinvestor.com/forecast/achain-prediction

我的 D 列将用于导入“当前价格”数字,我的 E 列将用于导入“1-Year Forecast”数字,我的 F 列将用于导入“5-Year Forecast” “ 数字。

这是我在 D3 中用于导入三个数字的代码:

=arrayformula(regexreplace(TRANSPOSE(IMPORTXML(C3,"//div[@class='col-md-4 col-xs-12 np']//span[@class='bignum']")),"USD",""))

大约 1% 的时间这会起作用,它会导入我需要的数字,但大多数时候我会收到“无法获取 URL”的错误。我认为这是因为 Google 表格过于频繁地提取数据。我想知道的是,是否有一个谷歌表格脚本可以让我只在打开电子表格时提取这些数据?我是文盲,任何帮助将不胜感激。

4

1 回答 1

0

我认为有两种模式可以实现你想要的。

模式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()})];
}

模式 2:

如果您想在每次打开电子表格时检索值,那么这个脚本怎么样?当您使用它时,请为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在检索到的数据中找不到。因此无法检索这些值。
    • 在这种情况下,我无法理解您想要的值。对不起。

如果我误解了你的问题,我很抱歉。

于 2018-02-28T00:15:53.227 回答