GoogleAppsScript

【GAS】シートを取得する方法(アクティブ,シート名,一括処理)

Google Apps Script(GAS)を駆使してスプレッドシートのシートを取得する方法を解説します。

アクティブなシートの取得から特定のシート名を指定してアクセスする方法、そしてすべてのシートを一括処理するテクニックまで、幅広い手法を分かりやすく解説します。

シートの取得の前に、スプレッドシート自体の取得をする必要があります。

スプレッドシートの特定の仕方が分からない方は、下記の記事もご覧になることをおすすめします。

【GAS】指定のスプレッドシートを開く方法(ID,URL,ファイルで特定)Google Apps Script(GAS)を使用してスプレッドシートを開くメソッドを紹介します。アクティブなスプレッドシートの取得から特定のIDやURL、ファイルを使用したスプレッドシートの開き方まで、効果的な方法を解説します。...

getActiveSheet():アクティブなシートを取得する

getActiveSheet() 関数は、アクティブなスプレッドシート内で現在表示されているシート(タブ)を取得します。アクティブなシートは、ユーザーが最後にクリックしているシートです。

具体例

// アクティブなシートを取得
let activeSheet = SpreadsheetApp.getActiveSheet();

このスクリプトでは、getActiveSheet() 関数を使用してアクティブなシートを取得し、変数に格納しています。アクティブなシートは、ユーザーが最後に操作したシートなので、そのまま操作を行うことができます。

getActiveSheet()の注意点

  • ユーザーの操作に依存: 最後に操作したシートを取得するため、操作中のシートに依存します。
  • スクリプトのタイミング: スクリプト実行時のアクティブなシートを取得するため、後の処理でシートが変わる可能性があります。
  • 複数ユーザー: 複数ユーザーが同時に操作する場合、異なるシートが取得される可能性があります。

getActiveSheet()とgetActiveSpreadsheet()との違い

getActiveSpreadsheet() はスプレッドシート全体を取得し、getActiveSheet() はアクティブなシート(タブ)を取得する関数です。

前者はスプレッドシート全体の操作に使用され、後者は特定のシート内のデータ操作に使用されます。どちらも現在の状態に応じて使い分けることで、スプレッドシートを効果的に操作できるようになります。

【GAS】指定のスプレッドシートを開く方法(ID,URL,ファイルで特定)Google Apps Script(GAS)を使用してスプレッドシートを開くメソッドを紹介します。アクティブなスプレッドシートの取得から特定のIDやURL、ファイルを使用したスプレッドシートの開き方まで、効果的な方法を解説します。...
ガスシカオ

アクティブなシートを素早く取得して、その内容を操作しましょう。

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では、アクティブなシートの内容を操作したり、特定のデータ処理を行ったり、複数のシートに一斉に処理を適用したりすることで、効率的な作業フローを築くことが可能です。

実現したい機能と運用環境に合わせて、関数を使い分けて、保守性の高いスクリプトを作成していきましょう!