【GAS】シート一覧を分割して表示する方法

シートの操作

質問対応の一覧

ご訪問ありがとうございます。

Googleシートマスターのひろしです。

前回

【GAS】シート一覧の取得と表示/非表示の設定(Gスプレッドシート)
  • シート一覧を取得できるようになります。
  • シートの表示/非表示を切り替えられるようになります。
  • JavaScriptにおけるforEachやmapさらにfilterの例がわかります。
  • 今回は、とっても価値の高い方法をお伝えします。


    これを知ることであなたは、

    • シート一覧を出力中に途中で改行させることができます。
    • プログラミングにおけるカウンターの使い方がわかります。

    なので、サクッとマスターして

    と答えてあげてください。

    ご質問

    シート一覧を以下のように出力したい。

    動画はこちら

    【GAS】Googleスプレッドシート シート一覧を分割して表示する方法 質問対応

     

    スクリプト

    /**
     * 目次作成
     */
    function getListOfSheets() {
    
    
      const ss = SpreadsheetApp.getActive()//アクティブなシートを取得
      const outputSheet = ss.getSheetByName("管理シート");
    
    
      const url = ss.getUrl();
      const sheets = ss.getSheets(); //すべてのシートを取得
    
    
      const links = [];
    
    
    
      const SHDSPLINE = 10  //シートを表示する行数
      const START_ROW = 2   //表示開始行
    
    
      let outcount = 0
      let outcolumn = 2  //出力開始列
    
    
      sheets.forEach(function (sheet) {
        let name = sheet.getName();
    
    
        if (name !== "管理シート" && name !== "原本") {
          const id = sheet.getSheetId();
          const sheetUrl = `${url}#gid=${id}`;
          const link = `=HYPERLINK("${sheetUrl}","${name}")`;
          links.push([link]);
          outcount++
        }
    
    
        //表示行数のチェック
        if (outcount >= SHDSPLINE) {   //10個集まった
          console.log(links)
          const set = outputSheet.getRange(START_ROW, outcolumn, outcount, 1).setValues(links);
          set.offset(0, 1).insertCheckboxes();
          outcount = 0
          outcolumn += 2
          links.splice(0)   //バッファのクリア
        }
      });
      const set = outputSheet.getRange(START_ROW, outcolumn, outcount, 1).setValues(links);
      set.offset(0, 1).insertCheckboxes();
    
    
    }

     

     

    抜けた番号がある状態で10番代で改行の例

    function testnum() {
      let strnum = '0301'
    
    
      let nnum = Number(strnum)
    
    
      console.log(nnum)
    
    
      const sh = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet()
      const readbuff = sh.getRange("B2:B26").getValues()
    
    
      // console.log(readbuff)
    
    
      let numcnt = 301
      let chkcnt = 0
      let rowcnt = 1
      for (let i = 0; i < readbuff.length; i++) {
    
    
        console.log(Number(readbuff[i]))
    
    
        while (Number(readbuff[i]) != numcnt) {
          chkcnt++
          numcnt++
          if (chkcnt >= 10) {   //1行のチェックする数
            console.log("=== 一列完成 rowcnt++ ======")
            chkcnt = 0
            rowcnt++
            break
          }
        }
        console.log("出力位置 カラム=", rowcnt, " 値=", readbuff[i])
      }
    }

     

     

     

    最後までご覧いただきありがとうございます。

    つぎはこちら

    【GAS】シート一覧からシートの位置を自由自在に変更する方法(Gスプレッドシート)
  • GASでシートの位置を変更する方法がわかります。
  • 管理シートから一気に変更できるようになります。
  • GAS応用の一覧

    コメント

    タイトルとURLをコピーしました