我有一个谷歌工作表,我正在尝试搜索、匹配,然后自动填充一些数据。
这是 google 工作表布局
这是 查找表布局
我编写了一些 JavaScript 代码来尝试在单元格 A2 中搜索关键字,将其与查找表中的值进行匹配,获取相应的数据,然后将其填充到关键字下方 1 行和右侧 1 列。它应该重复检查 A 列中的每 7 个单元格,直到没有更多单元格为止。目前,我的代码适用于第一个关键字,然后为其余关键字输入了错误的数据。
function FindItemAndPopulate() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Item Autofill");
var keywordRange = sheet.getRange("A2:A");
var keywords = keywordRange.getValues();
var lastRowA = sheet.getLastRow();
for (var i = 0; i < keywords.length; i += 7) { // Increment by 7 to check every 7th row
var keyword = keywords[i][0];
if (keyword !== "") {
var searchData = sheet.getRange("M2:M" + lastRowA).getValues();
var rowIndex = -1;
for (var j = 0; j < searchData.length; j++) {
if (searchData[j][0] === keyword) {
rowIndex = j + 2; // Adjust index for row offset due to starting from row 2
break;
}
}
if (rowIndex !== -1) {
var rowData = sheet.getRange(rowIndex, 14, 1, 5).getValues(); // Get data from columns N to R
var valuesToPopulate = [];
for (var k = 0; k < rowData[0].length; k++) {
valuesToPopulate.push([rowData[0][k] !== "" ? rowData[0][k] : ""]);
}
sheet.getRange(rowIndex + 1, 2, 1, 5).setValues([valuesToPopulate]); // Populate data into the next row and 1 column right
} else {
sheet.getRange("B" + (i + 2) + ":F" + (i + 2)).clearContent(); // Clear corresponding row if no match found
}
} else {
sheet.getRange("B" + (i + 2) + ":F" + (i + 2)).clearContent(); // Clear corresponding row if keyword is empty
}
}
}
我相信我在某个地方犯了一个错误,关键字的索引不在正确的范围内或没有正确更新,但我不知道在哪里。任何帮助将不胜感激。
这是代码的结果照片
感谢您的帮助和耐心。
按要求编辑:
这是 谷歌文档的链接 注意:相关页面的标题是 “项目自动填充”
这是预期的输出,其中相关部分突出显示(其余部分在其他地方处理)
我还包含了一个名为“预期输出”的选项卡,它显示了代码运行后表格的外观 - 红色文本是我发布的代码管理的部分,其余部分在其他地方处理,因此仅关注红色零件
我认为,如果你像这样调整
rowIndex = j + 2;
,那么这个比较if (rowIndex !== -1) {
必须更改为if(rowIndex !== 1
,但如果不了解你想要实现的目标,我就无法再进一步了。