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

Google Sheets Apps Script域名可用性查询函数修复请求——GoDaddy查询结果异常问题

解决Google Sheets中域名可用性查询函数失效的问题

这个问题我熟!你的函数不管域名是否可用都返回Y,核心原因有两个:

  • GoDaddy的页面结构已经更新,你之前用来判断可用的文本Why it's great.要么不再专属可用域名的场景,要么已经从页面中消失了;
  • 现在GoDaddy的搜索结果是JS动态渲染的,UrlFetchApp直接请求拿到的只是初始空页面的HTML,根本没有实际的域名可用性数据。

下面给你两种解决方案,优先推荐第一种(稳定可靠):

方案1:使用GoDaddy官方API(最推荐)

直接调用官方API是最靠谱的方式,不会因为页面更新失效,而且返回的是结构化数据,准确率100%。

步骤:

  1. 去GoDaddy开发者平台申请免费的API密钥(个人使用免费额度完全足够),获取你的API Key和API Secret;
  2. 替换下面代码中的密钥,然后在Google Sheets中使用这个函数:
function checkDomainAvailability(domainName) {
  // 替换成你的GoDaddy API Key和Secret
  const API_KEY = "你的API_KEY";
  const API_SECRET = "你的API_SECRET";
  
  // 编码域名,避免特殊字符问题
  const encodedDomain = encodeURIComponent(domainName);
  const apiUrl = `https://api.godaddy.com/v1/domains/available?domain=${encodedDomain}`;
  
  const requestOptions = {
    method: "GET",
    headers: {
      "Authorization": `sso-key ${API_KEY}:${API_SECRET}`,
      "Content-Type": "application/json"
    },
    muteHttpExceptions: true // 捕获HTTP异常,避免函数崩溃
  };
  
  try {
    const response = UrlFetchApp.fetch(apiUrl, requestOptions);
    const result = JSON.parse(response.getContentText());
    
    // 直接返回可用性状态
    return result.available ? "Y" : "N";
  } catch (error) {
    console.error("查询出错:", error);
    return "Error"; // 出错时返回错误标识
  }
}

方案2:调整网页爬取逻辑(临时方案)

如果你暂时不想用API,可以尝试匹配GoDaddy页面中嵌入的初始状态JSON(这个是JS渲染前的数据源),不过这个方法可能随时因为页面更新失效:

function domainavail(domain) {
  const encodedDomain = encodeURIComponent(domain);
  const targetUrl = `https://www.godaddy.com/domainsearch/find?checkAvail=1&segment=repeat&domainToCheck=${encodedDomain}`;
  
  const requestOptions = {
    muteHttpExceptions: true,
    followRedirects: false,
    // 模拟浏览器请求,避免被识别为爬虫
    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"
    }
  };
  
  const response = UrlFetchApp.fetch(targetUrl, requestOptions);
  const html = response.getContentText();
  
  // 尝试匹配页面中的初始状态JSON
  const initialStateMatch = html.match(/window\.__INITIAL_STATE__\s*=\s*({.*?});/s);
  if (initialStateMatch && initialStateMatch[1]) {
    try {
      const initialState = JSON.parse(initialStateMatch[1]);
      // 查找目标域名的可用性数据(路径可能随页面更新变化)
      const domainResults = initialState?.domainSearch?.results?.domains;
      if (domainResults && domainResults.length > 0) {
        const target = domainResults.find(item => item.domain.toLowerCase() === domain.toLowerCase());
        return target?.available ? "Y" : "N";
      }
    } catch (parseError) {
      console.error("解析初始状态失败:", parseError);
    }
  }
  
  // 兜底逻辑,如果上面的匹配失败,返回默认值
  return "N";
}

注意:

方案2的匹配路径(比如initialState.domainSearch.results.domains)可能随时被GoDaddy修改,所以还是优先用方案1的API方法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 21:32:26