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

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

  1. アクティブなワークブックを指定する(スクリプトエディタから作成した場合のみ可能)
  2. ワークブックのID(スプレッドシートキー)で指定する
  3. ワークブックのURLで指定する
ワークブックを指定する3つの方法
// 1.アクティブなワークブックを指定
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();

// 2.ワークブックのID(スプレッドシートキー)で指定
var spreadsheet = SpreadsheetApp.openById(id);

// 3.ワークブックのURLで指定
var spreadsheet = SpreadsheetApp.openByUrl(url);

アクティブなワークブックを指定|getActiveSpreadsheet()

var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();

アクティブなスプレッドシートのワークブックを操作したいときに使うのが、SpreadsheetAppクラスのgetActiveSpreadsheetメソッドです。

メソッド 戻り値の型 説明
SpreadsheetApp.getActiveSpreadsheet() Spreadsheet アクティブなSpreadsheetオブジェクトを返す
注意
getActiveSpreadsheetメソッドは、コンテナバインドスクリプト(GASファイルをスクリプトエディタから作成した場合)のみ使用可能です。

したがって、GoogleドライブからGASファイルを作成する『スタンドアロンスクリプト』では、getActiveSpreadsheetメソッドを使用できません。

サンプルコード

function myFunction() {

  // アクティブなワークブックを指定する
  var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  
  Logger.log(spreadsheet.getName()); // スプレッドシートのワークブックを指定する
  Logger.log(spreadsheet.getId());   // 1HrSKyUob7clUrPlJCHTgqqdmDyL_48oNLj_1CF2Ceiw
  Logger.log(spreadsheet.getUrl());  // https://docs.google.com/spreadsheets/d/1HrSKyUob7clUrPlJCHTgqqdmDyL_48oNLj_1CF2Ceiw/edit
}
メソッド 戻り値の型 説明
Spreadsheet.getName() String ワークブック名を取得する
Spreadsheet.getId() String ワークブックID(スプレッドシートキー)を取得する
Spreadsheet.getUrl() String ワークブックのURLを取得する

ワークブックのID(スプレッドシートキー)で指定|openById(id)

var spreadsheet = SpreadsheetApp.openById(id);

スプレッドシートキーを使って、スプレッドシートのワークブックとGASを紐付けるためには、SpreadsheetAppクラスのopenByIdメソッドを使います。

メソッド 戻り値の型 説明
SpreadsheetApp.openById(id) Spreadsheet ワークブックのIDに紐付いているSpreadsheetオブジェクトを返す
スプレッドシートキーとは

URLの/d//editに囲まれた部分です。

https://docs.google.com/spreadsheets/d/xxxxxxxxx/edit

サンプルコード

function myFunction() {

  // ワークブックのID(スプレッドシートキー)で指定
  var spreadsheet = SpreadsheetApp.openById("1HrSKyUob7clUrPlJCHTgqqdmDyL_48oNLj_1CF2Ceiw");
  
  Logger.log(spreadsheet.getName()); // スプレッドシートのワークブックを指定する
  Logger.log(spreadsheet.getId());   // 1HrSKyUob7clUrPlJCHTgqqdmDyL_48oNLj_1CF2Ceiw
  Logger.log(spreadsheet.getUrl());  // https://docs.google.com/spreadsheets/d/1HrSKyUob7clUrPlJCHTgqqdmDyL_48oNLj_1CF2Ceiw/edit
}

ワークブックのURLで指定|openByUrl(url)

var spreadsheet = SpreadsheetApp.openByUrl(url);

ワークブックのURLを使って、スプレッドシートのワークブックとGASを紐付けるためには、SpreadsheetAppクラスのopenByUrlメソッドを使います。

メソッド 戻り値の型 説明
SpreadsheetApp.openByUrl(url) Spreadsheet ワークブックのURLに紐付いているSpreadsheetオブジェクトを返す

サンプルコード

function myFunction() {

  // ワークブックのID(スプレッドシートキー)で指定
  var spreadsheet = SpreadsheetApp.openByUrl("https://docs.google.com/spreadsheets/d/1HrSKyUob7clUrPlJCHTgqqdmDyL_48oNLj_1CF2Ceiw/edit");
  
  Logger.log(spreadsheet.getName()); // スプレッドシートのワークブックを指定する
  Logger.log(spreadsheet.getId());   // 1HrSKyUob7clUrPlJCHTgqqdmDyL_48oNLj_1CF2Ceiw
  Logger.log(spreadsheet.getUrl());  // https://docs.google.com/spreadsheets/d/1HrSKyUob7clUrPlJCHTgqqdmDyL_48oNLj_1CF2Ceiw/edit
}

さいごに

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

  1. アクティブなワークブックを指定する(スクリプトエディタから作成した場合のみ可能)
  2. ワークブックのID(スプレッドシートキー)で指定する
  3. ワークブックのURLで指定する

個人的には、以下のように使い分けてます。

  • コンテナバインドスクリプト(GASファイルをスクリプトエディタから作成した場合):getActiveSpreadsheet()
  • スタンドアロンスクリプト(GASファイルをGoogleドライブから作成した場合):openById(id), openByUrl(url)

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