簡體   English   中英

如何使用谷歌腳本從列表中返回另一個列表中不存在的值

[英]how to return values from a list that are not present in another list using google script

我有兩個清單。 列表一包含所有當前員工姓名,列表二包含所有當前和過去員工姓名。

我需要開發一個腳本來返回所有過去的名字以及列表二中連接到它們的信息。 我編寫了這段代碼,它將所有當前名稱與其當前信息相匹配,但無法弄清楚如何做相反的事情。

function current(){

  var app = SpreadsheetApp;
 
 var activeSheet = app.getActiveSpreadsheet();

  var issued = app.getActiveSpreadsheet().getSheetByName("Issued");

  var waiting = app.getActiveSpreadsheet().getSheetByName("Waiting for Inventory");

  var active = app.getActiveSpreadsheet().getSheetByName("Active Officers");
  
 for (var j = 2; j<100; j++){ 
  
  var officer = issued.getRange(j,11).getValue();
 
  for(var i = 2; i<70; i++){ 

    var officerList = active.getRange(i, 2).getValue();

     if (officer === ""){
       continue; 
      }

     if (officer === officerList){
      var rowInfo = issued.getRange(j,1,1,12).getValues();
      var lastrow = waiting.getLastRow();
      waiting.getRange(lastrow+1,1,1,12).setValues(rowInfo);
      }
    }
  }
}

檢索數組中是否存在字符串的最簡單方法是使用indexOf()

  • 如果未找到值,它將返回-1
  • active中檢索所有官員並將值轉換為帶有flat()的一1D數組
  • 檢索所有issued getValues的官員(比使用getValue的多個請求更有效並循環它們
  • 這種設置只需要一個for循環而不是兩個,這將使您的代碼顯着更快

樣本:

function current(){
  
  var app = SpreadsheetApp;
  
  var activeSheet = app.getActiveSpreadsheet();
  
  var issued = app.getActiveSpreadsheet().getSheetByName("Issued");
  
  var waiting = app.getActiveSpreadsheet().getSheetByName("Waiting for Inventory");
  
  var active = app.getActiveSpreadsheet().getSheetByName("Active Officers");
  
  var officerList = active.getRange(2, 2, 69, 1).getValues().flat();
  var officers = issued.getRange(2,11,99,1).getValues();
  Logger.log(officerList);
  for (var j = 0; j < 99; j++){     
    var officer = officers[j][0];
    if (officerList.indexOf(officer) ==-1){
      Logger.log("officer " + officer + " from Issued does not exist in Active Officers");
      var rowInfo = issued.getRange(j+2,1,1,12).getValues();
      var lastrow = waiting.getLastRow();
      waiting.getRange(lastrow+1,1,1,12).setValues(rowInfo);
    }
  }
}

暫無
暫無

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

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