
【新機能】Googleドキュメント タブ機能で出来ること・出来ないこと・GAS対応
いつもの Googleスプレッドシート・・・ ではなく、久しぶりに Googleドキュメント を取り上げます。
2024年10月7日にリリースされた Googleドキュメントのタブ分け機能。
今回はロールアウトが早くて、既に mirの幾つか持っているアカウントの全てで使えるようになったんで、早速検証してみました。
今後活用していくことになるGoogleドキュメントの「タブ機能」で出来ること・出来ないこと + 使える裏技 + GASでの操作 を まとめています!
Googleドキュメントのタブ機能は、Googleスプレッドシートのスプレッドシート(ブック)とシートの関係性に近い部分もあります。
だから Googleスプレッドシート職人のmirとしては「スプレッドシートならこれ出来るのに」って視点のレビューが多いかもしれません。
また、今回のnoteの出来ること、出来ないこと、裏技、GAS対応は、note公開の 2024年10月13日時点の情報です。今後アップデート等で画面や仕様が変更となる可能性あります。(なるべくアップデートを反映させた加筆・修正をしていきます)
先週の noteは Googleスプレッドシートのあいまいな一致で XLOOKUP関数やVLOOKUP関数が 正しい結果を返してくれない!を解決する *魔法*を紹介しました。
Googleドキュメントのタブ機能の影響は?
今回、新たに実装された Googleドキュメントのタブ機能、簡単に言うと

今までフォルダに複数のドキュメント(ファイル)を入れて管理していた文章を 1つのドキュメントファイル内で タブで分けて管理できるようになった
こんな機能です。
これはページレスモードと同じく Microsoft Wordには無い Googleドキュメントのユニークな機能と言えます。
さらに ページレスモードの場合は、ページレス にするか 従来のページ分けありとするか が選べましたが、タブ機能では 「タブ分けなし」を選ぶことは出来ません。
今後はGoogleドキュメントでは、全ユーザーが、全てのドキュメントで タブ機能を使うことになります。(タブ1つなら従来とほぼ一緒ですが)
新規作成の際はもちろん、既存のドキュメントにも影響する機能なんで、その辺りどうなってるか気になりますね。
確認していきましょう。
新規作成時、作成済みのドキュメントへの影響は?

Googleドキュメントのタブ機能ですが、「2024年10月7日から段階的に展開され、機能が利用可能になるまで最大15日かかる可能性がある」となっています。
さらに 企業や学校などの GoogleWorkspace環境で、管理者側で計画的リリースに設定されている場合は、「2024年10月21日から完全展開され、利用可能になるまで1~3日かかる。」とのこと。
もしかすると、このnoteを公開時は使えない人もいるかもしれません。
タブ機能が使える状態になると、Googleドキュメント を新規作成、または既存のドキュメントを開くと、上の画像のように「タブを使ってドキュメントを整理する」というお知らせが出るのですぐにわかります。
ドキュメントを新規作成すると、自動で タブ 1 という1つ目のタブから始めることになります。
タブ機能が実装される前に作成された ドキュメントは、

このように ドキュメント内の文章は全て 自動で1つ目のタブに格納された状態となっています。
タブの名前はドキュメントのファイル名が そのまま適用されています。
ありがちな整理してない(作成して名前をつけずそのまま放置している)「無題のドキュメント」という名前のドキュメントの場合は、「無題のドキュメント」というタブになっちゃいますw

もともと、この左側の部分は「概要」となっていて、「見出し」に設定した項目が目次のように表示され、クリックすると文章内のその箇所に飛べるリンクとなっていました。

この「見出し」が概要として表示される機能は、タブ機能実装後もそのまま保持されており、タブの中に見出しが格納されます。
見出しが表示されなくなった場合は、概要が「非表示」となっていると思われます。
タブの名前をシングルクリックするか、タブ名の右の ︙(三点リーダー)からメニューを開いて 概要の表示・非表示を切り替えましょう。

タブ機能が適用されても 作成済みのドキュメントはこれまで通り使えますし、普通に文章を作成するのは今までと同じで問題ないってことですね。
もちろん、前にnote書いた Googleドキュメントを Webマニュアルとして活用するネタも基本的にはそのまま使えます。
スマホアプリ版の タブ対応は?
新しいタブ機能の スマホアプリ版の対応はどうなっているか?も見ていきましょう。(2024年10月12日 現在の状況です)

Android版ですが、このように画面下部にタブ切り替えが表示されています。
左と右のボタンであまり階層を気にせず切り替えて表示が可能。このタブ名の箇所をタップすると

このようにタブの一覧表示で階層も確認できますし、ここから好きなタブを選択して切り替えができます。
iOS版(mirは iPad利用ですが iPhoneもほぼ同様と思われます)は、タブ一覧は左下に小さく表示されていて

これをタップすると一覧が拡大表示され、タブ構成を確認し指定したタブへ表示を切り替えできます。

Android版、iOS版 どちらもタブを切り替えての閲覧は問題なさそうです。またタブ内の文章の編集も今までと同じように可能。
ただし現状では、タブの新規作成やコピー、タブの名前や順番を変えるなどはアプリ版からは出来ません。
その他、基本的なことは公式ヘルプでも確認できます。
タブ機能で出来ること

それではタブ機能で なにが出来るか?(メリット)を見ていきましょう。
1. タブごとに名前とアイコン(絵文字)を設定できる

タブには 名前とアイコン(絵文字)を設定することが出来ます。
タブ名の右の ︙(三点リーダー)からメニューを開いて設定するか、タブ名をダブルクリックすることで、名前や絵文字を編集できます。
ちなみに名前を付けていない一つ目のタブであれば、ダブルクリックすると

このように自動で ドキュメントのファイル名がセットされます。
アイコン(絵文字)の方は 、GoogleChatでもお馴染みの絵文字一覧から選択できます。

※GoogleWorkspaceの場合は GoogleChatではカスタムアイコンが使えますが、Googleドキュメントのタブには利用できません

余談ですが、絵文字の中の主に人に関するアイコンで 右下に ◢ がついてるものは、右クリックすることで 性別や髪・肌の色を変更することが出来ます。色々配慮が必要な時代のグローバル仕様って感じですね。
このアイコン(絵文字)とタブ名で、そのタブが何に関するドキュメントなのかが視覚的、直観的にわかるので文章管理に便利に使えそうです。

ちなみに アイコン(絵文字)は別のタブで重複して同じもの使うことが出来ますが、タブ名は同じ名前を使うことは出来ません。
2. タブ単位で複製・削除ができる

これまでも 見出しやセクション区切りで ドキュメント内を テーマごとに分けることは出来ましたが、タブ機能が非常に便利なのは、
タブ単位で複製・削除ができる
という点です。これはタブならではですね。

複製で作成されたタブは、絵文字は同じものが引き継がれ、タブ名は元タブの名前の後ろに 「のコピー」が付いたものになります。
タブの中身の文章はそのまま引き継がれるので、Googleスプレッドシートのシートの複製と同じような感覚で使えそうです。

タブの削除に関しては、三点リーダーから開くメニューから「削除」を選ぶ必要があります。
タブを選択して キーボードの Delteでいけるかな?と思ったら、これでは削除は出来ませんでした。誤操作防止って理由かもしれません。
タブ削除前には、上の画像のような確認のダイアログが表示されます。

また、タブが1つしかない場合は削除が出来ません。つまり1つもタブが無いドキュメントは存在できないってことですね。
これはスプレッドシートと一緒です。
逆にタブは幾つまで作成できるのか?(上限)ですが、これは100個までとなっていました。

3. タブは新規作成、階層管理が出来る(3階層まで)

新しいタブを追加する際は、一番上にある+ボタン(タブを追加)を押すか

メニューの 挿入 > ドキュメントのタブ で行うことができます。
また 新たに追加されたショートカット Shift + F11 を使う方法もあります。

これらで追加したタブは、それぞれ独立したタブとなるんですが、Googleドキュメントのタブは 親タブに紐づくサブタブを作成して階層管理をすることができます。

例えば、タブ1のメニューから「サブタブを追加」を選択すると、タブ1に紐づいた サブタブが生成されます。

タブの階層は3階層まで作成できます。3階層目のタブでは メニューに「サブタブを作成」は表示されません。
階層管理を使うことでより複雑な複数のドキュメントをわかりやすく管理できますね。
なおタブを階層化すると タブ名の左側に タブグループの開閉ボタンが表示されます。

▶ タブグループが閉じている状態(クリックでタブグループが開く)
▼ タブグループが開いている状態(クリックでタブグループが閉じる)
サブタブ(子タブ)のあるタブ(グループ)を削除しようとすると、

このように
サブタブごと全て削除するか?
サブタブは残して 選択しているタブ単体だけ削除するか?
の確認ダイアログが表示されます。これは親切ですね。
Googleドキュメントの「タブ」は、Googleスプレッドシートのシートの「シート」に似ていますが、この階層管理(グループ化)出来るという点が大きな違いと言えます。
4. タブはドラッグ&ドロップで並び替え・移動が出来る

複数タブがある場合、3点リーダーからメニューを開くと タブの移動に関するメニューが表示されます。
上下の移動(並び替え)に加え「指定要素内に移動」で、他のタブのサブタブとすることもできます。
ただ タブの並び替えやサブタブ化は メニューからの操作よりも マウスでドラッグ&ドロップした方が直観的で簡単です。

タブはクリックで掴むことができるので、そのままドラッグすることで並び順を自由に変更できます。

ドラッグしたタブを他のタブに重ねると、見えづらいですがタブの周りが青く縁どりしたような状態になります。ここでタブをドロップ(クリックを離す)と、掴んだタブを移動先のタブの中のサブタブとして移動することができます。
ファイルをフォルダに放り込む要領で簡単ですね。
5. タブ操作も Ctrl+Z(元に戻す)、Ctrl +Y (やり直す)が使える

タブに関する操作も 最強ショートカット Ctrl + Z (元に戻す)と Ctrl + Y(やり直す)が使えます。
タブの並び替えを戻したい時も、並び替え直後であれば Ctrl + Z で簡単に操作を戻せます。
Ctrl +Y の(やり直す)※感覚的には繰り返す は、同じタブの複製を大量に複製する時には便利そうです。

※Googleドキュメントは F4キーでの繰り返しが出来ないので、Ctrl +Y を利用しましょう。
ちなみに タブ機能で 使えそうな ショートカットとしては他に

タブの移動があります。これはスプレッドシートのシートの移動と一緒なんですぐ使える人も多そうですね。
ただPageDownやPageUpキーがないノートパソコンだと
Ctrl + Shirt + Fn + ↓(または ↑)
こんな感じで 4点同時押しなんで結構大変。
6. タブ毎のリンク(ユニークなURL)を取得できる

Googleドキュメント内の タブは、それぞれユニークなURLを持っており、メニューの「リンクをコピー」で そのタブを直接開くURLを取得できます。
タブごとのURLは
https://docs.google.com/document/d/【ドキュメントID】/edit?tab=【タブID】
このような末尾に タブIDを持つ構成になっています。
初期状態の1つ目のタブ1の タブID は t.0

2つ目以降の タブのIDは t. の後ろに 11~12桁程度の 英数字のランダムな組み合わせの文字列が続きます。

GASの部分でも登場しますが、t.xxxxx という t.を含めた文字列が タブIDです。
いままで通り「見出しのリンクをコピー」という機能も使えるので

このドキュメントのこのタブのこの見出し、といった感じで複雑タブで内容も膨大なドキュメント内に対して 指定した場所を直接開く URLも取得できるわけです。

URLに関しては、いままで通りの タブIDの無い
https://docs.google.com/document/d/【ドキュメントID】/edit?
や
https://docs.google.com/document/d/【ドキュメントID】/edit?usp=drive_link
こんなURLだった場合は、ドキュメント内の1番上のタブを開きます。
ということは、スプレッドシートでよくやる
「当月のシートを 1枚目(1番左)にしておく」
と同じように
「当月の議事録のタブを一番上にしておく」
といった運用で、同じリンクから開くタブを 常のその月のタブとする なんてことが出来るわけです。
7. タブ毎に独立したページ設定ができる

Googleドキュメントのタブは、タブ単位でページの設定が出来ます。たとえばタブ毎にA4 縦やA4横サイズ、透かしありなどを設定できます。
もちろん、これらは以前もセクションで区切ればセクション単位で設定することは出来ました。

しかし、タブの場合はセクション分けでは対応できない、タブ毎に用紙サイズを変えたり、タブ単位で ページレス・ページありを切り替える、といったことが出来ます。
ちなみにページレスモードの場合は、こちらも最近Googleドキュメントに実装された新機能 「カバー画像」が使えます。
このタブは印刷する必要があるんで ページありで、このタブはWebで見る専用(下書き)なんでページレスでといった使い分けができますね。
便利そうです!
8. 全タブを串刺しで 検索・置換ができる

個々のタブは独立した形と書きましたが、「検索と置換」では ドキュメント内の すべてのタブを対象に 検索・置換するか、アクティブな(開いている)タブのみを対象に 検索・置換するかを選択できます。
この検索範囲の指定は、スプレッドシートやExcelを使ってるひとなら慣れているかと思います。
開いているシートだけ置換しようと思ったら、全シートが置換されちゃった・・・。ってのはあるあるですねw

この「間違って全タブ置換しちゃった」を防止する為に、Googleドキュメントの場合は「すべてのタブ」を対象に置換を掛ける場合、「本当によろしいですか?」と確認が入る 親切設計になっています。
今までのようにドキュメントがファイル単位でが分かれていたら、複数ドキュメントの一括置換は無理でした。(GASを使えば出来る)
でも、一つのドキュメント内でタブ分けして管理する運用にすれば、例えば 2024年版のドキュメントのファイルをコピーして 全タブを対象に 一括置換で 2024を2025にする。といったことも一発で出来ます。
これも便利に使えそうです。
9. タブ単位、全体を切り替えてコメントを管理できる

「検索と置換」と同じくタブ単位と全タブを切り替えて管理できるのが、コメント機能です。
画像では タブ一覧のタブ名の横に数値が表示されています。
これは、そのタブにある未解決のコメント数 です。

コメントの ✓ をクリックして解決とすれば、この数値は減ります。
また、右上の コメンアイコンをクリックでサイドバーが開き、

このように、どのタブのコメントなのか表示され、コメントをクリックすると コメントされたタブの該当箇所にジャンプします。
さらに上のフィルタで 「すべてのタブ」のコメントを表示するか、「このタブ」(アクティブなタブ)のコメントのみ表示するかを切り替えが出来ます。
もっと使い込めば タブ機能の活用はさらに色々発見されそうですし、なんとなく早々にアップデートして機能拡充もありそうな気もします。
今回はざっと触った感じで出来ること(メリット)をまとめました。
タブ機能で出来ないこと
色々出来ることがあり便利な一方で、タブの独立性が強い為に一括で出来ないことや、今後出来るようになってくれるとよいなって点も見えてきたので触れておきます。
1. すべてのタブを一括で印刷やPDF化が出来ない

まず気になるのがコレ。タブ分けされたGoogleドキュメントは、印刷やPDF、docx形式でエクスポートする場合、開いているタブのみが対象となります。
全タブを一括で、または複数のタブを選択して 印刷したり、エクスポートしたりが出来ません。
うーん、印刷前提の場合はこれがちょっと痛いかも。
Googleスプレッドシートの場合は エクスポートは無理ですが、印刷の際に

現在のシート、ワークブック(全シート)、選択中のセル範囲 のいずれか を指定できます。
残念ながらこれに該当する機能が Googleドキュメントのタブには現状無いってことです。
まぁ、これは タブじゃなくて ドキュメントが別々のファイルだった場合も一緒ですが、せっかく1つのドキュメントに統合されたんで一括処理が出来ると良いですね。
とりあえず 後で印刷する必要があるドキュメントは、あまり細かくタブ分けしちゃうと一括で印刷できなくて困るってことを覚えておきましょう。
→ ただ、これには裏技があって不完全ですが 複数タブを一気通貫で閲覧・印刷・PDF化する方法があります! これは後ほど触れます。
2. 階層構造を維持したままコピー や タブの複数選択ができない

便利そうな タブの階層ですが、残念ながら サブタブが紐づいてるタブを「複製」しても 単体で選択したタブのコピーが作成されるだけで、下に紐づくサブタブごと階層構造を維持したコピーが出来ません。
これ、Googleドライブのフォルダ単位のコピーが出来ない で不満に感じる点と近いかも。
さらにタブは複数選択が出来ないので、複数選択したタブを一気に指定したタブのサブタブとする、一気に選択したタブを削除する、みたいな処理も無理です。
現状ではタブのコピーや並べ替え、移動、削除は 1タブずつコツコツやるしかないです。
3. 他のドキュメントとの タブ単位のやりとりが出来ない
これもGoogleスプレッドシートの感覚で出来たらいいのにって部分。

Googleスプレッドシートはシート単位で 別のスプレドシートにコピーしたり、独立した新しいスプレッドシートを生成 することが出来ます。
Googleドキュメントのタブは、現状では そのドキュメント内に複製するだけで、他のドキュメントコピーしたり、新規のドキュメントとして独立させたり、タブのインポートのような 他のドキュメントから 指定したタブを取り込むといったことが出来ません。
せっかくタブという単位で扱えるようになったんで、これも実装してくれると嬉しいです。
4. その他 Googleドキュメントのタブで出来ないこと
その他の気になる点、気づいた点をまとめました。
・全タブを対象にした目次を生成できない

・一つのタブのドキュメントの最後に「次のタブ」に飛べるリンク等がない
タブのリンクを取得して手動で設置すれば出来なくはない
・タブ単位での共有や保護、非表示といった設定がない
編集権限のある共有メンバーが、複数タブのあるドキュメントの全てのタブを操作できるってのは、ちょっと怖いですよね。タブ毎の権限設定は無理でも、スプレッドシートの「シートの保護」みたいな「タブを保護」機能があると良さそう。
タブ単位で共有は・・・さすがにこれ出来たら神機能か。
・複数タブのドキュメントを Webに公開すると タブ区切りがない一つのページになってしまう

・Googleドライブに入れたWordファイルを開いても タブ機能は使えない

さすがにこれは当たり前か
・テンプレートからタブを作成できない
新しいタブを作成する際にテンプレートを指定してタブ作成といったことが出来ません。

一括印刷や一括エクスポート、そして複数タブを選択しての操作、ドキュメントファイル間での タブの コピー、重要なタブの保護、このあたりの対応を今後期待したいところです。
【裏技】ドキュメント内の 全タブの内容を まとめて 印刷、PDF化する
今回、新機能のレビューだというに いきなり裏技ですw
ほんとファミマガ(ファミリーコンピューターマガジン)の時代から、「ウル技」(ウルテク)が好きだったんで、ついつい機能の抜け穴(ハックネタ)を探しちゃいますw
先ほど タブ分けされたドキュメントは タブ単位でしか 印刷・PDF化が出来ない書きましたが、不完全ではあるものの一気にまとめて閲覧・印刷・PDF化する方法があります!
プレビュー機能を使って 一気通貫で閲覧、印刷、PDF化
複数タブのある ドキュメント内の全てのタブを一発印刷する方法、それはGoogleドライブのプレビュー機能を使う方法です。
プレビュー機能の便利さについては、過去にも noteで触れています。
こんな感じの7つのタブがある ドキュメントを

Googleドライブ上で 対象のドキュメントを右クリックして
アプリで開く > プレビュー

とすると、

こんな感じで 全タブが 合計15ページの連続したドキュメントとして表示されます。
この時タブ毎に1枚、タブ名が入った表紙のようなものが入ります。

タブの切り替えなしでスクロールで全タブの全ページを閲覧できますし、上部に表所の印刷ボタンを押せば
印刷プレビュー画面に飛ぶので

ここから全部を印刷してもいいですし、余計なタブ表紙を除外して選択したページのみを印刷することも出来ます。
また印刷プレビュー画面で、右上のプリンターボタンの隣のダウンロードボタンを押せば

ドキュメント内の全タブをまとめた 1つPDFファイルがダウンロードできます。
印刷プレビューに飛ばずに、Googleドライブから プレビューを開いた状態でダウンロードボタンを押した場合は、

なんと 全タブ内容が 1つの Wordファイルとしてダウンロードできます。
プレビューを経由しているので表示が崩れる可能性やタブ数や各タブのページ数が多いとエラーになる可能性があるので、その点は注意が必要です。
どうしても 全タブ印刷や全タブPDF化が必要な場合は、とりあえずこの方法で対応するのが良さそうです。
近日中にアップデートで 正式にメニューから 全タブ印刷や全タブダウンロードができるようになりそうな気はします。それまでのつなぎネタってことでw
Googleドキュメント タブ機能 のGAS対応
最後に Googleドキュメントの タブ機能のGAS対応について書いておきましょう。
Googleさんは 新機能が実装されても、それに対応するクラスやメソッドが実装されるまでは結構時間がかかることが多いんですが、今回のタブ機能は 全体への影響がある為か、必要最低限のクラスやメソッドは早々に追加されていました。
GAS Googleドキュメントで タブを操作するClass を確認する

まずは気が付いたら追加されていた タブClass です。

こんな感じで 6つのメソッドが用意されています。get系ばっかですねw
タブの新規作成や編集、複製、移動などは、まだGASからは制御できないようです。
気になったのは getType() というタブの種類を取得するメソッド。
タブの種類?? 返り値の TabType を見ると

このように DocumentTab の型の1種類しかありません。
ドキュメントタブ以外のタブが今後実装される予定があるってことでしょうか?
とりあえずは、このTabメソッドを一通り触っておくと良さそうです。
タブ機能に伴う GAS で Googleドキュメントを操作する際の 変更点
もう1カ所リファレンスで見ておいた方が良さそうなのが ドキュメントClass。
冒頭の ↓ この部分
テキスト コンテンツに直接アクセスして変更する Document クラスのメソッド アクティブなタブ(特定のプロパティにバインドされているスクリプト または最初のタブ(アクティブなタブが利用できない場合)に重ねて表示できます。以下に依存するスクリプト: これらのメソッド(getBody() など)は、 getTabs()、次に Tab.asDocumentTab()。
なんか 日本語翻訳するとわかりづらいですが、タブ実装前のコードがエラーとならないように、タブを指定しないスクリプトの場合は、現在開いているアクティブなタブ、もしくは時間トリガー等でアクティブなタブというものが無い場合は1番上のタブを対象に処理するよー。ってことみたいです。
だから、今まで使ってた
function tabTest01() {
const doc = DocumentApp.getActiveDocument();
const body = doc.getBody().getText();
console.log(body);
}
ドキュメントの本文を取得するこんな感じのタブを指定しないコードを実行すると
今開いているタブの本文を取得することになります。


ちなみにドキュメントClassのタブ用に追加されたメソッドは
getActiveTab() ・・・ アクティブなタブを取得
getTab(tabId) ・・・ タブIDで指定してタブを取得
getTabs() ・・・ドキュメント内のタブを配列で取得※
setActiveTab(tabId) ・・・タブIDで指定したタブをアクティブにする
この4つだけっぽいです。うーん、必要最低限。
というわけで、上の本文取得コードを タブ追加後のコードで正しく書くと
function tabTest02() {
const doc = DocumentApp.getActiveDocument();
//アクティブなタブを取得して、さらにドキュメントタブとして取得
const tab = doc.getActiveTab().asDocumentTab();
const body = tab.getBody().getText();
console.log(body);
}
こんな感じになるかなと。
アクティブなタブを取得して、そのタブコンテンツをドキュメントタブとして取得して・・・、そこからbodyを取得して、最後に getText() で本文を取得。なんか手数が増えましたね。
ドキュメント内から特定のタブを指定して処理する場合は、getTab(tabId) を使います。
この タブIDは、URLの edit?tab=【タブID】のタブID部分です。
残念ながらスプレッドシートの getSheetByName() のような タブ名でタブを取得するメソッドは現状ではありません。

function tabTest03() {
const doc = DocumentApp.getActiveDocument();
const TAB_ID = 't.o9580w2f7y07'
//ID指定でタブを取得して、さらにドキュメントタブとして取得
const tab = doc.getTab(TAB_ID).asDocumentTab();
const body = tab.getBody().getText();
console.log(body);
}
このように タブIDを指定すれば、アクティブではない 指定したタブに対する処理が可能です。
同じく指定したタブに表示を切り替えたい(アクティブにしたい)場合は、タブIDを指定して setActiveTab(tabId) を使います。

function tabTest04() {
const doc = DocumentApp.getActiveDocument();
const TAB_ID = 't.o9580w2f7y07'
//タブIDで指定したタブをアクティブにする
doc.setActiveTab(TAB_ID);
}
GAS 全タブの取得は再帰で
タブの階層構造は便利なんですが、この階層構造のせいで GASからタブを全取得して処理しようとすると少し厄介だったりします。
たとえば スプレッドシートの場合は getSheets() メソッドで スプレッドシート(ファイル)から、全シートを配列で取得できます。
配列なんで あとは map や for 文を使うことで シート名やシートIDの一覧を生成したり、全シートに対して同じ処理をすることが可能です。
これは以前、シート名一覧を出力する自作関数を作る回の noteでも触れました。
しかしGoogleドキュメントのタブの場合、Googleスプレッドシートと同じように 全タブ取得が出来ません。
getTabs()メソッドが getSheets()っぽい感じではありますが、
function tabTest05() {
const doc = DocumentApp.getActiveDocument();
const tabs = doc.getTabs();
const tabTitles = tabs.map(tab => tab.getTitle());
console.log(tabTitles);
}
このコードで タブ配列を取得して、mapで各タブから getTitle()でタブ名を取得しても

こんな感じで1階層目のタブしか取得できず、2階層目、3階層目のサブタブが取得できません。
そうなんです。これ タブClassで登場したメソッド getChildTabs() を使って、サブタブがあるか?をチェックしてサブタブがあれば さらに そのタブにサブタブ がないかチェックしてという 再帰処理が必要なんですねー。
Googleドライブで フォルダとファイルの一覧を書き出す、みたいなGASのコードを書いた人なら理解できるかもしれませんが、初心者には厳しいですよね。
ここで再帰の話まですると長くなりそうなんで、mirより先に Googleドキュメントのタブ機能について noteを書かれた ともかつさん が 全タブの情報取得コード入りのサンプルドキュメントを掲載されてるんで紹介しておきます。
mirの書いたコードは、とりあえず タブ名とタブIDわかればいいでしょ!って感じです。(初心者は 片方しかコードコピペしなかったり、実行する関数がわかないってケースがあるんで 一塊にしてます)
function tabTest06(){
const doc = DocumentApp.getActiveDocument();
const tabs = doc.getTabs();
//再帰用関数
const getTabInfo= (tab) =>{
let result = [];
result.push([tab.getTitle(),tab.getId()]);
const childTabs = tab.getChildTabs();
for(childTab of childTabs){
let childTabInfo = getTabInfo(childTab);
result.push(...childTabInfo);
}
return result;
}
const allTabInfo =tabs.reduce((acc,tab) => acc.concat(getTabInfo(tab)),[]);
console.log(allTabInfo);
}

スプレッドシート職人なんで、つい二次元配列にしちゃうw
とりあえず 全タブが取得できれば、タブ名で分岐させながら各タブの文章に対してループ処理は出来ますね。
GASからの操作も徐々に追加されるとは思いますが・・・、あまり期待せずに待ちましょう。
Googleドキュメントのタブ で文章管理をスマートに!
今回は Googleドキュメントの新機能 タブ機能(タブ分け)について書きました。
さくっと軽く書くつもりが、また画像多め・長文の コッテリ、マシマシな 二郎系 noteとなってしまいました・・・。
まぁ、書いてて自分も理解深まったんで良かったですが、少しでも参考になりましたら「スキ」をポチっとお願いします。(ついでにサポートボタンからの投げ銭も喜んでお受けしますw)
面白い新機能ですし、活用してスマートなドキュメント管理を目指していきましょう!
次回はGoogleスプレッドシートネタに戻る予定。
いいなと思ったら応援しよう!
