You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:Google Sheets用IMPORTHTML获取TradingView全量股票数据

解决Google Sheets一次性导入TradingView全部美股异动数据的方案

IMPORTHTML只能抓取页面初始渲染的静态内容,而TradingView的美股异动数据是通过点击「Load More」触发AJAX动态加载的,所以默认只能拿到100行。要导入全部4902行,得用Google Apps Script模拟动态请求来获取所有数据,具体步骤如下:

  1. 打开目标Google Sheets,点击顶部菜单栏的「扩展程序」→「Apps Script」进入脚本编辑器。
  2. 删除编辑器里的默认代码,粘贴以下脚本:
function importTradingViewData() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  sheet.clear(); // 清空当前工作表内容(可选,根据需要调整)
  
  const baseUrl = "https://scanner.tradingview.com/america/scan";
  const headers = {
    "Content-Type": "application/json",
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36"
  };
  
  let totalRows = 0;
  const batchSize = 100;
  let offset = 0;
  let allData = [];
  
  // 先获取表头
  const firstPayload = JSON.stringify({
    "filter": [],
    "options": {"lang": "en"},
    "markets": ["america"],
    "symbols": {"query": {"types": ["stock"]}, "tickers": []},
    "columns": ["name", "close", "change", "change_abs", "Volume", "market_cap_basic", "price_earnings_ttm", "dividend_yield", "sector", "industry"],
    "sort": {"sortBy": "name", "sortOrder": "asc"},
    "range": [offset, offset + batchSize]
  });
  
  const firstResponse = UrlFetchApp.fetch(baseUrl, {
    method: "post",
    headers: headers,
    payload: firstPayload,
    muteHttpExceptions: true
  });
  
  const firstData = JSON.parse(firstResponse.getContentText());
  totalRows = firstData.totalCount;
  allData.push(firstData.data.headers.map(header => header.name)); // 添加表头
  
  // 循环获取所有数据
  while (offset < totalRows) {
    const payload = JSON.stringify({
      "filter": [],
      "options": {"lang": "en"},
      "markets": ["america"],
      "symbols": {"query": {"types": ["stock"]}, "tickers": []},
      "columns": ["name", "close", "change", "change_abs", "Volume", "market_cap_basic", "price_earnings_ttm", "dividend_yield", "sector", "industry"],
      "sort": {"sortBy": "name", "sortOrder": "asc"},
      "range": [offset, offset + batchSize]
    });
    
    const response = UrlFetchApp.fetch(baseUrl, {
      method: "post",
      headers: headers,
      payload: payload,
      muteHttpExceptions: true
    });
    
    const data = JSON.parse(response.getContentText());
    if (data.data.rows.length === 0) break;
    
    allData = allData.concat(data.data.rows);
    offset += batchSize;
    SpreadsheetApp.flush(); // 强制刷新,避免超时
  }
  
  // 将数据写入工作表
  if (allData.length > 0) {
    sheet.getRange(1, 1, allData.length, allData[0].length).setValues(allData);
  }
}
  1. 点击脚本编辑器顶部的「保存」按钮,给脚本命名(比如「TradingViewDataImporter」)。
  2. 点击「运行」按钮,首次运行会弹出授权请求,按照提示完成授权(需要允许脚本访问外部API和修改你的表格)。
  3. 运行完成后,回到Google Sheets,就能看到全部美股异动数据被导入到当前工作表中。

注意事项

  • 脚本中的columns参数定义了要获取的字段,如果需要其他字段,可以参考TradingView页面上的列名,调整对应的参数值。
  • 如果遇到请求失败,可能需要更新User-Agent字段为当前浏览器的UA值(可以通过浏览器开发者工具查看)。
  • 由于数据量较大,运行时间可能稍长,耐心等待即可。

内容的提问来源于stack exchange,提问作者rookie steve

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 05:46:26