【初心者向け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」を取得してそのスプレッドシート名をログ出力することには成功しました。

function myFunction() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  console.log(ss.getName());
}

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

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

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

getSheetByNameメソッドを使います。

書式はこちらです。

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

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

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

function myFunction() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const sheet = ss.getSheetByName('シート1');
  console.log(sheet.getName());
}

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

Sheetオブジェクト.getName()

上記のスクリプトを実行すると、以下のようにログでシート名を確認することができます。

ログ出力でシート名を確認する

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

function myFunction() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('シート1');
  console.log(sheet.getName());
}

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

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

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

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

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

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

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

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

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

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

SpreadsheetApp.getActiveSheet()

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

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

function myFunction() {
  const sheet = SpreadsheetApp.getActiveSheet();
  console.log(sheet.getName());
}

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

まとめ

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

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

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

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

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

【初心者向けGAS】スプレッドシートのセル・セル範囲とその値を取得する方法
初心者向けにBotづくりを目指してGoogle Apps Scriptプログラミングの基礎をシリーズでお伝えしています。今回は、Rangeオブジェクト、つまりセルやセル範囲とその値を取得する方法です。

どうぞお楽しみに!

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

Google Apps Script(GAS)をはじめるためのメリットは山程ありますが、何を作ったらいいの?と悩んでしまうこともありますよね。そんな時に、おすすめしたいのが「Bot」の作成です。このシリーズでは、超初心者向けにGASでBotを作る方法を題材としながら、GASプログラミングの一通りの流れと書き方について学んでいきます。
  1. 【初心者向けGAS】本当の最初の一歩!スクリプトエディタでプロジェクトを開く
  2. 【初心者向けGAS】はじめてのスクリプトを作成し、保存し、実行する
  3. 【初心者向けGAS】プログラミングに必須の変数&定数の使い方とデータ型について
  4. 【初心者向けGAS】ログを表示するconsole.logの使い方とテンプレート文字列
  5. 【初心者向けGAS】スクリプト実行時の「承認」でびっくりしないために
  6. 【初心者向けGAS】Spreadsheetサービスの「オブジェクト」の基礎の基礎を知ろう
  7. 【初心者向けGAS】スプレッドシートのシートを取得する2つの方法
  8. 【初心者向けGAS】スプレッドシートのセル・セル範囲とその値を取得する方法
  9. 【初心者向けGAS】for文を使ったスプレッドシートの繰り返しの超基本
  10. 【初心者向けGAS】条件分岐をするif文の使い方の超基本
  11. 【初心者向けGAS】スプレッドシートのセルに値を入力する基礎の基礎
  12. 【初心者向けGAS】条件に応じてループを制御する2つの方法~break文とwhile文~
  13. 【初心者向けGAS】スプレッドシートのセル範囲を行数・列数を使って取得する
  14. 【初心者向けGAS】スプレッドシートのセル範囲をクリアするいくつかの方法
  15. 【初心者向けGAS】Google Apps ScriptでWeb APIを活用するための基礎知識
  16. 【初心者向けGAS】面倒なことはライブラリに任せよう!その概要と追加の方法
  17. 【初心者向けGAS】Chatworkのマイチャットにメッセージを送る最も簡単な例
  18. 【初心者向けGAS】Google Apps Scriptで別の関数を呼び出すfunctionの書き方
  19. 【初心者向けGAS】時限式のイベントトリガーを設置して決まった時刻にBotを送信する方法
  20. 【初心者向けGAS】プロパティストアの概要とスクリプトプロパティの編集方法
  21. 【初心者向けGAS】スクリプトプロパティを操作してそのデータを取り出す方法
  22. 【初心者向けGAS】スプレッドシートのセル範囲の値を二次元配列として取得して取り扱う方法
  23. 【初心者向けGAS】Chatworkのメッセージ記法でBot送信するメッセージを装飾する方法
  24. 【初心者向けGAS】Google Apps Scriptのドキュメンテーションコメントの書き方

タイトルとURLをコピーしました