如何在Google Sheets中自动将ul列表拆分转换为table+ul格式
Google Sheets批量转换Shopify产品详情HTML实现方案
完全可以实现该批量转换需求,无需接入外部工具,通过Google Sheets内置的Apps Script编写自定义函数,即可逐行处理单个单元格内的原始产品HTML,批量输出符合规则的导入格式。
操作步骤
- 提前整理原始数据:将所有产品的原始
<ul>结构详情HTML,逐行存放在表格同一列(例如A列,从A2单元格开始,每行对应一个产品) - 打开脚本编辑器:点击顶部菜单栏「扩展程序」→「Apps Script」,清空编辑器内默认生成的空白代码,粘贴下方转换逻辑代码
function SHOPIFY_HTML_CONVERT(rawHtml) { // 匹配所有li标签内的文本内容 const liMatchRule = /<li[^>]*>([\s\S]*?)<\/li>/gi; const attrTableRows = []; const featureListItems = []; let currentMatch; // 遍历所有li条目按规则分类 while ((currentMatch = liMatchRule.exec(rawHtml)) !== null) { const itemContent = currentMatch[1].trim(); // 识别带冒号的属性项,兼容中英文冒号可自行调整判断条件 if (itemContent.includes(':')) { // 按第一个冒号拆分,避免属性值内自带冒号导致拆分错误 const splitPosition = itemContent.indexOf(':'); const attrName = itemContent.slice(0, splitPosition).trim(); const attrValue = itemContent.slice(splitPosition + 1).trim(); attrTableRows.push(`<tr><td>${attrName}</td><td>${attrValue}</td></tr>`); } else { featureListItems.push(`<li>${itemContent}</li>`); } } // 拼接最终符合要求的HTML结构 let finalHtml = ''; if (attrTableRows.length > 0) { finalHtml += `<table border="1" cellpadding="5" cellspacing="0">${attrTableRows.join('')}</table>`; } if (featureListItems.length > 0) { finalHtml += `<ul>${featureListItems.join('')}</ul>`; } return finalHtml; }
- 保存并授权脚本:给脚本项目任意命名(比如ShopifyProductConvert),点击保存按钮后,首次运行会弹出Google的安全提示,因为是你个人编写的私有脚本,直接点击「高级」→「前往(你的项目名)」完成权限授权即可,所有数据处理都在你个人的Google账号空间内完成,不会外泄。
- 批量应用公式:回到表格界面,在需要输出转换结果的单元格(例如B2)输入公式
=SHOPIFY_HTML_CONVERT(A2),回车即可得到对应产品转换后的HTML代码,选中单元格下拉填充公式,即可批量完成整列所有产品的格式转换。
可调整项说明
- 代码默认只识别英文半角冒号作为属性项判断依据,如果你的原始数据里用了中文全角冒号「:」,可以把判断条件修改为
if (itemContent.includes(':') || itemContent.includes(':')),同时拆分位置的逻辑同步增加全角冒号的判断即可。 - 输出的
<table>标签默认加了简单的边框、内边距属性适配Shopify的展示效果,如果你需要自定义表格样式,可以直接修改代码里table标签的属性内容。 - 代码默认会清除原
<li>标签上自带的class、style等冗余属性,如果需要保留原标签属性,可以调整正则匹配规则直接保留完整li标签内容。
内容的提问来源于stack exchange,提问作者mjreal
相关产品推荐
相关产品推荐

