如何根据多个Google表中的ID匹配具有巨大数据(约27000行)的数据?

问题描述 投票:0回答:1
EPOSIT报告表(10000行)和实际是.cvs文件(26000行)的付款表。我尝试使用AppScript匹配这两张纸之间的数据,但是需要很长时间才能工作?我希望它能快吗?我需要解决方案,无论是表格的公式还是更快的appscript?

function compareColumns() { var spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); var sheet1 = spreadsheet.getSheetByName("rps_243_payments_datetime_since=2025-01-01&datetime_until=2025-01-01"); var sheet2 = spreadsheet.getSheetByName("deposit-report"); var sheet3 = spreadsheet.getSheetByName("Comparison"); // Output sheet var range1 = sheet1.getRange("A2:A"); // Column A from Sheet1 var range2 = sheet2.getRange("I2:I"); // Column A from Sheet2 var values1 = range1.getValues(); var values2 = range2.getValues(); var outputRange = sheet3.getRange("B2"); // Starting cell for output in Sheet3 for (var i = 0; i < values1.length && values1[i][0] != ''; i++) { for (var j = 0; j < values2.length && values2[i][0] != ''; ; j++) { if (values1[i][0] !== values2[j][0]) { sheet3.getRange("B" + (i + 2)).setValue("Mismatch"); sheet3.getRange(i + 2, 1).setBackground("red"); } else { sheet3.getRange("B" + (i + 2)).setValue("Match"); sheet3.getRange(i + 2, 1).setBackground("green"); } } } }

屏幕photo
    

基于ID

的匹配数据
google-sheets google-apps-script google-sheets-formula
1个回答
0
投票
function compareColumns() { var spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); var sheet1 = spreadsheet.getSheetByName("rps_243_payments_datetime_since=2025-01-01&datetime_until=2025-01-01"); var sheet2 = spreadsheet.getSheetByName("deposit-report"); var sheet3 = spreadsheet.getSheetByName("Comparison"); // Output sheet var range1 = sheet1.getRange("A2:A"); // Column A from Sheet1 var range2 = sheet2.getRange("I2:I"); // Column I from Sheet2 var values1 = range1.getValues(); var values2 = range2.getValues(); var depositIdsArray = []; for (var j = 0; j < values2.length; j++) { if (values2[j][0] != '') { depositIdsArray.push(values2[j][0]); } } var output = []; var backgroundColors = []; for (var i = 0; i < values1.length && values1[i][0] != ''; i++) { if (depositIdsArray.indexOf(values1[i][0]) !== -1) { output.push(["Match"]); backgroundColors.push(["#00FF00"]); } else { output.push(["Mismatch"]); backgroundColors.push(["#FF0000"]); } } sheet3.getRange(2, 1, output.length, 1).setValues(output); sheet3.getRange(2, 1, backgroundColors.length, 1).setBackgrounds(backgroundColors); }

注:

我的代码比您的代码更快,但性能仍然取决于数据集的大小。
参考:

应用程序脚本

应用程序脚本中的loops

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.