スプレッドシートで作業をしていると、特定の列を非表示にしたい場面がよくあります。手動で毎回非表示にするのは手間がかかりますし、人によって表示状態が変わってしまうこともあります。Apps Scriptを使えば、スクリプトで列の非表示・再表示を自動化できます。この記事では、hideColumnsメソッドとshowColumnsメソッドの使い方を詳しく解説します。これらのメソッドをマスターすれば、作業の効率が大幅に向上します。
【要点】Apps Scriptで列の表示状態を自動制御する方法
- hideColumns(列インデックス, 列数): 指定した列から連続する複数の列を非表示にします。第一引数で開始列番号、第二引数で非表示にする列数を指定します。
- showColumns(列インデックス, 列数): 非表示にした列を再表示します。引数はhideColumnsと同じです。
- トリガーの設定: スクリプトを特定の条件で自動実行できます。時間主導型トリガーやシート変更時トリガーが便利です。
ADVERTISEMENT
目次
hideColumnsメソッドとshowColumnsメソッドの基本
Apps Scriptのスプレッドシートサービスでは、SheetクラスにhideColumnsとshowColumnsというメソッドが用意されています。これらのメソッドは、指定した列を非表示または再表示するためのメソッドです。引数は共通で、第一引数に開始列番号(1始まり)、第二引数に操作対象の列数を指定します。例えば、シートのB列からD列までを非表示にするには、hideColumns(2, 3)と記述します。再表示も同じ引数でshowColumnsを呼び出します。これらのメソッドは、スクリプトからシートの表示状態を自在に制御できるため、業務の自動化に非常に役立ちます。また、複数のシートを扱う場合も、getSheetByNameやgetSheetsを組み合わせて柔軟に操作できます。
列を非表示・再表示する手順
- スクリプトエディタを開く
Googleスプレッドシートのメニューから「拡張機能」>「Apps Script」を選択して、スクリプトエディタを開きます。プロジェクト名を適宜設定します。新しいプロジェクトが作成されます。 - 関数を記述する
スクリプトエディタに以下のような関数を記述します。列の非表示と再表示の関数をそれぞれ用意しておくと便利です。コード例:function hideABCCDE() { var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); sheet.hideColumns(2, 3); } function showABCCDE() { var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); sheet.showColumns(2, 3); }関数名は任意で構いません。列の指定は、必要に応じて引数で変数化することもできます。例えば、シート名を指定したい場合は次のようにします。
function hideBySheetName() { var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('シート1'); sheet.hideColumns(2, 3); } - 関数を実行する
スクリプトエディタのツールバーにある「実行」ボタンをクリックして、関数を選択し実行します。初回実行時には権限の承認が必要です。範囲を確認して承認してください。承認後、正常に実行されれば指定した列が非表示または再表示されます。 - トリガーを設定する(オプション)
同じスクリプトエディタの左側メニューから「トリガー」を開き、「トリガーを追加」をクリックします。時間主導型やスプレッドシートの変更時など、自動実行の条件を設定できます。例えば、毎時間特定の列を非表示にするなどの自動化が可能です。トリガーの設定後は、指定した条件で自動的にスクリプトが実行されます。
使用時の注意点とよくあるトラブル
列インデックスの指定を間違える
hideColumnsやshowColumnsの第一引数は1から始まる列番号です。A列が1、B列が2となります。列数を間違えると、意図しない列が非表示になります。スクリプトを実行する前に、シートの列番号を確認しましょう。また、列数を指定する第二引数は1以上の整数でなければなりません。0以下を指定するとエラーが発生します。
非表示にした列を再表示できない
非表示にした列を再表示するには、同じ範囲を指定してshowColumnsを呼び出します。しかし、一度に非表示にした列の一部だけを再表示したい場合は、追加の処理が必要です。hideColumnsでは一度に連続した列しか非表示にできないため、個別の列を非表示にする場合はhideColumnメソッドを使うと良いでしょう。hideColumnは列インデックスを1つだけ指定します。例えば、B列だけを非表示にするにはhideColumn(2)とします。
シートが保護されているとエラーになる
シートが保護されていると、スクリプトから列の非表示が許可されません。スクリプトの実行前に保護の設定を確認するか、保護を一時的に解除してください。また、スクリプトから保護を管理する方法もありますが、複雑になるので注意が必要です。保護を解除するには、シートの保護設定を手動で変更するか、スクリプト内でProtectionクラスを利用します。
スクリプトの権限承認を忘れる
初回実行時には、スプレッドシートへのアクセス権限を承認する必要があります。承認しないとエラーが発生します。権限の承認画面では、必要な範囲を確認して許可しましょう。また、スクリプトを編集した後も再承認が必要になる場合があります。
ADVERTISEMENT
hideColumnsメソッドとhideColumnメソッドの違い
| 項目 | hideColumns | hideColumn |
|---|---|---|
| 引数 | 開始列番号(1始まり)と列数 | 列インデックスまたはRangeオブジェクト |
| 複数列の操作 | 一度に連続する複数列を非表示 | 1列ずつしか非表示にできない |
| 使用場面 | 特定の範囲を一括で非表示にしたいとき | 個別の列を非表示にしたいとき |
| 再表示 | showColumnsで同じ範囲を指定 | showColumnで列を指定 |
hideColumnsは連続した列を一括で操作するのに適していますが、非連続の列を非表示にするにはhideColumnを複数回呼び出すか、配列で指定するロジックを組む必要があります。用途に応じて使い分けましょう。
この記事では、Apps ScriptのhideColumnsメソッドとshowColumnsメソッドを使って、列の非表示・再表示を自動化する方法を解説しました。これらのメソッドを使えば、定型的な列の表示切り替えをスクリプトで実行でき、作業効率が向上します。さらに、トリガーを設定することで、時間やイベントに応じた自動化も可能です。次は、hideColumnsと併用して行の非表示を行うhideRowsメソッドも試してみると良いでしょう。また、条件に応じて非表示列を動的に変えるスクリプトに発展させることもできます。
ADVERTISEMENT
超解決 第一編集部
疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。
Googleスプレッドシートの人気記事ランキング
- 【Googleスプレッドシート】GOOGLEFINANCE関数で株価・為替を取得!リアルタイムデータの呼び出し
- 【Googleスプレッドシート】印刷範囲を指定して印刷!特定範囲だけPDFや紙に出す手順
- 【Googleスプレッドシート】複合グラフで棒と折れ線を同時表示!2軸グラフの作り方
- 【Googleスプレッドシート】FILTER関数で条件に合う行だけ抽出!数式1つで動的な絞り込み
- 【Googleスプレッドシート】フィルタ表示で他の人の表示を変えずに絞り込み!共有時の使い分け
- 【Googleスプレッドシート】重複データを抽出して表示!COUNTIFと条件付き書式の併用
- 【Googleスプレッドシート】新しいスプレッドシートを作成する3つの方法!ドライブ・URL・テンプレート
- 【Googleスプレッドシート】ARRAYFORMULAで列全体に数式を一括適用!セル分の入力を不要に
- 【Googleスプレッドシート】データ範囲を動的に伸縮させる!INDIRECTと参照範囲のコツ
- 【Googleスプレッドシート】共有解除と権限の取り消し!アクセスを完全に閉じる手順
