如何从Google Sheets的Smart Chips中提取地址并转为文本?
问题解决:提取Google Maps地址Smart Chip文本到L列
原脚本的核心问题
- 遍历范围错误:原脚本遍历整个表格,而非仅目标E列,且输出列不是需求的L列
- 获取内容错误:
getLinkUrl()只能拿到Smart Chip的跳转链接,而非显示的地址文本 - 效率低下:逐单元格读写会触发多次API调用,易导致超时或无响应
修正后的脚本
function extractAddressToColumnL() { const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); // 定位E列(第5列)的数据范围,跳过表头(从第2行开始) const lastRow = sheet.getLastRow(); if (lastRow < 2) return; // 无数据时直接退出 const eRange = sheet.getRange(2, 5, lastRow - 1, 1); const richTextValues = eRange.getRichTextValues(); // 准备要写入L列(第12列)的地址文本数组 const addressTexts = richTextValues.map(row => { const richText = row[0]; // Smart Chip的显示文本就是地址,直接提取 return [richText.getText()]; }); // 批量写入L列,从第2行开始 sheet.getRange(2, 12, addressTexts.length, 1).setValues(addressTexts); }
关键优化点
- 精准定位范围:仅处理E列数据行,直接输出到L列,避免无效遍历
- 正确提取内容:通过
getText()获取Smart Chip显示的地址文本,而非跳转链接 - 批量操作:一次性读取所有RichText值,处理后批量写入,大幅提升执行效率
- 边界处理:判断表格是否有数据,避免空表报错
使用说明
- 打开你的Google表格,点击「扩展程序」→「Apps脚本」
- 删除原有代码,粘贴上述修正后的脚本
- 点击「运行」,首次运行需授权脚本访问表格权限
- 运行完成后,L列会自动填充E列Smart Chip对应的地址文本
内容的提问来源于stack exchange,提问作者Communications Staff
相关产品推荐
相关产品推荐

