【初心者向けGAS】スプレッドシートのシートを取得する2つの方法

★気に入ったらシェアをお願いします!


sheets

photo credit: Marius Eisenbraun 50/365 – One Job via photopin (license)

みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。

初心者向けのGoogle Apps Script入門シリーズとして、Botの作り方を通してGASプログラミングの基礎をお伝えしています。

前回の記事はこちら。

【初心者向けGAS】Spreadsheetサービスの「オブジェクト」の基礎の基礎を知ろう
GASプログラミングの基礎を学ぶシリーズです。今回は、GASでスプレッドシートを操作していく際に知っておくべきオブジェクトとその基礎、SpreadsheetApp、アクティブなスプレッドシートの取得についてです。

Spreadsheetサービスのオブジェクトの基本についてお伝えしました。

さて、今回はその続きとしてGoogle Apps Scriptでスプレッドシートからシートを取得する2つの方法をお伝えします。

では、行ってみましょう!

前回のおさらいと今回のお題

題材としているスプレッドシートは以下のような名言を集めたリストです。

スプレッドシートの名言リスト

例えば、このスプレッドシートのシート1のA3セルの値を取得したいのであれば、以下の手順を踏む必要があります。

  1. スプレッドシート「名言Bot」をSpreadsheetオブジェクトとして取得する
  2. そのSpreadsheetオブジェクトの配下にあるシート「シート1」をSheetオブジェクトとして取得する
  3. そのSheetオブジェクトの配下にあるA3セルをRangeオブジェクトとして取得する
  4. そのRangeオブジェクトの値を取得する

そこで前回、その手始めとして以下のようなスクリプトを作成して、スプレッドシート「名言Bot」を取得してそのスプレッドシート名をログ出力することには成功しました。

今回は、その手順の2番目。シートを取得する方法について考えてきます。

シート名を指定してシートを取得する

シートを取得する方法にはいくつありますが、その方法の一つとしてシート名を指定してシートを取得する方法があります。

getSheetByNameメソッドを使います。

書式はこちらです。

Spreadsheetオブジェクト.getSheetByName(シート名)

シート名からシートを取得するスクリプト

例えば、今回の例では、以下のようなスクリプトで、シートを取得しそのシート名をログ出力することができます。

なお、SheetオブジェクトのgetNameメソッドは、シート名を取得するメソッドです。

Sheetオブジェクト.getName()

また、Spreadsheetオブジェクトを変数で使う機会が他にないのであれば、以下のようにステートメントをひとまとめにすることもできます。

シート名はユーザーが変更できるので注意

ただし、getSheetByNameメソッドでシートオブジェクトを取得するスクリプトを作成したのであれば、一点、運用で気をつけなければならない点があります。

それは、ユーザーがシート名を変更しないようにするということです。

というのも、スクリプトではシート名でSheetオブジェクトを取得しているわけですから、シート名を変更すると、Sheetオブジェクトの取得ができなくなり、スクリプトが正しい動作をしなくなることがあります。

スプレッドシートを操作するスクリプトを作成するときには、ユーザーの干渉の影響を受ける可能性があるか、また、その干渉を受けないようにするためには、どのようにしたらいいのか、ということを考慮する必要がありますので、その点を念頭に置いておきましょう。

アクティブなシートを取得する

さて、コンテナバインドスクリプトであり、かつ、スプレッドシートに含まれるシートがひとつであるならオススメできる、別の方法があります。

ユーザーの干渉を受けにくく、かつ、SpreadsheetAppから一足飛びにシート取得しに行くことができるという、メリット満載の方法です。

それは、アクティブなシートを取得するgetActiveSheetメソッドを使うという方法です。

このメソッドはSpreadsheetAppオブジェクトからいきなり使うことができ、以下のように書きます。

SpreadsheetApp.getActiveSheet()

アクティブシートのシート名をログ出力するスクリプト

例えば、以下のようなスクリプトでアクティブシートのシート名をログ出力することができます。

なお、複数のシートがスプレッドシートに含まれている場合は、どのシートが「アクティブ」なのかをコントロールするのが難しくなりますので、シート名などで取得したほうが安全かも知れません。

まとめ

以上、Google Apps Scriptでスプレッドシートのシートを取得する方法についてお伝えしました。

  • getSheetByNameメソッドでシート名を指定してシートを取得する
  • getActiveSheetメソッドでアクティブシートを取得する

という二つの方法がありました。

いずれもケースによってはユーザーの干渉の影響を受けますので、シートの構成や運用方法を踏まえてセレクトするようにしましょう。

次回は、セルの取得方法についてお伝えします。

どうぞお楽しみに!

連載目次:超初心者向けGASでBotを作りながら基礎を学ぶ

Google Apps Script(GAS)をはじめるためのメリットは山程ありますが、何を作ったらいいの?と悩んでしまうこともありますよね。そんな時に、おすすめしたいのが「Bot」の作成です。このシリーズでは、超初心者向けにGASでBotを作る方法を題材としながら、GASプログラミングの一通りの流れと書き方について学んでいきます。
  1. 【初心者向けGAS】本当の最初の一歩!スクリプトエディタでプロジェクトを開く
  2. 【初心者向けGAS】はじめてのスクリプトを作成し、保存し、実行する
  3. 【初心者向けGAS】プログラミングに必須の変数の使い方とデータ型について
  4. 【初心者向けGAS】ログを表示するLogger.logの使い方
  5. 【初心者向けGAS】スクリプト実行時の「承認」でびっくりしないために
  6. 【初心者向けGAS】Spreadsheetサービスの「オブジェクト」の基礎の基礎を知ろう
  7. 【初心者向けGAS】スプレッドシートのシートを取得する2つの方法

The following two tabs change content below.
1976年こどもの日生まれ。東京板橋区在住。「ITで日本の『働く』の価値を上げる!」をテーマに、VBA&GASの開発、講師、コンサル、執筆本を中心に活動しています。→詳しいプロフィールはコチラ ★ご依頼・ご相談はお気軽にどうぞ!→お問い合わせはコチラ ★フォロー頂ければ嬉しいです。