Google Sheets仅输出URL重定向地址的Apps Script实现问询
Google Sheets 重定向抓取自定义函数调整方案
核心修改逻辑
原代码会将原始URL+所有重定向跳转地址存入数组并整体返回,导致单元格溢出输出全链路内容,只需要调整返回值的取值为数组最后一个元素,即可仅输出最终落地的URL,完全适配下拉批量填充的使用场景。
调整后可直接替换的脚本代码
function getRedirects(url) { // 空值入参直接返回,减少无效请求 if (!url) return ''; const params = { followRedirects: false, muteHttpExceptions: true, timeout: 10000 }; const urlChain = [url]; while (true) { const currentUrl = urlChain[urlChain.length - 1]; const response = UrlFetchApp.fetch(currentUrl, params); const statusCode = response.getResponseCode(); // 遇到非3xx状态码时,说明已到达最终落地页 if (statusCode < 300 || statusCode > 399) { // 仅返回链路末尾的最终地址 return urlChain[urlChain.length - 1]; } const nextUrl = response.getHeaders()['Location']; // 无跳转地址时终止循环 if (!nextUrl) break; urlChain.push(nextUrl); // 限制最多追踪10跳,避免循环跳转导致脚本卡死 if (urlChain.length > 10) break; } return urlChain[urlChain.length - 1]; }
实际使用说明
- 在目标列对应单元格输入
=getRedirects(待处理URL所在单元格),例如URL存在A列时,B2单元格输入=getRedirects(A2),下拉即可批量处理 - 无跳转行为的原始URL,函数会直接返回原地址,不会出现空值
- 单日调用存在Apps Script配额限制,数千条URL可拆分批次处理,避免触发接口限流
- 内置10跳循环上限,不会因站点的循环重定向逻辑导致脚本运行卡死
内容的提问来源于stack exchange,提问作者cfries95
相关产品推荐
相关产品推荐

