首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果前3列是隐藏的google,则迭代地隐藏下面的3列

如果前3列是隐藏的google,则迭代地隐藏下面的3列
EN

Stack Overflow用户
提问于 2020-11-19 17:57:06
回答 3查看 80关注 0票数 1

从第9列开始,我想隐藏接下来的3列,这是我使用以下脚本成功完成的,它将隐藏第9、10和11列(I、J和K)。

代码语言:javascript
复制
   function hideEvent() {
      var ss = SpreadsheetApp.getActiveSpreadsheet();
    var sheet = ss.getSheets()[0];
    sheet.hideColumns(9, 3);
    }

但是我想要做的是隐藏接下来的3列,如果9-11列已经隐藏,如果列12、13、14被隐藏,那么隐藏接下来的3列等等。

我发现您可以使用isColumnHiddenByUser(columnPosition)获取列的隐藏状态,但我不确定如何使用该输出循环和迭代。

任何想法都欢迎。

提前感谢

更新

这就是我要感谢@Marios的地方。我似乎无法理解的一个小问题是,如何每次将start重新分配为+3,以便当这个函数--即start --将引用列15、18、21、24等。

代码语言:javascript
复制
  function Event() {
    const ss = SpreadsheetApp.getActiveSpreadsheet();
    const sheet = ss.getSheets()[0];
    const steps = 3;
    let check = true;
    let start = 12;
    let Ncols = start + 3 ;
  
    while (start<Ncols){
      for(let i=start - steps ; i<start ; i++){
        if (!sheet.isColumnHiddenByUser(i)){
          check = false;
        };
      };
      if(check){  
      sheet.hideColumns(start, steps);
      start = start + 3;
      };
      Logger.log(start); //Produces 15 
      return start;
    };
}

另一个解决方案是计算隐藏列的数量,我认为这些列可能更健壮。作为隐藏列+8将是start

EN

回答 3

Stack Overflow用户

发布于 2020-11-19 23:28:30

解决方案

start

  • 计数隐藏列的数量cnt,然后将此计数用作变量cnt的一部分。

  • Start是columnIndex

  • Steps is numColumns

  • 我将9添加到cnt,因为这是我的开始索引或我想隐藏的第一列

函数Extern外(){ const ()= SpreadsheetApp.getActiveSpreadsheet();const sheet = ss.getSheets();const max = sheet.getMaxColumns();设cnt = 0;for (i = 1;i <= max;i++) { if (sheet.isColumnHiddenByUser(i)) { cnt += 1;} const步骤= 3;}

感谢这条线上的人,谢谢你的帮助

票数 2
EN

Stack Overflow用户

发布于 2020-11-19 19:06:23

这应该可以做到:

代码语言:javascript
复制
function hideEvent() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheets()[0];
  var lastCol = sheet.getLastColumn();
  
  for (var i = lastCol; i > 0;i--){
    if (sheet.isColumnHiddenByUser(i) == true){
      sheet.hideColumns(i+1, 3);
      break;
    }
  }
}
票数 0
EN

Stack Overflow用户

发布于 2020-11-19 19:08:43

解决方案:

我不确定你的逻辑是否合理。如果9-11是隐藏的,那么脚本将隐藏12-14。但是由于12-14现在是隐藏的,脚本将隐藏15-17等等。其他每一列都会被隐藏为多米诺骨牌。您可以做的就是简单地检查列9-11是否隐藏。如果它们是隐藏的,那么隐藏您工作表中的其余列:

代码语言:javascript
复制
 function hideEvent() {
    const ss = SpreadsheetApp.getActiveSpreadsheet();
    const sheet = ss.getSheets()[0];
    const Ncols = sheet.getMaxColumns();
    let check = true;
    
   for (let i=9; i<12; i++){
   if (!sheet.isColumnHiddenByUser(i)){
          check = false;
      };
   if(check){
     sheet.hideColumns(12,Ncols-12)
     }    
   }
 }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64917348

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档