Google Sheets脚本开发:选中单元格正则替换与文本清理
Google Sheets 自定义脚本:批量清理选中单元格文本格式
以下是完整的脚本代码,包含你已有的自定义菜单逻辑,以及补全后的tidyText核心处理函数:
function onOpen() { const ui = SpreadsheetApp.getUi(); ui.createMenu('Tidy Text') .addItem('清理选中单元格', 'tidyText') .addToUi(); } function tidyText() { const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); const range = sheet.getActiveRange(); const values = range.getValues(); // 遍历处理每个单元格内容 const cleanedValues = values.map(row => { return row.map(cell => { // 非文本内容直接返回,不做处理 if (typeof cell !== 'string') return cell; // 1. 移除不在白名单内的无效字符 let cleaned = cell.replace(/[^0-9a-zA-Z-,.!#'@ ~]/g, ''); // 2. 把冒号替换为空格(匹配示例中Quantity:4转成Quantity 4的需求) cleaned = cleaned.replace(/:/g, ' '); // 3. 清理多余空格:多空格转单空格,同时去除首尾空格 cleaned = cleaned.replace(/\s+/g, ' ').trim(); return cleaned; }); }); // 将处理后的数据批量写回选中区域 range.setValues(cleanedValues); }
关键逻辑说明
- 选中区域处理:只对当前选中的单元格生效,不会影响其他单元格
- 无效字符过滤:通过正则
[^0-9a-zA-Z-,.!#'@ ~]精准保留你指定的合法字符,移除括号、特殊符号等无效内容 - 格式统一:先替换冒号为空格,再把所有连续的多空格压缩成单个,同时去掉文本首尾的冗余空格
- 兼容性:非文本类型的单元格(比如纯数字、空白)会直接跳过,避免错误
测试效果
输入:
Apples 123-1234-12345 ( golden delicious Quantity:4 )
输出:Apples 123-1234-12345 golden delicious Quantity 4
内容的提问来源于stack exchange,提问作者Google Sheets
相关产品推荐
相关产品推荐

