GASでスプレッドシートのシート操作まとめ(取得/作成/複製/削除/移動/保護)

Google Apps Script(GAS)を使って、スプレッドシートのシートを操作する機会が多いです。

そこで、GASでシートを取得したり、シートの新規作成、既存シートのコピー・削除や移動、シート保護などのシート操作の方法をまとめてみました。

GASによるスプレッドシートのシートを操作する一通りのやり方を網羅しています。

GASでスプレッドシートのシート取得(読み込み)

まず、Google Apps Script(GAS)でスプレッドシートを扱うためには、シートを取得するのが第一歩です。

GASでスプレッドシートのシートを取得(読み込み)方法は以下の記事で詳しく解説しています。

Google Apps Script(GAS)でスプレッドシートのシートを読み込む方法

スプレッドシートに紐づくコンテナバインド型のスクリプトの場合、getActiveSheet()メソッドでアクティブなシートを取得できます。

取得するシートを指定したい場合はgetSheetByName(“シート名”)でシートの名称を指定して取得します。

さらに、スプレッドシートに存在するシートをすべて取得したい場合はgetSheets()メソッドで配列データとしてシートを取得しましょう。

GASによるシートの新規作成(追加挿入)

GASではスプレッドシートに紐づくシートを新規作成することもできます。

毎日のレポートデータをGASで生成し、スプレッドシート上で保管する際は日別に新しく作成して、蓄積していくと便利です。

スプレッドシートのシートを新規作成して挿入する方法は以下の記事で解説しています。

GASでスプレッドシートの新しいシートを追加・挿入する方法(insertSheetメソッド)

GASのSpreadsheetオブジェクトでinsertSheet()メソッドを実行することで、スプレッドシートに新しいシートを作成することができます。

シート新規作成時は名前はデフォルトの「シート○」(○は番号)で生成されるので、作成後はsetNameメソッドで名前を変更するのがおすすめです。

スプレッドシートにあるシートをGASで複製

スプレッドシートにあるシートに対し処理する際に、既存のシートを複製したいケースもあります。

既存の雛形・テンプレートとなるシートをコピーして、そこから値を入力する場合や、既存のシートのバックアップとしてを複製しておき、シートのデータを書き換える場合です。

Google Apps Script(GAS)では、スプレッドシートに存在するシートの複製を作成することもできます。

GASでシートをコピーする方法を以下の記事でまとめています。

GASでスプレッドシートのシートをコピーする方法(copyToメソッド)

スプレッドシートのシートを複製するには、sheetオブジェクトでcopyTo(Spreadsheet)メソッドを実行します。

引数でシートが属するスプレッドシートを指定した場合、スプレッドシート内で複製が作られます。

異なるスプレッドシートを指定した場合でも、引数に指定したスプレッドシート上で、シートの複製が生成されます。

同じスプレッドシート内で複製を作成すると、シート枚数が増えてしまうので、バックアップ用のスプレッドシートを用意して、そこにシートをコピーして蓄積していくといったGASの活用方法があります。

GASでスプレッドシートの既存のシートを削除

スプレッドシートのシートを削除するといった操作もGoogle Apps Scriptで実現可能です。

Google Apps Script(GAS)でスプレッドシートのシートを削除する方法(deleteSheet)

GASに用意されているdeleteSheet(sheet)メソッドで引数に指定したシートを削除することができます。

シートを削除する場合は、SpreadsheetオブジェクトでdeleteSheetメソッドを実行し、削除したいシートを引数指定するのがポイントです。

deleteSheetメソッドを応用して、スプレッドシートに存在するシートを1つだけ残して削除するGASスクリプトも用意しました。

スプレッドシートの全てのシートを一括削除する方法(Google Apps Script)

スプレッドシートにシートがたくさんある場合、手動で削除するのは時間がかかり面倒です。

上記の記事に掲載しているスクリプトを使用すれば、指定したシート以外はすべて一括削除でき、削除作業を自動化して負担軽減できます。

GASでシートを移動して順番を変更

スプレッドシートのシートには順番があります。

シート枚数が多いと、後ろの方にあるシートを閲覧するには、シート送りをする回数が増え、時間がかかります。

通常のスプレッドシート操作では、シートをドラックして順番を変更しますが、GASでも順番を変更するコードがあります。

GASでのスプレッドシートのシートの位置を移動、順番変更する方法は以下の記事で解説しています。

GASでスプレッドシートのシートの順番を移動・変更する方法(moveActiveSheet)

moveActiveSheet(移動番号)メソッドを実行すれば、引数に指定した位置にアクティブなシートを移動できます。

シード移動するmoveActiveSheetメソッドは、アクティブな状態になっているシートに対し、移動が行われます。

そのため、事前に移動したいスプレッドシートのシートをactivateメソッドでアクティブ化が必要です。

上記のGASシート移動の解説記事では、新規作成したシートを先頭に移動させるサンプルコードや、既存のシートの順番を逆順に並べ替えるサンプルコードを紹介しています。

GASでスプレッドシートのシートを保護

スプレッドシートは複数のユーザーと共同編集して利用するケースが多く、シート上にある数値を誤って削除してしまうケースもあります。

そこで、他のユーザーに操作してほしくないシートには保護をかけることができます。

シートの保護は、Google Apps Script(GAS)でも実行可能です。

GASでスプレッドシートのセルやシートを保護する方法(protectメソッド)

GASでシート保護するには、sheetオブジェクトでprotect()メソッドを実行します。

ただ、protectメソッドを実行しただけでは編集可能なユーザー全員にシート保護がかかるため、保護の意味をなしません。

そこで、シート保護オブジェクト(protection)に対し、removeEditors()を実行して、編集ユーザーを制限することが必要です。

その他にも、シート編集時に警告メッセージを出す保護設定もGASのコードで実行することができます。

スプレッドシートからGASのコードを実行(番外編)

シート操作とは少し異なりますが、スプレッドシートからGASのコードを実行する方法も紹介します。

GASで書いたスクリプトをスプレッドシートのシートから実行するには、図形描画したボタンを用意するのが一般的です。

スプレッドシートのメニューで「挿入>図形描画」でボタンを用意したあと、「スクリプトを割り当て」で実行したいGASの関数名を指定します。

図形描画したボタンをクリックすると、設定完了したGASスクリプトの関数が実行されます。

※スプレッドシートの図形描画したボタンでGASを実行する方法は、以下の記事で詳しく解説しています。

スプレッドシート上の図形描画したボタンでGoogle Apps Script(GAS)を実行する方法

スプレッドシートで図形描画したボタンによるGAS実行は、ユーザーが実行したいタイミングで実行可能です。

まとめ・終わりに

今回、Google Apps Script(GAS)によるスプレッドシートのシート操作方法を紹介しました。

GASとスプレッドシートと相性がよいサービスなので、シートを操作する処理は利用頻度が高いです。

  1. シートを取得する
  2. 新しいシートを作成する
  3. シートを複製する
  4. シートを削除する
  5. シートの位置を移動する
  6. シートを保護する

といった色々なシート操作をGASのコードで実行することができます。

GASで行うスプレッドシートのシート操作は一通り網羅しているので、ぜひGASでのシート操作したい際に参考にしてください。