簡體   English   中英

谷歌表格應用腳本如果不工作

[英]Google Sheets App Script If Else not working

測試1

在此處輸入圖像描述

測試2

在此處輸入圖像描述

我想將Test1 A Column中的News01Test2 A Column進行比較,並且需要獲取相應的Test2 B 列

所以結果應該是Sheet1 B 列中的Finance

但是如果我使用 else,即使 if 語句為真,它也會使用 else 語句。 如果我刪除 else 語句,那么 if 語句正在工作。

我不知道為什么當 if 語句為真時,它會默認為 else 語句

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

您正在記錄News not foundTest2的所有行的每次比較,這是不正確的。

相反,您應該只在比較完成時記錄。

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

或者簡單地說,

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM