如何用Apps Script批量将URL转换为网页标题?
Google Sheets批量将URL转为网页标题的Apps Script方案
问题背景
需要批量导出房地产数据,将Google Sheets中A列的URL批量转换为对应网页标题。之前尝试IMPORTXML存在调用限制,现有代码仅能提取网站主机名,无法获取完整网页标题。
解决方案代码
1. 自定义函数(支持单个/批量单元格调用)
function GetPageTitle(url) { // 处理空值或非字符串类型的输入 if (!url || typeof url !== 'string') return ''; try { // 发起HTTP请求获取网页内容,忽略HTTP异常 var response = UrlFetchApp.fetch(url, {muteHttpExceptions: true}); var html = response.getContentText(); // 匹配<title>标签内的标题内容,不区分大小写 var titleMatch = html.match(/<title>([^<]+)<\/title>/i); return titleMatch ? titleMatch[1].trim() : '无法获取标题'; } catch (e) { return '请求失败: ' + e.message; } } // 一键批量处理函数:将A列URL对应的标题写入B列 function BatchUpdateTitles() { var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); var dataRange = sheet.getDataRange(); var values = dataRange.getValues(); // 遍历每行数据,处理A列URL并写入B列 for (var i = 0; i < values.length; i++) { var url = values[i][0]; if (url) { values[i][1] = GetPageTitle(url); // 添加1秒延迟,避免触发请求频率限制 Utilities.sleep(1000); } } // 将处理结果写回表格 dataRange.setValues(values); }
2. 使用方法
- 单个单元格调用:在B1单元格输入
=GetPageTitle(A1),向下拖曳填充即可批量转换每行的URL标题。 - 一键批量处理:
- 打开目标Google Sheets,点击「扩展程序」→「Apps脚本」。
- 将上述代码粘贴到脚本编辑器,保存并命名项目。
- 返回表格,点击「扩展程序」→「你的项目名称」→「BatchUpdateTitles」,完成授权后即可自动批量更新标题。
注意事项
- 加入1秒延迟是为了避免触发Google服务或目标网站的请求频率限制,若目标网站限制较松,可适当缩短延迟时间。
- 部分网站存在反爬机制,可能无法正常获取标题,此时函数会返回「无法获取标题」或具体错误信息。
- 首次运行脚本需要完成权限授权,按照页面提示操作即可。
示例数据
| A列(URL) | B列(网页标题) |
|---|---|
| https://www.realtor.ca/real-estate/27633475/720b-waverley-road-dartmouth-dartmouth | For sale: 720B Waverley Road, Dartmouth, Nova Scotia B2X2G4 - 202426370 |
内容的提问来源于stack exchange,提问作者Riyahh
相关产品推荐
相关产品推荐

