LoginSignup
7
6

More than 5 years have passed since last update.

スプレッドシートにサイドバーで目次を表示する

Posted at

はじめに

スプレッドシートのサイドバーというUIに触れる機会があったので、まとめついでにシートの目次機能を作ってみました。
秘伝のタレ的に運用されているものや、1つ1つのシート名が長いものでも目的のシートにサッと移動できます。

機能

メニュー > 便利機能 > 目次表示 からサイドバーを開くことができる
スクリーンショット 2019-02-17 23.53.46.png
サイドバーのボタンタップで対象のシートをアクティブにすることができる
スクリーンショット 2019-02-18 9.01.39.png
シート名を絞り込み検索できる
スクリーンショット 2019-02-18 9.00.12.png

先にまとめ

ソースをGitHubに上げています。
▽GitHub
https://github.com/panti310/SpreadsheetSidebarTOC
.clasp.jsonファイルにscirptIDを入れてclaspでpushすれば、そのシートで動かすことができます。

解説

ファイル構成

スクリーンショット 2019-02-18 8.20.04.png
jQueryなどのライブラリはクライアント側のみで利用でき、gasはサーバー側のみで利用できます。
最初は認識がごちゃまぜで???となりました。
リクエストを投げる際にgoogle.script.runを使います。

google.script.runについて

サーバー側から配列返す際はJSON.stringifyでJSON文字列に整形し、クライアント側でJSON.parseします。
今回は省きましたが、withFailureHandler(function)で失敗時のハンドリングも可能です。
詳細なエラー内容を返してくれるのでアラートか何かで表示してあげると良いかも。
▽Class google.script.run (Client-side API)
https://developers.google.com/apps-script/guides/html/reference/run

さいごに

使い所が思いつかない

シートの操作をしながら常にサイドバーに表示しておきたいものって何があるんでしょう...進捗表示とか...?
サイドバー同様にhtmlで中身をゴリゴリ書けるDialogも用意されているので、そっちのほうが汎用性高そうです。
▽Dialogs and Sidebars in G Suite Documents
https://developers.google.com/apps-script/guides/dialogs
GitHubからcloneできるのありがたいです。

サイドバーの幅は変更できないっぽい

consoleから要素をいじくれば変更はできるものの、動的に生成する中で変更しようとしてもstyleが上書きされてしまって上手くいきませんでした。
▽stackoverflow - Setting the width of a Google Drive Add-on sidebar doesn't work
https://stackoverflow.com/questions/30145347/setting-the-width-of-a-google-drive-add-on-sidebar-doesnt-work

7
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
6