【GAS】複数のスプレッドシートのシート一覧を作成する

シートの操作

GAS シートの操作一覧

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

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

前回

【GAS】リンク付きシート一覧で非表示のシートを無視する方法
  • GASでシートが非表示かどうかを判別する方法がわかります。
  • 2次元バッファに格納する方法がわかります。
  • 今回は、とっても価値の高い方法をお伝えします。


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

    • スプレッドシートIDからシート一覧を作成できます。
    • 複数のスプレッドシートのシート一覧を作成できます。

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

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

     

    今回は、上記記事のスクリプトを元に複数のスプレッドシートに
    対応するように変更していきます。

     

     

    動画はこちら

    シートはこちら


    *クリックすることでシートが開きます。(コピーしてお使いください)

    スクリプト

    /**
     * 複数スプレッドシートIDからスプレッドシートの一覧を取得する
     */
    function getmultihyperlink() {
    
    
      const sh = SpreadsheetApp.getActiveSheet()
    
    
      for (let i = 2; i < 10; i++) {
        //2行目からスプレッドシートIDを読み込む
        let id = sh.getRange(i, 1).getValue()
        console.log(id)
        if (id == "")
          break
         makehyperlink(id,i)
      }
    
    
    }
    
    
    
    //リンク付きシート一覧の作成
    function makehyperlink(id, col) {
    
    
      const DSP_ROW = 2 //表示開始行
      const DSP_COL = col //表示する列
    
    
    
      // const ss = SpreadsheetApp.openById("1BfbeQUYsveJmn1kPUV5A1l30HO8lHM3v11I4OptM6Io")
      const ss = SpreadsheetApp.openById(id)
      const url = ss.getUrl()
    
    
    
      const sheets = ss.getSheets() //すべてのシートを取得
    
    
      const hlinks = sheets.map(sheet => {
    
    
        const sheeturl = `${url}#gid=${sheet.getSheetId()}`
        const hlink = `=HYPERLINK("${sheeturl}","${sheet.getName()}")`
    
    
        return ([hlink])
    
    
    
    
      })
      console.log(hlinks)
    
    
      //現在開いているシート
      const nowsheet = SpreadsheetApp.getActiveSheet()
    
    
      nowsheet.getRange(DSP_ROW, DSP_COL, hlinks.length).setValues(hlinks)
    
    
      //スプレッドシート名を表示
      nowsheet.getRange(DSP_ROW - 1, DSP_COL).setValue(ss.getName())
    
    
    }

     

    主な変更箇所

    任意のシートに変更
    ss.getSheetByName("管理シート").getRange(2,6,hlinks.length).setValues(hlinks)

    “管理シート”とシート名で読み込むようになっていたので、

    SpreadsheetApp.getActiveSheet()

    を使用して、現在開いているシートに出力するように変更しました。

     

    スプレッドシートIDから読み込むよう変更

    SpreadsheetApp.openById

    を使用して、スプレッドシートIDから読み込むよう変更しました。

     

    スプレッドシートIDと表示位置(列)を引数にする

    スプレッドシートIDと表示位置(列)引数にしました。

    function makehyperlink(id, col) {

     

    スプレッドシートからスプレッドシートIDを読み込む

    スプレッドシートからスプレッドシートIDを読み込む
    シート一覧を出力しさらにループさせるようにしました。

    for (let i = 2; i < 10; i++) {
    //2行目からスプレッドシートIDを読み込む

        let id = sh.getRange(i, 1).getValue()
    console.log(id)
    if (id == "")
    break
    makehyperlink(id,i)
    }

    ご不明点があれば、お気軽にご質問ください。

     

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

    つぎはこちら

    【GAS】メールアドレスの一覧からGmailを送信する方法
  • スプレッドシートの一覧からチェックした行のみ送信する方法がわかります。
  • チェックボックスの条件書式設定など実用的な利用方法が方法がわかります。
  • GAS シートの操作一覧

    コメント

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