【问题标题】:Google Sheet Coinmarketcap requesting 1 single importxml instead of 1 request for each coinGoogle Sheet Coinmarketcap 请求 1 个单独的 importxml 而不是每个硬币的 1 个请求
【发布时间】:2021-03-24 15:15:45
【问题描述】:

我正在使用我一直在尝试编写的脚本在 google 表格中开发一个表格,该表格从 coinmarketcap 中提取数据。

我是一个f。菜鸟@编码。

我在这个脚本中使用了 importxml 函数(我需要刷新每个硬币的最新价格,比如 100 个硬币):

function CryptoRefresher() {

        var spreadsheet = SpreadsheetApp.getActive();
        var queryString = Math.random();
        var link1 = "C";
        var xpath = "D";
        var destination = "E";
        var Direction=SpreadsheetApp.Direction;
        var NumeroRighe =spreadsheet.getRange("B"+(spreadsheet.getLastRow()+1)).getNextDataCell(Direction.UP).getRow();

        for (var i = 2; i <= NumeroRighe; i++) {
    var cellFunction1 = '=IMPORTXML("' + SpreadsheetApp.getActiveSheet().getRange(link1+i).getValue() + '?' + queryString + '", "'+ SpreadsheetApp.getActiveSheet().getRange(xpath+i).getValue() + '")';
  SpreadsheetApp.getActiveSheet().getRange(destination+i).setValue(cellFunction1);
    }
          };


        Example Data:

        Cell B2 = "bitcoin"
        cell C2 = "https://coinmarketcap.com/currencies/Bitcoin"
        Cell D2 = "//div[@class='priceValue___11gHJ']"
        Cell E2 = is the destination and will receive the bitcoin price

问题是它真的很慢,因为它每次调用 1 个硬币。

问题:有没有办法在 1 个单独的 importxml 调用中发送所有硬币请求?

就像我想收集 C 列中的所有硬币名称(C 列的 1 个单元格有 1 个不同且唯一的硬币名称)以收集我正在观看的所有硬币名称并要求 1 次调用以加快速度过程?

(有没有办法创建一个数组、一个硬币名称列表并对 coinmarketcap 进行 1 次调用?)

我真的想不通,我希望我问的很清楚!

谢谢! 亚历山德罗

【问题讨论】:

    标签: arrays google-apps-script google-sheets


    【解决方案1】:

    鉴于网页的结构,目前无法通过单个 IMPORTXML 调用从 CoinMarketCap 网站提取多种任意货币。

    但是,他们有一个方便的 API 可以完全做到这一点,请参阅下面的参考资料:

    CoinMarketCap API / Cryptocurrency

    这应该让您开始从 API 中提取信息:

    Pulling Currency Data to Google Sheets

    【讨论】:

    • 谢谢你,我会按照你的建议来解决!
    • 如果我的回答帮助您解决了您的问题,请点击回答旁边的勾号接受。这样,更多有相同问题的人将能够看到问题和解决方案。如果有问题,请告诉我。 stackoverflow.com/help/someone-answers
    【解决方案2】:

    我建议使用专用服务来检索数据,例如,此请求将为您提供所需的数据,而无需任何解析或注册 3rd 方服务

    =IMPORTDATA("https://cryptoprices.cc/BTC")

    试图解析一个正在积极开发的复杂网页在某些时候很容易失败。

    作为替代方案,通过注册 CoinMarketCap api 直接访问源头以获取更多最新数据。 (上面已经提到)你可以在https://pro.coinmarketcap.com/signup/注册免费层API(333 req/day)

    【讨论】:

      【解决方案3】:

      【讨论】:

      • 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center
      猜你喜欢
      • 2018-08-07
      • 1970-01-01
      • 2021-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多