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

Google Apps Script用UrlFetchApp访问sullygnome.com报地址不可用错误求解

问题原因

sullygnome网站屏蔽了Google Apps Script的UrlFetch服务的出口IP段,或是拦截了未携带标准浏览器请求头的爬虫请求;而Google Sheets的IMPORTXML服务使用的是独立的出口节点,因此公式可以正常运行,GAS直接请求会报错。

解决方案


方案1:给UrlFetch请求添加完整浏览器请求头

多数站点会拦截没有标准请求头的爬虫请求,你可以先尝试携带模拟浏览器的头信息发起请求,示例代码如下:

function parseXml() {
  let url = "https://sullygnome.com/channel/xqcow/30";
  // 配置请求参数,模拟Chrome浏览器请求
  let options = {
    headers: {
      "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36",
      "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8",
      "Accept-Language": "zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3",
      "Referer": "https://sullygnome.com/"
    },
    muteHttpExceptions: true
  };
  let response = UrlFetchApp.fetch(url, options);
  Logger.log("响应状态码:" + response.getResponseCode());
  let data = response.getContentText();
  Logger.log(data);
}

运行后如果状态码返回200即请求成功,如果返回403/503类错误则说明GAS的IP段被站点屏蔽。


方案2:直接读取Google Sheets公式的返回结果(最便捷)

你原本的IMPORTXML公式可以正常运行,直接把公式写在指定单元格(比如Sheet1的A1),再用GAS读取单元格值即可,不需要单独发起请求:

function getStatValue() {
  // 替换为你自己的工作表和对应单元格位置
  let sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1");
  let statValue = sheet.getRange("A1").getValue();
  Logger.log(statValue);
}

方案3:使用中转服务发起请求

如果以上两种方案不符合你的需求,可以自行搭建简单的中转接口,用自己的服务器/云函数发起对sullygnome的请求,再将结果返回给GAS,避开GAS的IP段限制。


内容的提问来源于stack exchange,提问作者Maor U

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 03:45:05