GASでスプレッドシートのシートを非表示にする方法(hideSheetメソッド)

Google Apps Script(GAS)を使うと、スプレッドシートにあるシートを表示しなくする操作も可能です。

GASでシートを非表示する方法と注意点を解説します。

スプレッドシートでシートを非表示

Googleスプレッドシートはエクセル同様の表計算ソフトで、1つスプレッドシートファイルで複数シートを管理することができます。

あるシートは顧客データを管理するシートとして活用し、別のシートは商品データを管理するシート、そしてそれらを組み合わせた売り上げ管理のシートといった使い分けができます。

ただ、スプレッドシートのシートの中には、ユーザーに操作させると困るシートもあります。

そんなときスプレッドシートでは、シートを保護する以外にシートを非表示にすることができます。

シートを非表示にしておけば、意図的に再表示しない限りシートを誤って操作するケースを防止可能です。

GASでシート非表示が可能

Google Apps Script(GAS)では、そうしたスプレッドシートにあるシートを非表示にするといった操作もスクリプトで実現可能です。

あらかじめ存在しているシートの場合は、人間が非表示にすれば事足ります。

しかし、GASスクリプトで挿入したシートを非表示にする場合は、スクリプト処理の中でシート非表示まで行うのが効率的です。

※GASによるスプレッドシートのシート追加・挿入方法

GASのシート非表示はhideSheetメソッド

Google Apps Script(GAS)のスクリプトでスプレッドシートのシートを非表示にするにはhideSheetメソッドを使用します。

Sheet.hideSheet()

あらかじめ非表示にしたいシートオブジェクトを取得し、シートオブジェクトのメソッドでhideSheetを実行します。

実行すると、スプレッドシート上でシートが非表示になります。

シートを非表示にするGASサンプルコード

実際にGoogle Apps Script(GAS)でスプレッドシートのシートを非表示にする方法をサンプルコードで解説します。

上記のスプレッドシートにある「非表示シート」という名前のシートをGASのhideSheetメソッドで非表示にします。

function myFunction() {
  //削除したいスプレッドシートのシートを読み込み
  let mySheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("非表示シート");
  //hideSheetメソッドでシートを非表示
  mySheet.hideSheet();
}

シート非表示のGASサンプルコードを実行すると、スプレッドシートから読み込んだシートが非表示になります。

ただ、シートはスプレッドシート上から削除されたわけではなく、左側にあるシートのアイコンをクリックすると、グレーアウトされています。

非表示シートをクリックすると、再度スプレッドシート上でシートを再表示可能です。

hideSheetメソッドの注意点

Google Apps ScriptのhideSheetメソッドの注意点としては、非表示を実行できる条件があります。

スプレッドシート上でのシート非表示操作でも同様ですが、すべてのシートを非表示にすることはできません。

スプレッドシートで表示されているシートが1個しかない場合には、GASスクリプトでhideSheetメソッドを実行しても、エラーが発生します。

「スプレッドシート内のシートをすべて非表示にすることはできません」とメッセージが出てスクリプト実行が失敗します。

そのため、hideSheetを使ってシート非表示にするGASの自動処理を実装する際は、少なくとも1個のシートは表示するようにしましょう。

まとめ・終わりに

今回、Google Apps Script(GAS)でスプレッドシートのシートを非表示にする方法を紹介しました。

スプレッドシートでも他のユーザーに操作されないようシートを非表示にすることがありますが、GASでシート非表示をスクリプト実行できます。

Sheetオブジェクトに対し、hideSheetメソッドを実行することでスプレッドシートからシートが一覧から表示されなくなります。

GASで自動生成したシートを非表示にしたい場合などにhideSheetメソッドを活用しましょう。