[英]Google Apps Script: how to search certain column for words from list and return text to another column
[英]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.