Entonces, tengo una función que se usa para iterar filas dentro de una hoja de cálculo. Basado en la verificación de algunos valores, necesito devolver un valor, si no, no debería devolverlo. No sé cómo regresar solo en los casos específicos cuando la función (fila) tiene un valor de retorno.
function GetOldAreaSize(ID, area_changed, change_doc, area_kha, sheetSource) { var data = sheetSource.getDataRange().getValues(); data.forEach(function (row) { if (row[0] == ID) { var area_changed_old = row[4]; var change_doc_old = row[2]+row[3]; var area_kha_old = row[15]; if (area_changed == area_changed_old) { if (change_doc == "MR1") { if (change_doc_old == "PDD1") { var old_area = parseFloat(area_kha_old); Logger.log(old_area+" - "+parseFloat(area_kha)) return parseFloat(area_kha_old); }} else if (change_doc == "MR2") { if (change_doc_old == "MR1") { Logger.log(area_kha_old+" - "+parseFloat(area_kha)) return parseFloat(area_kha_old); }} else if (change_doc == "MR3") { if (change_doc_old == "MR2") { Logger.log(area_kha_old+" - "+parseFloat(area_kha)) return parseFloat(area_kha_old); }} else if (change_doc == "MR4") { if (change_doc_old == "MR3") { Logger.log(area_kha_old+" - "+parseFloat(area_kha)) return parseFloat(area_kha_old); }} else if (change_doc == "MR5") { if (change_doc_old == "MR4") { return parseFloat(area_kha_old); }} else if (change_doc == "MR6") { if (change_doc_old == "MR5") { return parseFloat(area_kha_old); }} else { ; } } } else{ ; }}); }En JavaScript, al anidar funciones, no puede regresar de una función interna a la función externa.
Recomiendo usar un bucle for en lugar de .forEach() :
let data = sheetSource.getDataRange().getValues(); for(let row of data) { /* Your code */ }