使用=IMPORTXML拉取Trackmania玩家数据时遇"Imported content is empty"错误
问题分析与解决方案
问题根源
你用IMPORTXML提取数据失败,核心原因是trackmania.io是JavaScript驱动的单页应用(SPA):页面初始加载的静态HTML中并没有奖杯点数(Trophy points)数据,这些内容是页面加载完成后通过异步请求动态渲染出来的。而IMPORTXML只能抓取页面的初始静态源码,无法获取JavaScript动态生成的内容,因此返回#N/A提示“Imported content is empty”。
解决方法:使用Google Apps Script调用官方API
trackmania.io提供了公开的玩家数据API,我们可以用Google Apps Script编写自定义函数直接获取数据,步骤如下:
- 打开你的Google Sheets,点击顶部菜单栏的「扩展程序」→「Apps Script」
- 删除编辑器中的默认代码,粘贴以下脚本:
function getTrophyPoints(playerId) { // 调用trackmania官方玩家数据API const apiUrl = `https://trackmania.io/api/player/${playerId}`; const response = UrlFetchApp.fetch(apiUrl); const playerData = JSON.parse(response.getContentText()); // 返回奖杯点数 return playerData.trophyPoints; }
- 点击编辑器顶部的保存按钮,给脚本命名(比如
TrackmaniaPlayerData) - 回到Google Sheets,在任意单元格中输入以下公式并回车:
=getTrophyPoints("acf21a42-f517-42cc-a1b2-e8e7693da4ca")
- 首次运行会弹出权限授权提示,按照指引完成授权即可正常获取数据
注意事项
- API有请求频率限制,避免短时间内大量调用
- 如果后续API结构变更,可能需要调整脚本中获取
trophyPoints的字段路径
内容的提问来源于stack exchange,提问作者rivalzfb
相关产品推荐
相关产品推荐

