You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Google Sheets App Script If Else判断成立仍执行Else分支问题求助

问题描述

Test1 工作表

测试表1截图

Test2 工作表

测试表2截图

需求:将Test1工作表A列的News01与Test2工作表A列的值做比对,提取Test2对应行的B列值,预期结果是将Finance写入Test1工作表B列对应单元格。

运行异常:即便If判断语句的条件成立,代码仍会执行Else分支的逻辑;删除Else分支后,If语句可正常运行。

相关代码:

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")
      }
    
    }
  });
}
问题原因

你将else分支写在了for循环内部,循环遍历Test2的A列过程中,只要当前遍历到的行不匹配,就会触发一次else分支执行日志打印逻辑,哪怕后续遍历到了匹配的行,前面不匹配的遍历轮次已经执行过else逻辑,才会出现你以为条件成立还触发else的错觉。

修复方案

把else分支移到for循环外部,新增匹配标记判断是否找到对应内容即可,修改后代码如下:

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 isFound = 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]);
        isFound = true;
        break;
      }
    }
    if(!isFound){
      Logger.log("News not found")
    }
  });
}

内容的提问来源于stack exchange,提问作者Moses

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 07:15:07