Googleスプレッドシートを使ってデータを管理していると、特定の行を一時的に非表示にして見やすくしたい場面があります。
そこで、非表示やグループ化を利用してワンクリックで行の表示・非表示を切り替えるカスタムメニューを作成する方法を紹介します。
行・列を一時的に非表示にする方法
非表示にしたい行、または列を選択
10行目から20行目の行を非表示にする場合、行番号「1」から「10」までをドラッグして選択します。

右クリックして「行を非表示」を選択
選択した行のいずれかで右クリックし、「行を非表示」を選択します。これで1~10行目が非表示になります。

非表示行を再表示する
非表示にした行の直上と直下にある行の間に、上下矢印のアイコンが表示されます。このアイコンをクリックすると、非表示にした行が再び表示されます。

行・列をグループ化する
先程の方法はワンクリックで操作が出来ません。非表示後に再度表示にする方法を紹介します。ワンクリックで操作が出来ます。
行や列をグループ化する方法は、表示・非表示の切り替えをシンプルに管理できるため、とても便利です。グループ化を使うと、Googleスプレッドシートの標準機能を活用して、クリックだけでまとめて行や列を表示・非表示にできます。
行・列のグループ化の手順
- 行または列を選択する
- グループ化したい行(例えば10〜20行)または列(A〜C列など)をドラッグして選択します。
- 右クリックメニューで「グループ化」を選択
- 選択した行または列の上で右クリックし、行での他の操作項目を表示↠「行〇〇~〇〇をグループ化」または「列をグループ化」を選択します。

- プラス/マイナスのボタンが表示される
- グループ化が完了すると、選択した範囲の左側または上部にプラス(
+)やマイナス(-)のボタンが表示されます。プラス(+)を押すと開閉。マイナス(-)を押すと非表示になります。
- グループ化が完了すると、選択した範囲の左側または上部にプラス(
予備知識、Google Apps Scriptの基本操作
ここからは、Google Apps Script で行や列の表示・非表示などの操作方法を中心とした内容ですので、正直、読まなくても問題ありません。「こんな作業もあるんだな」くらいに思っていただき、暇なときに目を通していただければ幸いです。
Google Apps Scriptを使うと、スプレッドシートの機能を拡張して、自動化やカスタム機能の追加が可能です。ここでは、Apps Scriptの開き方と簡単な操作手順を紹介します。
スクリプトエディタを開く
- スプレッドシート上部のメニューから「拡張機能」 > 「Apps Script」を選択します。これでスクリプトエディタが新しいタブで開きます。
新しいスクリプトファイルを作成
- スクリプトエディタが開いたら、デフォルトで「Code.gs」というファイルが表示されます。このファイルにコードを追加していきます。
スクリプトを入力
- 作成したい機能(今回は行の表示・非表示)のスクリプトをエディタに入力します。コードを入力した後、「保存」アイコンをクリックして名前をつけて保存します。
スクリプトを実行
- 作成したスクリプトを試すには、「実行」ボタンをクリックします。
- 初めて実行する場合、承認が必要になります。「このプロジェクトがあなたのデータへのアクセス権限を必要としています。」と尋ねられます。権限を確認をクリック。
- アカウントの選択をします。該当のgoogleアカウントを選択してください。
- 【このアプリは Google で確認されていません。】【アプリが、Google アカウントのプライベートな情報へのアクセスを求めています。デベロッパー(xxxx@xxxx.mail)と Google によって確認されるまで、このアプリを使用しないでください。】詳細をクリック。
- 【リスクを理解し、デベロッパー(xxxx@xxxx.mail)を信頼できる場合のみ、続行してください。】無題のプロジェクト(安全ではないページ)に移動をクリック。
- 【無題のプロジェクト が Google アカウントへのアクセスをリクエストしています】以下詳細が書いてあります。良ければ、許可をクリック。
- コードにミスがなければ、実行ログに実行完了と表示されます。
許可をまた拒否したい時は?
こちらは色々と応用もききますので併せて記述いたします。ちなみに何故わざわざ許可をしないかいけないかというと、サードパーティー制のアプリだからです。
「サードパーティ」とは、一般的に「第三者」を意味し、あるサービスやシステムの提供者(第一者)やその利用者(第二者)ではない、外部の関係者を指します。
Googleアカウントの場合、Google自身が提供するアプリ(例:GmailやGoogleカレンダー)に対して、外部の開発者が提供するアプリやサービスを「サードパーティ」と呼びます。
Google Apps ScriptはGoogleスプレッドシートに付随している機能です。ただし、Googleが提供する標準機能と違い、「ユーザーがカスタムで作成・実行するコード」として扱われるため、サードパーティのスクリプトのようにアクセス権の確認が必要になります。
全てのアクセス権を削除
- 自分のGoogleアカウント設定ページに移動します。セキュリティーに移動します。リンクは直接セキュリティーに移動できるリンクにしています。
- サードパーティ製のアプリとサービスへの接続の、「他xx件」又は「全ての接続を表示」をクリック
- 一覧から、先程保存したプロジェクト名を探します。クリックします。
- 詳細を表示から、プロジェクトの詳細を確認する事が出来ます。
- 「全てのアクセス権を削除」をクリックします。
- 最後に削除するとアクセスできなくなる詳細が書いてあるので読んで頂き、「確認」をクリックするとアクセス権が削除されます。
行を非表示にするためのスクリプト作成
まずは、非表示にします。
アクティブなシート
Googleスプレッドシート内で現在選択されているシートのことを指します。Google Apps Scriptでは、getActiveSheet()を使うと、今開いているシート(タブ)にアクセスすることができます。そして、指定した範囲が非表示になります。
function toggleRowsVisibility() {
const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
const startRow = 1; // 非表示にしたい開始行
const endRow = 10; // 非表示にしたい終了行
// 指定した範囲を一括で非表示にする
sheet.hideRows(startRow, endRow - startRow + 1);
}JavaScript行を表示にするためのスクリプト作成
次は表示します。
シートを指定する
アクティブなシート(現在開いているシート)ではなく、特定の名前やIDを持つシートに対して処理を行います。これは、複数のシートがあるスプレッドシート内で、特定のシートだけにデータを操作したいときに役立ちます。
まず、openById()を使い特定のスプレッドシートをIDで開きます。次に特定のシートを指定するには、getSheetByName()を使用して、シート名で指定する方法が一般的です。
function toggleRowsVisibility() {
const spreadsheet = SpreadsheetApp.openById('スプレッドシートのID');
const sheet = spreadsheet.getSheetByName('シート名'); // シート名を指定
const startRow = 1; // 非表示にしたい開始行
const endRow = 10; // 非表示にしたい終了行
// 指定した範囲を一括で表示にする
sheet.showRows(startRow, endRow - startRow + 1);
}JavaScriptスプレッドシートのURl、ID
例えば下記のスプレッドシートの例です。
https://docs.google.com/spreadsheets/d/spreadsheetID/edit?gid=00000000#gid=11111111JavaScripthttps://docs.google.com/spreadsheets/d/:Googleスプレッドシートのドキュメントにアクセスするための共通のURL部分です。
spreadsheetID:ここにスプレッドシートのIDがはいります。このIDを使って特定のスプレッドシートにアクセスできます。
/editは編集モードで開く。?gid=00000000はgidはシート(タブ)の固有のIDを示します。#gid=11111111から始まる部分もシートのIDを指しています。特定のシートにスクロールして表示させるための補助的な役割をしています。
getSheetByName('シート名'); // シート名を指定
getSheetById('シートID'); // シートIDを指定Bash表示、非表示にするためのスクリプト作成
ここで表示、非表示が出来るようにします。表示・非表示を切り替えられるコードを作成するには、まず対象の行が現在表示されているか非表示かを確認し、それに応じて表示・非表示を切り替えるコードにします。以下のコードでは、行1〜10の表示・非表示を切り替えることができます。
function toggleRowsVisibility() {
const spreadsheet = SpreadsheetApp.openById('スプレッドシートのID');
const sheet = spreadsheet.getSheetByName('シート名'); // シート名を指定
const startRow = 1; // 非表示にしたい開始行
const endRow = 10; // 非表示にしたい終了行
// 指定した範囲の最初の行の状態をチェックして、まとめて表示・非表示を切り替える
if (sheet.isRowHiddenByUser(startRow)) {
sheet.showRows(startRow, endRow - startRow + 1); // まとめて表示
} else {
sheet.hideRows(startRow, endRow - startRow + 1); // まとめて非表示
}
}JavaScriptコードの説明
- isRowHiddenByUser(startRow)
- startRowが現在非表示かどうかをチェックします。
- startRowが非表示の場合、showRowsで範囲を表示します。表示されている場合はhideRowsを使い、指定範囲を一括で非表示にします。
- トグル操作
- この関数を実行するたびに、指定した範囲(1〜10行)の行が現在の状態に応じて表示または非表示に切り替わります。
使用方法
- この関数をボタンに割り当てたり、直接スクリプトエディタから実行すると、指定した範囲の行をワンクリックで表示・非表示に切り替えることができます。
ボタンを作成して、スクリプトを割り当てる
まずは、メニューから「挿入」 > 「図形描画」を選択して、図形を作成します。
図形を配置したら、図形の右側に3つの点が書かれているので、クリックします。
スクリプトを割り当てをクリック。
こちらはプロジェクト名ではなく、関数名を記述します。上記のコードですと、関数名toggleRowsVisibilityです。
※こちらのfunction toggleRowsVisibility() {のtoggleRowsVisibilityの部分は決まった関数名ではなく、ただ単に今回私が命名しただけという認識です。abcやokとかでもいいのです。つけることが出来ない名前もありますが、基本は分かりやすい名前を付けるというルールです。
確定をクリックすると実行されます。
まとめ
ここまで紹介してきた行・列の一時的な非表示方法やグループ化に加えて、Google Apps Scriptを利用することで、ボタン一つでまとめて表示・非表示を切り替えられるなど、より高度な自動化が可能になります。
しかし、スクリプトによる運用は設定やメンテナンスの手間も伴うため、事足りる作業であればスクリプトはわざわざ使用する必要はなく、手軽さを求める場合は最初に解説したグループ化や非表示機能を活用すると効率的です。
最終的には、作業内容や個人、チーム構成に関わらず最適な方法を選択し、スプレッドシートの管理をよりスムーズにしていただければ幸いです。ぜひ今回ご紹介した手法を参考に、目的に合った運用方法を探ってみてください。新たなシステム導入や外部サービス連携のきっかけにもなるでしょう。


コメント