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

Google Sheets自定义函数开发:从Bricklink按零件/颜色ID抓均价

修正Google Sheets自定义函数BLprice以抓取Bricklink平均价格

原代码问题分析

  • URL拼接错误:JavaScript中字符串拼接需用+而非&,且原URL里的多余转义字符%22会导致请求地址无效,直接引发"Bad request"错误。
  • 正则匹配不准确:原正则无法精准定位"全新"状态的6个月平均价格,且未处理匹配失败的情况,容易触发报错。
  • 反爬拦截:Bricklink会拦截无浏览器标识的请求,直接用UrlFetchApp.fetch()会被拒绝访问。

修正后的代码

function BLprice(PartID, ColorID) {
  // 正确拼接目标URL
  const url = `https://www.bricklink.com/catalogPG.asp?P=${PartID}&ColorID=${ColorID}`;
  
  // 设置请求头模拟浏览器访问,避免反爬拦截
  const options = {
    headers: {
      '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'
    }
  };
  
  try {
    const html = UrlFetchApp.fetch(url, options).getContentText();
    
    // 精准匹配"全新"状态下的6个月平均价格(适配Bricklink页面结构)
    const priceMatch = html.match(/New<\/td>.*?6\sMonths<\/td>.*?<td[^>]*>(\$[\d\.]+)<\/td>/);
    
    // 若匹配成功返回价格,否则返回提示信息
    return priceMatch ? priceMatch[1].trim() : "未找到对应价格";
  } catch (error) {
    // 捕获请求或解析错误,返回友好提示
    return `请求错误: ${error.message}`;
  }
}

关键修改说明

  • URL拼接:使用模板字符串(反引号`)简化拼接,确保PartID和ColorID正确传入URL参数。
  • 请求头设置:添加User-Agent模拟浏览器请求,绕过Bricklink的基础反爬机制。
  • 正则优化:调整正则表达式,精准定位"New"(全新)列下的6个月平均价格单元格,避免匹配无关内容。
  • 错误处理:用try-catch包裹请求和解析逻辑,避免函数因请求失败或匹配不到内容而直接报错,返回友好提示。

内容的提问来源于stack exchange,提问作者Brett Gonser

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 05:17:19