首页 > 解决方案 > 从函数内的函数返回值

问题描述

所以,我有一个函数用于迭代电子表格中的行。基于检查一些值,我需要返回一个值,如果没有,不应该返回。我不知道仅在函数(行)具有返回值的特定情况下如何返回。

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{
    ;
  }});
}

标签: javascriptfunctiongoogle-apps-scriptlambda

解决方案


在 JavaScript 中嵌套函数时,不能从内部函数返回外部函数。

我建议使用for循环而不是.forEach()

let data = sheetSource.getDataRange().getValues();
for(let row of data) {
   /* Your code */
}

推荐阅读