[英]Google Apps Script - Is it possible to update a protected range from a script?
[英]Google Apps Script: How to update range on several slicers at once?
問題:無法使用 Google 腳本更新兩個或更多切片器的范圍
信息:工作表包含兩個切片器
代碼:
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.
怎么了? 如果我只使用工作表和代碼中的一個切片器,則該代碼有效。
非常感謝您的幫助!
我不認為你可以編輯他們的范圍。 但是您可能可以使用新范圍刪除並再次創建它們:
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
}
}
然后您可以根據需要修改其設置的 rest。 希望這可以幫助。
非常感謝你的幫助。 它最終幫助我讓它發揮作用。
這是我最終得到的代碼,它在 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');
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.