Google Apps Script(GAS)を駆使してスプレッドシートのシートを取得する方法を解説します。
アクティブなシートの取得から特定のシート名を指定してアクセスする方法、そしてすべてのシートを一括処理するテクニックまで、幅広い手法を分かりやすく解説します。
シートの取得の前に、スプレッドシート自体の取得をする必要があります。
スプレッドシートの特定の仕方が分からない方は、下記の記事もご覧になることをおすすめします。

getActiveSheet():アクティブなシートを取得する
getActiveSheet() 関数は、アクティブなスプレッドシート内で現在表示されているシート(タブ)を取得します。アクティブなシートは、ユーザーが最後にクリックしているシートです。
具体例
// アクティブなシートを取得
let activeSheet = SpreadsheetApp.getActiveSheet();
このスクリプトでは、getActiveSheet() 関数を使用してアクティブなシートを取得し、変数に格納しています。アクティブなシートは、ユーザーが最後に操作したシートなので、そのまま操作を行うことができます。
getActiveSheet()の注意点
- ユーザーの操作に依存: 最後に操作したシートを取得するため、操作中のシートに依存します。
- スクリプトのタイミング: スクリプト実行時のアクティブなシートを取得するため、後の処理でシートが変わる可能性があります。
- 複数ユーザー: 複数ユーザーが同時に操作する場合、異なるシートが取得される可能性があります。
getActiveSheet()とgetActiveSpreadsheet()との違い
getActiveSpreadsheet() はスプレッドシート全体を取得し、getActiveSheet() はアクティブなシート(タブ)を取得する関数です。
前者はスプレッドシート全体の操作に使用され、後者は特定のシート内のデータ操作に使用されます。どちらも現在の状態に応じて使い分けることで、スプレッドシートを効果的に操作できるようになります。

アクティブなシートを素早く取得して、その内容を操作しましょう。
getSheetByName():指定のシート名のシートを取得する
getSheetByName() 関数は、指定した名前のシートを取得します。シート名を使用して特定のシートに簡単にアクセスするのに役立ちます。
具体例
let sheetName = "Sheet2";
let sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName);
このスクリプトでは、getSheetByName(name) 関数を使用して指定した名前のシートを取得しています。シート名を知っている場合に使用し、特定のシートに直接アクセスできます。
getSheetByName()の注意点
- シート名の一意性: 同じ名前のシートが複数ある場合、最初に見つかったシートが返されます。
- シート名の変更: シート名を変更すると、以前の名前で取得できなくなります。
- 大文字と小文字: 大文字と小文字は区別されます。
- 空白と特殊文字: 正確な文字列を使用してください。
シート名が変更されないように、シートの保護をしておくことをオススメします。
getSheets():スプレッドシートのすべてのシートを取得する
getSheets() 関数は、スプレッドシート内のすべてのシートを配列として取得します。これにより、すべてのシートに対する一括処理が可能となります。
具体例
// すべてのシートを取得
let allSheets = SpreadsheetApp.getActiveSpreadsheet().getSheets();
このスクリプトでは、getSheets() 関数を使用してすべてのシートを取得し、配列に格納しています。これにより、各シートに対して繰り返し処理を行うことができます。
getSheets()の注意点
- シートの順序: シートは配置順に返されます。順序が重要な場合、シートを適切な順序で配置しましょう。
- 非表示シート: 非表示のシートも含まれるため、表示状態を確認する際に注意が必要です。
- ループ処理: 複数のシートに同じ処理を行う際にはループを活用します。
- 効率化: 大量のシートがある場合、必要なシートのみを取得して効率的なスクリプトを作成しましょう。
getSheets()のループ処理の例
function processAllSheets() {
const spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
const allSheets = spreadsheet.getSheets();
for (let i = 0; i < allSheets.length; i++) {
const sheet = allSheets[i];
const sheetName = sheet.getName();
// シートごとに何らかの処理を実行する
Logger.log("シート名: " + sheetName);
// ここに処理内容を記述
}
}
この例では、processAllSheets() という関数を作成しています。この関数では、getSheets() 関数でスプレッドシート内のすべてのシートを取得し、for ループを使用して各シートに対して処理を行っています。
各シートに対して行いたい処理をコメントの部分に記述し、ここではログにシート名を出力しています。
このスクリプトを実行すると、すべてのシートに対して同じ処理が実行されます。シートごとに異なる操作を行いたい場合は、コメント部分に対応する処理を追加してください。
こうしたループ処理を使用することで、getSheets() 関数で取得した複数のシートに対して一括で処理を実行することができます。
getSheets() 関数を使うことで、すべてのシートを一括して処理できる便利な方法です。
最後に
GASでは、アクティブなシートの内容を操作したり、特定のデータ処理を行ったり、複数のシートに一斉に処理を適用したりすることで、効率的な作業フローを築くことが可能です。
実現したい機能と運用環境に合わせて、関数を使い分けて、保守性の高いスクリプトを作成していきましょう!
