问题:无法使用Google Script更新两个或更多切片器的范围
信息:工作表包含两个切片器
代码:
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('Tracking');
var slicers = sheet.getSlicers();
var slicerRange = sheet.getRange('A3:A160'); //current slicer range A3:A165
slicers[0,1].setRange(slicerRange);
}
Error: Two slicers can either have zero or all common rows.怎么啦?如果我只在工作表和代码中使用一个切片器,代码就可以工作。
提前感谢大家的帮助!
发布于 2021-02-25 06:20:42
我不认为你可以编辑他们的范围。但您可以删除它们,然后使用新的范围重新创建它们:
function test(){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('Tracking');
var slicers = sheet.getSlicers();
var newRange = sheet.getRange('A3:A160'); // your new range
var slicersCount = 0;
for (i=0;i<slicers.length;i++){
slicers[i].remove();
slicersCount ++;
}
for (i=0;i<slicersCount;i++){
sheet.insertSlicer(newRange, 5, 3); // choose anchorRowPos and anchorColPos you want
}
}然后,您可以根据需要修改它们的其余设置。希望这能有所帮助。
发布于 2021-02-25 14:39:06
非常感谢你的帮助!它最终帮助我让它工作起来。
这是我最后得到的代码,它没有insertSlicer()上的计数器,因为我需要给出单独的设置:
function test() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('Tracking');
var slicers = sheet.getSlicers();
var rowValue = sheet.getLastRow();
var newRange = sheet.getRange('A3:X'+rowValue); //new range
for (i=0; i<slicers.length; i++){
slicers[i].remove();
}
//Slicers to column A and D
destinationSheet.insertSlicer(newRange, 2, 1); // choose anchorRowPos and anchorColPos
destinationSheet.insertSlicer(newRange, 2, 4);
//Get new slicers
var slicers = destinationSheet.getSlicers();
var filterCriteria = SpreadsheetApp.newFilterCriteria().setHiddenValues(['']).build();
slicers[0].setColumnFilterCriteria(1, filterCriteria);
slicers[0].setTitle('Title1');
var filterCriteria2 = SpreadsheetApp.newFilterCriteria().setHiddenValues(['1']).build();
slicers[1].setColumnFilterCriteria(24, filterCriteria2);
slicers[1].setTitle('Title2');
}https://stackoverflow.com/questions/66357977
复制相似问题