Hoja de prueba 1
Hoja de prueba 2
Quiero comparar News01 de Test1 A Column con Test2 A Column , y necesito obtener el valor de la columna Test2 B correspondiente
Entonces, el resultado debería ser Finanzas en la columna Sheet1 B
Pero si uso else, incluso cuando la declaración if es verdadera, va a la declaración else. Si elimino otra declaración, entonces si la declaración está funcionando.
No sé por qué cuando si la declaración es verdadera, va a otra declaración por defecto
function test() { var sheet = SpreadsheetApp.getActiveSpreadsheet(); var source_sheet = sheet.getSheetByName("Test1"); var target_sheet = sheet.getSheetByName("Test2"); var lastRow = source_sheet.getLastRow(); var inputs = source_sheet.getRange('A' + lastRow).getValues().flat(); var days = target_sheet.getRange('A1:A').getValues().flat(); var codes = target_sheet.getRange('B1:B').getValues().flat(); inputs.forEach(function(input, count){ for(var i = 0; i < days.length; i++){ if(days[i].trim() == input.trim()){ source_sheet.getRange('B' + (count + source_sheet.getLastRow())).setValue(codes[i]); Logger.log(codes[i]); break; } else{ Logger.log("News not found") } } }); }Está registrando News not found para cada comparación con todas las filas de Test2 , lo cual es incorrecto.
En su lugar, solo debe iniciar sesión cuando finalice la comparación.
function test() { var sheet = SpreadsheetApp.getActiveSpreadsheet(); var source_sheet = sheet.getSheetByName("Test1"); var target_sheet = sheet.getSheetByName("Test2"); var lastRow = source_sheet.getLastRow(); var inputs = source_sheet.getRange('A' + lastRow).getValues().flat(); var days = target_sheet.getRange('A1:A').getValues().flat(); var codes = target_sheet.getRange('B1:B').getValues().flat(); inputs.forEach(function(input, count){ let found = false; for(var i = 0; i < days.length; i++){ if(days[i].trim() == input.trim()){ source_sheet.getRange('B' + (count + source_sheet.getLastRow())).setValue(codes[i]); Logger.log(codes[i]); found = true; break; } } if (!found) { Logger.log("News not found"); } }); }O simplemente,
function test() { var sheet = SpreadsheetApp.getActiveSpreadsheet(); var source_sheet = sheet.getSheetByName("Test1"); var target_sheet = sheet.getSheetByName("Test2"); var lastRow = source_sheet.getLastRow(); var inputs = source_sheet.getRange('A' + lastRow).getValues().flat(); var days = target_sheet.getRange('A1:A').getValues().flat(); var codes = target_sheet.getRange('B1:B').getValues().flat(); inputs.forEach(function(input, count){ for(var i = 0; i < days.length; i++){ if(days[i].trim() == input.trim()){ source_sheet.getRange('B' + (count + source_sheet.getLastRow())).setValue(codes[i]); Logger.log(codes[i]); return; } } Logger.log("News not found"); }); }function test() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var sh1 = ss.getSheetByName("Sheet0"); var sh2 = ss.getSheetByName("Sheet1"); var lastRow = sh1.getLastRow(); var vs1 = sh1.getRange(1,1,sh1.getLastRow()).getValues().flat().map(e => e.trim()); var vs2 = sh2.getRange(1,1,sh2.getLastRow(),2).getValues(); vs2.forEach(r => { if(~vs1.indexOf(r[0].trim())) { Logger.log(r[1]); } }); }