GASで操作するスプレッドシートのワークシートを指定する3つの方法

Google Apps Scriptでスプレッドシートを操作するには、以下のような4つの手順が必要です。

  1. ワークブックを指定
  2. ワークシートを指定
  3. セル範囲を指定
  4. 処理
START
STEP.1
ワークブックを指定

どのスプレッドシートを操作するか指定します。

  • var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  • var spreadsheet = SpreadsheetApp.openById(id);
  • var spreadsheet = SpreadsheetApp.openByUrl(url);
GASで操作するスプレッドシートのワークブックを指定する3つの方法
STEP.2
ワークシートを指定

どのワークシートを操作するか指定します。

  • var sheet = spreadsheet.getActiveSheet();
  • var sheet = spreadsheet.getSheetByName(name);
  • var sheet = spreadsheet.getSheets()[N-1];
GASで操作するスプレッドシートのワークシートを指定する3つの方法
STEP.3
セル範囲を指定

どのセル範囲を操作するか指定します。

  • var range = sheet.getRange(a1Notation);
  • var range = sheet.getRange(row, column [, numrows [, numcolumns]]);
GASのgetRangeメソッドで、セル範囲(単一・複数セル)を指定する方法
STEP.4
処理
値を取得/変更したり、背景色や文字色を取得/変更したり…。好き放題、いろんな処理を実行しましょう!
END

今回の記事では、ステップ2にあたるワークシートを指定する3つの方法について紹介します。

  1. アクティブシート(現在開いているワークシート)を指定する
  2. ワークシート名で指定する
  3. シート番号で指定する
前提条件
function myFunction() {
  var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
}

また、以降の章では、変数spreadsheetに、GASでスプレッドシートを操作するSpreadsheetAppクラスを格納したものとして進めていきます。

ワークシートを指定する3つの方法
// 1.アクティブシートを指定
var sheet = spreadsheet.getActiveSheet();

// 2.シート名で指定
var sheet = spreadsheet.getSheetByName("ワークシート名");

// 3.シート番号で指定
var sheetNum = 1; // 左から1番目のシート
var sheet = spreadsheet.spreadsheet.getSheets()[sheetNum-1];

アクティブシートを指定|getActiveSheet()

var sheet = spreadsheet.getActiveSheet();

いま直接開いているスプレッドシートのワークシートを操作したいときに使うのが、SpreadsheetAppクラスのgetActiveSheetメソッドです。

メソッド 戻り値の型 説明
Spreadsheet.getActiveSheet() Sheet アクティブなSheetオブジェクトを返す
注意
シート数が複数枚あると、開いているワークシートに応じて、アクティブシートがころころ変更されます。

getActiveSheetメソッドは、ワークブック内にシートが1枚だけしか存在しない状況で使うのがベターでしょう。

サンプルコード

function myFunction() {
  var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  
  // アクティブシートを指定する
  var sheet = spreadsheet.getActiveSheet();
  Logger.log(sheet.getSheetName()); // シート2
}
メソッド 戻り値の型 説明
Spreadsheet.getSheetName() String 選択しているシート名を返す

シート名で指定|getSheetByName(name)

var sheet = spreadsheet.getSheetByName(name);

ワークシート名を直接指定して、スプレッドシートを操作したいときに使うのが、SpreadsheetApp.SpreadsheetクラスのgetSheetByNameメソッドです。

メソッド 戻り値の型 説明
Spreadsheet.getSheetByName(name) Sheet 指定したワークシート名のSheetオブジェクトを返す

サンプルコード

function myFunction() {
  var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  
  // シート名で指定する
  var sheet = spreadsheet.getSheetByName("シート2");
  Logger.log(sheet.getSheetName()); // シート2
}

シート番号で指定|getSheets()[N-1]

var sheet = spreadsheet.getSheets()[N-1];

シート番号を指定して、スプレッドシートを操作したいときに使うのが、SpreadsheetApp.SpreadsheetクラスのgetSheetsメソッドです。

メソッド 戻り値の型 説明
Spreadsheet.getSheets() Sheet[] ワークブック内のすべてのSheetオブジェクトを1次元配列で返す

左から1番目のワークシートを指定したい場合は、spreadsheet.getSheets()[0]とします。

サンプルコード

function myFunction() {
  var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  
  // シート番号で指定する
  var sheetNum = 2;
  var sheet = spreadsheet.getSheets()[sheetNum-1];
  Logger.log(sheet.getSheetName()); // シート2
}

さいごに

今回は、GASでワークシートを指定する3つの方法について紹介しました。

  1. アクティブシート(現在開いているワークシート)を指定する
  2. ワークシート名で指定する
  3. シート番号で指定する

個人的には、2番目のワークシート名で指定するgetSheetByNameメソッドを多用しています。

ケースバイケースで使い分けましょう〜!それでは