我有一個谷歌表。我正在嘗試將所有選項卡名稱放入陣列中。我使用了這段代碼。
function allTabNames() {
try{
var out = new Array();
var sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets();
for (var i =0; i<sheets.length; i ) out.push([sheets[i].getName()]);
Logger.log(out);
Logger.log(out.length);
return out
}
catch (er){
Logger.log(er);
}
}
它作業正常。現在我想洗掉一些選項卡名稱。我使用要洗掉的選項卡名稱創建了一個新陣列。
var duparray = ["Sheet1", "newRoad147", "Sheet2", "Sheet3", "Sheet4","Sheet5", "Sheet6"];
當我運行第一個提到的代碼時,我會得到這個。陣列“出”。
[[Sheet1], [newRoad147], [Sheet2], [Sheet3], [Sheet4], [Sheet5], [Sheet6], [Sheet7], [AddData], [WCO069], [WCO065], [WCO149], [WCO141], [WCO158], [BarChart], [Sheet11]]
我正在嘗試洗掉這兩個陣列中的公共元素。為此,我使用了以下代碼。但它并不順利。
function allTabNames() {
try{
var out = new Array();
var sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets();
for (var i =0; i<sheets.length; i ) out.push([sheets[i].getName()]);
Logger.log(out);
Logger.log(out.length);
//return out
var duparray = ["Sheet1", "newRoad147", "Sheet2", "Sheet3", "Sheet4","Sheet5", "Sheet6"];
var outx = out.filter( function( el ) {
return duparry.indexOf( el ) < 0;
} );
}
catch (er){
Logger.log(er);
}
Logger.log(outx);
}
這些選項卡的順序可以更改。這就是為什么我嘗試使用陣列中元素的特定名稱來洗掉元素。然后我們希望使用資料驗證在這個新陣列中創建一個元素的下拉串列。
uj5u.com熱心網友回復:
獲取作業表名稱并省略不包括在內
function getTabName() {
const ss = SpreadsheetApp.getActive();
const nincl = ['Sheet1','Sheet2'];//not included
const shts = ss.getSheets().filter(sh => !~nincl.indexOf(sh.getName())).map(sh => sh.getName());
return shts;
ss.getSheetByName('Sheet5').getRange("C5").setDataValidation(SpreadsheetApp.newDataValidation().requireValueInList(shts.join(',')).build());
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/435723.html
