row_values_str是两行表格CSV转化过来的JSON字符串了已经。
填写下面代码就是填充入的硬编码值,一直没有接收参数
function(row_values_str) {
console.log("
// ==========================================
// 1. 【唯一修改点】解析传入的字符串
// ==========================================
var data;
// 检查是否有传入参数
if (row_values_str && typeof row_values_str === 'string' && row_values_str.trim().length > 0) {
try {
// 尝试解析字符串
data = JSON.parse(row_values_str);
console.log("
成功解析传入的字符串数据。行数:", data.length);
} catch (e) {
console.error("
解析失败:", e.message);
console.error("原始字符串:", row_values_str);
// 【容错机制】如果解析失败,为了防止流程中断,这里可以选择抛出错误
throw new Error("
传入的字符串不是合法的 JSON 格式!请检查变量内容。\n报错:" + e.message);
}
} else {
// 如果没有传入字符串,为了测试代码逻辑,可以使用下面的默认数据(调试用)
// 正式运行时,如果有传参,这部分不会执行
console.warn("

未检测到有效字符串参数,使用默认测试数据...");
data = [
["title", "Brand", "People", "size", "material"],
["Test Item", "Test Brand", "Test Person", "100", "Steel"]
];
}
// 二次校验:确保解析出来的是数组且至少有2行
if (!Array.isArray(data) || data.length < 2) {
throw new Error("

数据格式错误:解析结果必须是包含至少两行的数组 [表头行, 数据行]。");
}
console.log("

准备填充数据 - 键数量:", data[0].length, "值数量:", data[1].length);
// ==========================================
// 2. 【完全保留】你之前成功的 XPath 和填充逻辑
// ==========================================
var rowXPath = '//form//div[contains(@class, "smtCustomAttrItem")]';
var leftInputXPath = './/input[1]';
var rightInputXPath = './/input[2]';
var rowsSnapshot = document.evaluate(
rowXPath, document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null
);
var totalRows = rowsSnapshot.snapshotLength;
console.log("
JK$EJGUNNQRES.png)
页面找到行数:", totalRows);
if (totalRows === 0) {
throw new Error("未找到任何属性行,请检查 XPath");
}
var successCount = 0;
// 取 表头长度 和 页面行数 的最小值
var limit = Math.min(data[0].length, totalRows);
for (var i = 0; i < limit; i++) {
// 这里完全对应你成功的代码逻辑
var key = data[0][i]; // 第1个数组的第i个元素
var value = data[1][i]; // 第2个数组的第i个元素
var rowNode = rowsSnapshot.snapshotItem(i);
if (!rowNode) continue;
var leftInput = document.evaluate(leftInputXPath, rowNode, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
var rightInput = document.evaluate(rightInputXPath, rowNode, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
if (leftInput && rightInput) {
leftInput.value = String(key);
leftInput.dispatchEvent(new Event('input', { bubbles: true }));
leftInput.dispatchEvent(new Event('change', { bubbles: true }));
rightInput.value = String(value);
rightInput.dispatchEvent(new Event('input', { bubbles: true }));
rightInput.dispatchEvent(new Event('change', { bubbles: true }));
successCount++;
}
}
console.log("
0$C.png)
完成!成功填充:", successCount, "项");
return "
_I.png)
成功填充 " + successCount + " 项";
}