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

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

如果前 3 列是隱藏的 Google 表格,則迭代隱藏接下來的 3 列

如果前 3 列是隱藏的 Google 表格,則迭代隱藏接下來的 3 列

冉冉說 2023-08-18 10:05:54
從第 9 列開始,我想隱藏接下來的 3 列,我已使用以下腳本成功完成了這些列,該腳本將隱藏第 9,10 和 11 列(I、J 和 K)   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列等時。  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
查看完整描述

3 回答

?
拉風的咖菲貓

TA貢獻1995條經驗 獲得超2個贊

解決方案

  • 計算隱藏列的數量cnt,然后將該計數用作變量的一部分start

  • Start是列索引

  • Steps是 numColumns

  • 我向 cnt 添加 9,因為這是我的起始索引或我想要隱藏的第一列

function Extra() {

 const ss = SpreadsheetApp.getActiveSpreadsheet();

 const sheet = ss.getSheets()[0];

 const max = sheet.getMaxColumns();

 let cnt = 0;

 for (i = 1; i <= max; i++) {

         if (sheet.isColumnHiddenByUser(i)) {

                 cnt += 1;

         }

 }

 const steps = 3;

 let start = cnt + 9; {

         sheet.hideColumns(start, steps);

         return;

    }

 }

感謝此線程中的各位提供的幫助


查看完整回答
反對 回復 2023-08-18
?
搖曳的薔薇

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

這應該做:


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;

    }

  }

}


查看完整回答
反對 回復 2023-08-18
?
青春有我

TA貢獻1784條經驗 獲得超8個贊

解決方案:

我不確定你的邏輯是否有道理。如果9-11隱藏,則腳本將隱藏12-14。但由于12-14現在被隱藏,腳本將隱藏15-17等等......并且所有其他列將被隱藏為多米諾骨牌。您可以做的就是簡單地檢查列是否9-11被隱藏。如果它們被隱藏,則隱藏工作表中的其余列:


 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)

     }    

   }

 }


查看完整回答
反對 回復 2023-08-18
  • 3 回答
  • 0 關注
  • 152 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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