![見出し画像](https://assets.st-note.com/production/uploads/images/157540652/rectangle_large_type_2_7e7ee5709a73874b15f515fad6896b97.png?width=1200)
#124 Google ドキュメントに「タブ」の概念が追加された
ドキュメントにタブ機能が追加
以下のように案内され、ニュースサイトでも記事にされているように、Google ドキュメントに「タブ」という概念が追加されました。
Google Workspace 環境によっては、実際に機能が提供されるまで少し時間がかかるかもしれませんが、管理者によって機能を ON/OFF できるものではないため、今月中には利用できるようになると思います。
![](https://assets.st-note.com/img/1728620980-78JDNkxO9HmoQ5hsCYzfWK6M.png)
機能が利用できるようになっていると、上図のように画面左側にタブを追加する UI が表示されるようになっているはずです。タブは + ボタンで追加できるだけでなく、下図のように「タブ オプション」によって、名前を変更したり、絵文字を設定したり、できます。
![](https://assets.st-note.com/img/1728621057-VUDL0f3dOpQhtWjlAi1oP9Yr.png)
GAS でのタブの制御
このような機能追加によって、GAS のリファレンスにも ↓ のように「タブの操作」という項目が追加され、タブの操作のために追加された API を説明しています。
これらの API の動作を確認するために、下図のようなドキュメントと GAS のプログラムを作成してみました。
![](https://assets.st-note.com/img/1728622668-6aeFlwoduMkzcLpb2vK0g1ZW.png?width=1200)
https://docs.google.com/document/d/1SP5iDz6sz0AvlPeey3yw_DnGKI4scbX9HEqX1XTpNPQ/template/preview
実際に動作を確認してみたい方は、対象となる Google アカウントでログインした状態で、↑ の URL にアクセスして、ドキュメントをコピーしてください。
プログラムをはじめて実行する際には、アカウントによる確認作業が必要になります。詳しくは以下の投稿をご覧ください。
コピーされたドキュメントには、動作確認のために前述のようにタブが複数作成してあります。API の挙動を確認するための GAS のプログラムなので、わかりやすい UI などは用意しておらず、スクリプトエディタで動作を確認します。
「拡張機能」→「Apps Script」とメニューから選択します。
![](https://assets.st-note.com/img/1728622967-5EUjNCIlQS2H6anuDLF3KqXd.png)
30行たらずの GAS のプログラムが作成してあります。
![](https://assets.st-note.com/img/1728623162-sZY8ea02d9OhbmtK41MDJ6qf.png?width=1200)
プログラムの中には 2つの関数(main と tabsCheck)がありますが、main の方を実行すると、再帰呼び出しによって、ドキュメント内のタブの情報がログとして書き出されます。
![](https://assets.st-note.com/img/1728623386-YgtvwurSFOxsoDiCRXb1cpQT.png?width=1200)
![](https://assets.st-note.com/img/1728623464-O3r4ZcpL6Wsf5ohKwVA1UJiE.png)
タブに対して用意されている API(メソッド)が以下の 6種類なので、上図のようにタブに設定された絵文字は GAS からは制御できません。
asDocumentTab()
タブのコンテンツを DocumentTab として取得します。getChildTabs()
このタブ内にネストされた子タブを取得します。getId()
タブの ID を取得します。getIndex()
親のタブの 0 から始まるインデックスを取得します。getTitle()
タブのタイトルを取得します。getType()
タブの種類を取得します。
作成したプログラムの 20~21行目で、それぞれのタブに「現在時刻」と「タブの名前」を追記しています。
![](https://assets.st-note.com/img/1728623873-Yzuc2SCaVMRl437nmjvkGTUs.png?width=1200)
タブや API を使ってみて感じたこと
今回のプログラムを作成した過程で気付いたことを書き連ねておきます。
これまでに作成されたドキュメントを操作する GAS のプログラムにおいて、タブが追加され、追加されたタブが並び替えられて、getIndex で上位となるようになった場合、意図しない動作になる。
現状では、GAS のプログラム上では「タブ オプション」などの UI で行える以下の操作が行えない。できるのは、現状の取得だけのようだ。
・タブの追加/削除/複製/名前を変更
・タブの並び替え
・タブへの絵文字の設定もともと先頭にあったタブの Id は t.0 となるようで、このタブを指定してドキュメントにアクセスする時は、URL が /edit?tab=t.0 となる。
?tab= の部分を削除すると、t.0 のタブではなく、並び順で先頭(getIndex での戻り値が 0)のタブが表示される。
GAS によってタブの追加が行えないのが、ちょっと残念な感じ… 事前に UI でタブを作っておかないと、それらを処理できません。
ひとまず、既存のドキュメントを扱う GAS のプログラムがあるなら、そのプログラムの処理対象となるドキュメントでは
タブを追加しない
追加したタブの並び替えを行わない
といった点に注意した方がいいと思います。
最後に
今回は、追加されたドキュメントの「タブ」についての API の動作確認を行ったプログラムです。このプログラムそのものが何か役に立つわけではありませんが、何かのアイディアの創発にやくだてばいいな、と思います。😅
最後に、お決まりのフレーズなどを書いておきます。
一応の動作確認は行っているものの、不慮のトラブルによって損害等が生じても、責任はとれませんので予めご了承ください。
コメントを含めても 30行足らずのスクリプトであり、実行に際して目的外の場所への書き出しや収集などは行っていません。
特別なエラー処理は行っていないので、意図しないケースでエラーが発生してしまうかもしれません。どうにもならない場合には、ご連絡ください。
わたし自身にしてみると、このような「スクリプトを作ること」が目的になっているような感じですが、このスクリプトが何かの役に立てば幸いです。
「スキ ♡」を押してもらえると、このようなプログラム作成の励みになります。😍