Google apps script 谷歌应用程序脚本:如何一次更新多个切片器上的范围?

Google apps script 谷歌应用程序脚本:如何一次更新多个切片器上的范围?,google-apps-script,Google Apps Script,问题:无法使用Google脚本更新两个或多个切片器的范围 信息:工作表包含两个切片器 代码: 怎么了?如果我只在工作表和代码中使用一个切片器,代码就可以工作 提前非常感谢您的帮助 我认为你无法编辑它们的范围。 但您可能会删除它们,然后使用新的系列重新创建它们: function test(){ var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet = ss.getSheetByName('Tracking'); var

问题:无法使用Google脚本更新两个或多个切片器的范围

信息:工作表包含两个切片器

代码:

怎么了?如果我只在工作表和代码中使用一个切片器,代码就可以工作


提前非常感谢您的帮助

我认为你无法编辑它们的范围。 但您可能会删除它们,然后使用新的系列重新创建它们:

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
  }

}
功能测试(){
var ss=SpreadsheetApp.getActiveSpreadsheet();
var sheet=ss.getSheetByName(“跟踪”);
var slicers=sheet.getSlicers();
var newRange=sheet.getRange('A3:A160');//您的新范围
var-slicersCount=0;

对于(i=0;i非常感谢你的帮助!它最终帮助我使它工作起来

这是我最后得到的代码,在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');
}
功能测试(){
var ss=SpreadsheetApp.getActiveSpreadsheet();
var sheet=ss.getSheetByName(“跟踪”);
var slicers=sheet.getSlicers();
var rowValue=sheet.getLastRow();
var newRange=sheet.getRange('A3:X'+rowValue);//新范围

对于(i=0;iI不太使用切片器,但在我看来getSlicers()返回一个平面数组,那么这个语法
slicers[0,1]
应该做什么呢?谢谢你的评论。setRange函数要求我指向数组中的单个元素。欢迎@RasmusHvarregaard!
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');
}