如何在Logic App的Inline Code连接器中获取HTML元素的值
DOM API不可用的原因
Logic App 内置Inline Code运行的是受限Node.js服务端环境,没有浏览器提供的
document、window等全局DOM对象,getElementById、getElementsByTagName等都是浏览器专属的DOM操作接口,服务端环境不存在这类API,因此运行报错。
表格数据提取实现方案
你可以通过正则匹配直接从HTML文本中提取目标表格和对应单元格内容,不需要依赖DOM API,适配Logic App的运行环境,完整代码如下:
var response = workflowContext.trigger.outputs.body; // API Response var multiBody = response.body.$multipart[4].body; // 取对应分片的HTML内容 // 1. 匹配所有table标签内容,取第5个表格(对应你之前代码的[4]下标) const tableReg = /<table[^>]*>[\s\S]*?<\/table>/gi; const allTables = multiBody.match(tableReg) || []; const targetTable = allTables[4]; // 这里下标对应你要的第N个表格,根据实际调整 if (!targetTable) throw new Error("未找到目标表格"); // 2. 匹配表格内所有行<tr>内容 const rowReg = /<tr[^>]*>[\s\S]*?<\/tr>/gi; const allRows = targetTable.match(rowReg) || []; const targetRow = allRows[0]; // 取第一行,对应你之前的rows[0] if (!targetRow) throw new Error("未找到目标行"); // 3. 匹配行内所有单元格<td>文本 const cellReg = /<td[^>]*>([\s\S]*?)<\/td>/gi; const allCells = []; let match; while ((match = cellReg.exec(targetRow)) !== null) { // 去除标签、空格,保留纯文本 const cellText = match[1].replace(/<[^>]+>/g, '').trim(); allCells.push(cellText); } const targetText = allCells[1]; // 取第二个单元格,对应你之前的cells[1] // 4. 提取LTV和CLTV值 const firstValue = targetText.substring(0, targetText.indexOf('/') - 1); // LTV const secondValue = targetText.substring(targetText.indexOf('/') + 2, targetText.lastIndexOf('/') - 1); // CLTV // 返回你需要的结果 return { LTV: firstValue, CLTV: secondValue, rawCellText: targetText };
- 正则的匹配规则可以根据你实际返回的HTML结构微调,如果表格标签有特殊属性,调整对应正则的匹配规则即可
- 如果需要提取更多行和单元格,修改对应下标或者加循环遍历即可
内容的提问来源于stack exchange,提问作者Usama
相关产品推荐
相关产品推荐

