Javascript 如何使用google脚本从另一个列表中不存在的列表返回值

Javascript 如何使用google脚本从另一个列表中不存在的列表返回值,javascript,arrays,google-apps-script,Javascript,Arrays,Google Apps Script,我有两张单子。列表一包含所有当前员工姓名,列表二包含所有当前和过去员工姓名 我需要开发一个脚本,返回列表2中所有过去的名字以及与之相关的信息。我编写了这段代码,它将所有当前名称与它们的当前信息相匹配,但不知道如何做相反的操作 function current(){ var app = SpreadsheetApp; var activeSheet = app.getActiveSpreadsheet(); var issued = app.getActiveSpreadshee

我有两张单子。列表一包含所有当前员工姓名,列表二包含所有当前和过去员工姓名

我需要开发一个脚本,返回列表2中所有过去的名字以及与之相关的信息。我编写了这段代码,它将所有当前名称与它们的当前信息相匹配,但不知道如何做相反的操作

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);
      }
    }
  }
}
函数当前(){
var app=电子表格应用程序;
var activeSheet=app.getActiveSpreadsheet();
var issued=app.getActiveSpreadsheet().getSheetByName(“已发布”);
var waiting=app.getActiveSpreadsheet().getSheetByName(“等待库存”);
var active=app.getActiveSpreadsheet().getSheetByName(“在职人员”);
对于(var j=2;j),检索数组中字符串存在的最简单方法是
  • 如果未找到值,它将返回
    -1
  • active
    检索所有军官,并使用
  • 使用
    getValues
    (比使用
    getValues
    的多个请求更有效)检索发布的
    中的所有官员,并循环遍历它们
  • 这种设置只需要一个
    循环,而不是两个
    循环,这将大大加快代码的速度
示例:

函数当前(){
var app=电子表格应用程序;
var activeSheet=app.getActiveSpreadsheet();
var issued=app.getActiveSpreadsheet().getSheetByName(“已发布”);
var waiting=app.getActiveSpreadsheet().getSheetByName(“等待库存”);
var active=app.getActiveSpreadsheet().getSheetByName(“在职人员”);
var officerList=active.getRange(2,2,69,1).getValues().flat();
var=published.getRange(2,11,99,1).getValues();
Logger.log(officerList);
对于(var j=0;j<99;j++){
var高级职员=高级职员[j][0];
if(公务员名单索引of(官员)=-1){
Logger.log(“发布的官员”+官员+”在现役官员中不存在);
var rowInfo=issued.getRange(j+2,1,1,12).getValues();
var lastrow=waiting.getLastRow();
waiting.getRange(lastrow+1,1,12).setValues(rowInfo);
}
}
}

提供工作表的屏幕截图。根据您的问题,您的脚本没有任何意义。您的两个列表在哪里。您有四个不同的工作表activeSheet、已发布、等待和活动。非常感谢您,工作非常完美。平面()对于值,我读了解释,但仍然不明白它是如何工作的。如果你能解释的话,那就太棒了。当然!
getValues()
返回一个二维数组,但是
indexOf()
需要一个一维数组才能正常工作。
flat()
将二维数组转换为一维数组,所以
[[1],[2],[3]]
[1,2,3]