通过Apps Script为表格G列单元格批量添加文本前缀的实现方法
G列批量添加指定前缀的实现方案
以下方案均满足「为G列除表头外所有非空单元格内容开头添加navigatela.lacity.org/前缀」的需求,可根据自己使用的表格工具、场景选择:
方案1:内置公式法(零代码,适合单次处理的普通用户)
不需要写代码,用表格自带的文本拼接功能即可完成:
- 在G列旁新增临时空白列(比如H列),点击H2单元格(对应第一条数据行)输入公式:
="navigatela.lacity.org/"&G2 - 选中H2单元格,拖动单元格右下角的填充柄,下拉到所有数据行,自动生成全部带前缀的内容
- 选中H列所有生成的内容,复制后右键选择「粘贴为值」覆盖原G列,删除临时H列即可
*如果要跳过G列的空单元格,避免生成只有前缀的无效内容,可把公式替换为=IF(G2<>"","navigatela.lacity.org/"&G2,"")
方案2:VBA宏方案(适合本地Excel/WPS,支持重复一键执行)
如果需要经常做同类操作,可以写宏存到表格里,后续点一次就能完成处理:
- 打开表格按
Alt+F11调出VBA编辑器,右键点击当前工作簿插入新模块 - 粘贴以下代码后按F5运行即可,操作前建议备份原表:
Sub AddGColumnPrefix() Dim lastRow As Long, i As Long Dim ws As Worksheet Set ws = ActiveSheet ' 定位G列最后一条有内容的行 lastRow = ws.Cells(ws.Rows.Count, "G").End(xlUp).Row ' 从第2行开始遍历,跳过表头 For i = 2 To lastRow If Trim(ws.Cells(i, "G").Value) <> "" Then ws.Cells(i, "G").Value = "navigatela.lacity.org/" & ws.Cells(i, "G").Value End If Next i End Sub
方案3:Python脚本方案(适合批量处理多文件、自动化场景)
不需要打开表格客户端,用脚本可以批量处理多个表格文件,适合自动化流程:
- 先安装处理xlsx文件的依赖:执行命令
pip install openpyxl - 替换脚本里的文件路径,运行即可完成处理,默认会生成新文件不覆盖原表:
from openpyxl import load_workbook # 替换为你自己的表格路径 target_file = "你的表格文件.xlsx" wb = load_workbook(target_file) # 替换为要处理的工作表名称 ws = wb["Sheet1"] prefix_str = "navigatela.lacity.org/" # 遍历G列第2行及以下的所有单元格 for row_num in range(2, ws.max_row + 1): cell = ws[f"G{row_num}"] cell_val = cell.value if cell_val is not None and str(cell_val).strip() != "": cell.value = prefix_str + str(cell_val) # 保存处理后的文件 wb.save(f"已添加前缀_{target_file}")
*如果要处理xls格式的旧文件,可替换使用xlwings或pandas库,处理逻辑完全一致。
方案4:Apps Script方案(适合在线谷歌表格)
如果用的是谷歌在线表格,可以用自带的脚本服务批量处理:
- 打开表格后点击顶部「扩展程序」-「Apps Script」进入脚本编辑页
- 粘贴以下代码,点击运行授权后即可完成处理:
function addPrefixToGCol() { const activeSheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); const lastRow = activeSheet.getLastRow(); const prefix = "navigatela.lacity.org/"; // 读取G列从第2行开始的所有数据 const dataRange = activeSheet.getRange(2, 7, lastRow - 1, 1); const dataValues = dataRange.getValues(); // 批量拼接前缀 const processedValues = dataValues.map(row => { const cellContent = row[0]; return cellContent ? [prefix + cellContent] : [cellContent]; }) // 把处理后的数据写回表格 dataRange.setValues(processedValues); }
内容的提问来源于stack exchange,提问作者Apalila
相关产品推荐
相关产品推荐

