使用Google Sheets IMPORTDATA导入Steam价格历史数据遇错求助
解决Steam市场价格历史数据导入Google Sheets的问题
问题根源
- 公式链接错误:你要导入的是Exalted Fractal Horns of Inner Abysm的数据,但当前
IMPORTDATA使用的是普通版本的物品名称,导致请求资源不匹配。 - Steam反爬拦截:
IMPORTDATA无法模拟浏览器请求头,Steam会拒绝这类无标识的请求,直接返回错误。 - 数据格式不兼容:Steam价格历史返回的是JSON结构,
IMPORTDATA仅能处理CSV/TSV类纯文本表格,无法解析JSON。
可行解决方案
使用Google Apps Script自定义函数
IMPORTDATA无法满足需求,换用脚本可绕过反爬并解析JSON数据:
- 打开目标Google Sheets,点击顶部菜单「扩展程序」→「Apps Script」
- 清空默认代码,粘贴以下脚本:
function getSteamPriceHistory(itemName) { // 构造正确请求链接,自动编码特殊字符 const url = `https://steamcommunity.com/market/pricehistory/?currency=1&appid=570&market_hash_name=${encodeURIComponent(itemName)}`; // 模拟浏览器请求头,避免被Steam拦截 const requestOptions = { headers: { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36' } }; try { const response = UrlFetchApp.fetch(url, requestOptions); const rawData = JSON.parse(response.getContentText()); // 将JSON数据转换为表格格式 const tableData = [['日期', '平均价格', '成交量']]; rawData.prices.forEach(entry => { tableData.push([new Date(entry[0]), entry[1], entry[2]]); }); return tableData; } catch (error) { return ['请求失败:', error.toString()]; } }
- 点击脚本编辑器的「保存」按钮,回到表格,在任意空白单元格输入:
=getSteamPriceHistory("Exalted Fractal Horns of Inner Abysm")
- 首次运行会弹出权限请求,按提示完成授权即可获取完整数据。
额外提示
- 若遇到请求被限制,可在脚本中添加
Utilities.sleep(1500)(延迟1.5秒)降低请求频率。 - 若Steam调整数据返回格式,需对应修改脚本中
rawData.prices的解析逻辑。
内容的提问来源于stack exchange,提问作者Jean Lock
相关产品推荐
相关产品推荐

