GASでスプレッドシートのシート操作まとめ(取得/作成/複製/削除/移動/保護)
Google Apps Script(GAS)を使って、スプレッドシートのシートを操作する機会が多いです。
そこで、GASでシートを取得したり、シートの新規作成、既存シートのコピー・削除や移動、シート保護などのシート操作の方法をまとめてみました。
GASによるスプレッドシートのシートを操作する一通りのやり方を網羅しています。
GASでスプレッドシートのシート取得(読み込み)
まず、Google Apps Script(GAS)でスプレッドシートを扱うためには、シートを取得するのが第一歩です。
GASでスプレッドシートのシートを取得(読み込み)方法は以下の記事で詳しく解説しています。
スプレッドシートに紐づくコンテナバインド型のスクリプトの場合、getActiveSheet()メソッドでアクティブなシートを取得できます。
取得するシートを指定したい場合はgetSheetByName(“シート名")でシートの名称を指定して取得します。
さらに、スプレッドシートに存在するシートをすべて取得したい場合はgetSheets()メソッドで配列データとしてシートを取得しましょう。
GASによるシートの新規作成(追加挿入)
GASではスプレッドシートに紐づくシートを新規作成することもできます。
毎日のレポートデータをGASで生成し、スプレッドシート上で保管する際は日別に新しく作成して、蓄積していくと便利です。
スプレッドシートのシートを新規作成して挿入する方法は以下の記事で解説しています。
GASのSpreadsheetオブジェクトでinsertSheet()メソッドを実行することで、スプレッドシートに新しいシートを作成することができます。
シート新規作成時は名前はデフォルトの「シート○」(○は番号)で生成されるので、作成後はsetNameメソッドで名前を変更するのがおすすめです。
スプレッドシートにあるシートをGASで複製
スプレッドシートにあるシートに対し処理する際に、既存のシートを複製したいケースもあります。
既存の雛形・テンプレートとなるシートをコピーして、そこから値を入力する場合や、既存のシートのバックアップとしてを複製しておき、シートのデータを書き換える場合です。
Google Apps Script(GAS)では、スプレッドシートに存在するシートの複製を作成することもできます。
GASでシートをコピーする方法を以下の記事でまとめています。
スプレッドシートのシートを複製するには、sheetオブジェクトでcopyTo(Spreadsheet)メソッドを実行します。
引数でシートが属するスプレッドシートを指定した場合、スプレッドシート内で複製が作られます。
異なるスプレッドシートを指定した場合でも、引数に指定したスプレッドシート上で、シートの複製が生成されます。
同じスプレッドシート内で複製を作成すると、シート枚数が増えてしまうので、バックアップ用のスプレッドシートを用意して、そこにシートをコピーして蓄積していくといったGASの活用方法があります。
GASでスプレッドシートの既存のシートを削除
スプレッドシートのシートを削除するといった操作もGoogle Apps Scriptで実現可能です。
GASに用意されているdeleteSheet(sheet)メソッドで引数に指定したシートを削除することができます。
シートを削除する場合は、SpreadsheetオブジェクトでdeleteSheetメソッドを実行し、削除したいシートを引数指定するのがポイントです。
deleteSheetメソッドを応用して、スプレッドシートに存在するシートを1つだけ残して削除するGASスクリプトも用意しました。
スプレッドシートにシートがたくさんある場合、手動で削除するのは時間がかかり面倒です。
上記の記事に掲載しているスクリプトを使用すれば、指定したシート以外はすべて一括削除でき、削除作業を自動化して負担軽減できます。
GASでシートを移動して順番を変更
スプレッドシートのシートには順番があります。
シート枚数が多いと、後ろの方にあるシートを閲覧するには、シート送りをする回数が増え、時間がかかります。
通常のスプレッドシート操作では、シートをドラックして順番を変更しますが、GASでも順番を変更するコードがあります。
GASでのスプレッドシートのシートの位置を移動、順番変更する方法は以下の記事で解説しています。
moveActiveSheet(移動番号)メソッドを実行すれば、引数に指定した位置にアクティブなシートを移動できます。
シード移動するmoveActiveSheetメソッドは、アクティブな状態になっているシートに対し、移動が行われます。
そのため、事前に移動したいスプレッドシートのシートをactivateメソッドでアクティブ化が必要です。
上記のGASシート移動の解説記事では、新規作成したシートを先頭に移動させるサンプルコードや、既存のシートの順番を逆順に並べ替えるサンプルコードを紹介しています。
GASでスプレッドシートのシートを保護
スプレッドシートは複数のユーザーと共同編集して利用するケースが多く、シート上にある数値を誤って削除してしまうケースもあります。
そこで、他のユーザーに操作してほしくないシートには保護をかけることができます。
シートの保護は、Google Apps Script(GAS)でも実行可能です。
GASでシート保護するには、sheetオブジェクトでprotect()メソッドを実行します。
ただ、protectメソッドを実行しただけでは編集可能なユーザー全員にシート保護がかかるため、保護の意味をなしません。
そこで、シート保護オブジェクト(protection)に対し、removeEditors()を実行して、編集ユーザーを制限することが必要です。
その他にも、シート編集時に警告メッセージを出す保護設定もGASのコードで実行することができます。
スプレッドシートからGASのコードを実行(番外編)
シート操作とは少し異なりますが、スプレッドシートからGASのコードを実行する方法も紹介します。
GASで書いたスクリプトをスプレッドシートのシートから実行するには、図形描画したボタンを用意するのが一般的です。
スプレッドシートのメニューで「挿入>図形描画」でボタンを用意したあと、「スクリプトを割り当て」で実行したいGASの関数名を指定します。
図形描画したボタンをクリックすると、設定完了したGASスクリプトの関数が実行されます。
※スプレッドシートの図形描画したボタンでGASを実行する方法は、以下の記事で詳しく解説しています。
スプレッドシートで図形描画したボタンによるGAS実行は、ユーザーが実行したいタイミングで実行可能です。
まとめ・終わりに
今回、Google Apps Script(GAS)によるスプレッドシートのシート操作方法を紹介しました。
GASとスプレッドシートと相性がよいサービスなので、シートを操作する処理は利用頻度が高いです。
- シートを取得する
- 新しいシートを作成する
- シートを複製する
- シートを削除する
- シートの位置を移動する
- シートを保護する
といった色々なシート操作をGASのコードで実行することができます。
GASで行うスプレッドシートのシート操作は一通り網羅しているので、ぜひGASでのシート操作したい際に参考にしてください。
ディスカッション
コメント一覧
まだ、コメントがありません