亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何遍歷所有工作表以獲取單元格值以創建下拉框?

如何遍歷所有工作表以獲取單元格值以創建下拉框?

SMILET 2022-12-22 09:39:07
我有一個包含多個包含相同列標題的工作表的 Google 表格電子表格。我正在嘗試從所有工作表中提取“A2:A”范圍內的數據,并創建一個包含所有單元格值的下拉框,但目前它只給我一個包含最后一張工作表中單元格值的下拉框。function getCategoryList() {   var spreadsheet = SpreadsheetApp.getActive();   var lastrow = spreadsheet.getActiveSheet().getLastRow()       var dynamicList = spreadsheet.getRange('A2:A' + lastrow);    var arrayValues = dynamicList.getValues();   var rangeRule = SpreadsheetApp.newDataValidation().requireValueInList(arrayValues);   console.log(arrayValues)   spreadsheet.getRange('Main!C4').setDataValidation(rangeRule);  }function doForAllTabs() {  var spreadsheet = SpreadsheetApp.getActive();     var lastrow = spreadsheet.getActiveSheet().getLastRow()  var allSheets = spreadsheet.getSheets();     allSheets.forEach(function(sheet) {    if(sheet.getSheetName() !== "Main") {      sheet.activate();            getCategoryList()          }      })}
查看完整描述

1 回答

?
瀟湘沐

TA貢獻1816條經驗 獲得超6個贊

使用當前代碼,在工作表循環內處理單個工作表后,數據驗證將寫入單元格 Main!C4。換句話說,數據驗證被一次又一次地覆蓋。需要的是合并數組中的值,然后將其寫入 Main!C4。看看這是否有幫助。


function setDataValidation() {


var ss = SpreadsheetApp.getActive();

var values = allColsA(ss, 'Main', 'A2:A');

ss.getRange('Main!C4').setDataValidation(SpreadsheetApp.newDataValidation()

.requireValueInList(values));

}

編輯以包含一個帶有排除表的數組...


function allColsA(spreadsheet, targetSheetName, range) {

var arr, excluded; 

arr = [[]];

excluded = [targetSheetName, 'Sheet2', 'Sheet3'];

spreadsheet.getSheets().filter(sh => excluded.indexOf(sh.getName()) === -1)

    .forEach((s, i) => {

        arr = arr.concat(s.getRange(range)

                .getValues())

    })

return  arr.filter(String).reduce((a, b) => a.concat(b), []);

}


查看完整回答
反對 回復 2022-12-22
  • 1 回答
  • 0 關注
  • 110 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號