みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。
初心者向けのGoogle Apps Script入門シリーズとして、Botの作り方を通してGASプログラミングの基礎をお伝えしています。
前回の記事はこちら。
Spreadsheetサービスのオブジェクトの基本についてお伝えしました。
さて、今回はその続きとしてGoogle Apps Scriptでスプレッドシートからシートを取得する2つの方法をお伝えします。
では、行ってみましょう!
前回のおさらいと今回のお題
題材としているスプレッドシートは以下のような名言を集めたリストです。
例えば、このスプレッドシートのシート1のA3セルの値を取得したいのであれば、以下の手順を踏む必要があります。
- スプレッドシート「名言Bot」をSpreadsheetオブジェクトとして取得する
- そのSpreadsheetオブジェクトの配下にあるシート「シート1」をSheetオブジェクトとして取得する
- そのSheetオブジェクトの配下にあるA3セルをRangeオブジェクトとして取得する
- そのRangeオブジェクトの値を取得する
そこで前回、その手始めとして以下のようなスクリプトを作成して、スプレッドシート「名言Bot」を取得してそのスプレッドシート名をログ出力することには成功しました。
function myFunction() { const ss = SpreadsheetApp.getActiveSpreadsheet(); console.log(ss.getName()); }
今回は、その手順の2番目。シートを取得する方法について考えてきます。
シート名を指定してシートを取得する
シートを取得する方法にはいくつありますが、その方法の一つとしてシート名を指定してシートを取得する方法があります。
getSheetByNameメソッドを使います。
書式はこちらです。
シート名からシートを取得するスクリプト
例えば、今回の例では、以下のようなスクリプトで、シートを取得しそのシート名をログ出力することができます。
function myFunction() { const ss = SpreadsheetApp.getActiveSpreadsheet(); const sheet = ss.getSheetByName('シート1'); console.log(sheet.getName()); }
なお、SheetオブジェクトのgetNameメソッドは、シート名を取得するメソッドです。
上記のスクリプトを実行すると、以下のようにログでシート名を確認することができます。
また、Spreadsheetオブジェクトを変数や定数で使う機会が他にないのであれば、以下のようにステートメントをひとまとめにすることもできます。
function myFunction() { const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('シート1'); console.log(sheet.getName()); }
シート名はユーザーが変更できるので注意
ただし、getSheetByNameメソッドでシートオブジェクトを取得するスクリプトを作成したのであれば、一点、運用で気をつけなければならない点があります。
それは、ユーザーがシート名を変更しないようにするということです。
というのも、スクリプトではシート名でSheetオブジェクトを取得しているわけですから、シート名を変更すると、Sheetオブジェクトの取得ができなくなり、スクリプトが正しい動作をしなくなることがあります。
スプレッドシートを操作するスクリプトを作成するときには、ユーザーの干渉の影響を受ける可能性があるか、また、その干渉を受けないようにするためには、どのようにしたらいいのか、ということを考慮する必要がありますので、その点を念頭に置いておきましょう。
アクティブなシートを取得する
さて、コンテナバインドスクリプトであり、かつ、スプレッドシートに含まれるシートがひとつであるならオススメできる、別の方法があります。
ユーザーの干渉を受けにくく、かつ、SpreadsheetAppから一足飛びにシート取得しに行くことができるという、メリット満載の方法です。
それは、アクティブなシートを取得するgetActiveSheetメソッドを使うという方法です。
このメソッドはSpreadsheetAppオブジェクトからいきなり使うことができ、以下のように書きます。
アクティブシートのシート名をログ出力するスクリプト
例えば、以下のようなスクリプトでアクティブシートのシート名をログ出力することができます。
function myFunction() { const sheet = SpreadsheetApp.getActiveSheet(); console.log(sheet.getName()); }
なお、複数のシートがスプレッドシートに含まれている場合は、どのシートが「アクティブ」なのかをコントロールするのが難しくなりますので、シート名などで取得したほうが安全かも知れません。
まとめ
以上、Google Apps Scriptでスプレッドシートのシートを取得する方法についてお伝えしました。
- getSheetByNameメソッドでシート名を指定してシートを取得する
- getActiveSheetメソッドでアクティブシートを取得する
という二つの方法がありました。
いずれもケースによってはユーザーの干渉の影響を受けますので、シートの構成や運用方法を踏まえてセレクトするようにしましょう。
次回は、セルとその値の取得方法についてお伝えします。
どうぞお楽しみに!
連載目次:超初心者向けGASでBotを作りながら基礎を学ぶ
Google Apps Script(GAS)をはじめるためのメリットは山程ありますが、何を作ったらいいの?と悩んでしまうこともありますよね。そんな時に、おすすめしたいのが「Bot」の作成です。このシリーズでは、超初心者向けにGASでBotを作る方法を題材としながら、GASプログラミングの一通りの流れと書き方について学んでいきます。- 【初心者向けGAS】本当の最初の一歩!スクリプトエディタでプロジェクトを開く
- 【初心者向けGAS】はじめてのスクリプトを作成し、保存し、実行する
- 【初心者向けGAS】プログラミングに必須の変数&定数の使い方とデータ型について
- 【初心者向けGAS】ログを表示するconsole.logの使い方とテンプレート文字列
- 【初心者向けGAS】スクリプト実行時の「承認」でびっくりしないために
- 【初心者向けGAS】Spreadsheetサービスの「オブジェクト」の基礎の基礎を知ろう
- 【初心者向けGAS】スプレッドシートのシートを取得する2つの方法
- 【初心者向けGAS】スプレッドシートのセル・セル範囲とその値を取得する方法
- 【初心者向けGAS】for文を使ったスプレッドシートの繰り返しの超基本
- 【初心者向けGAS】条件分岐をするif文の使い方の超基本
- 【初心者向けGAS】スプレッドシートのセルに値を入力する基礎の基礎
- 【初心者向けGAS】条件に応じてループを制御する2つの方法~break文とwhile文~
- 【初心者向けGAS】スプレッドシートのセル範囲を行数・列数を使って取得する
- 【初心者向けGAS】スプレッドシートのセル範囲をクリアするいくつかの方法
- 【初心者向けGAS】Google Apps ScriptでWeb APIを活用するための基礎知識
- 【初心者向けGAS】面倒なことはライブラリに任せよう!その概要と追加の方法
- 【初心者向けGAS】Chatworkのマイチャットにメッセージを送る最も簡単な例
- 【初心者向けGAS】Google Apps Scriptで別の関数を呼び出すfunctionの書き方
- 【初心者向けGAS】時限式のイベントトリガーを設置して決まった時刻にBotを送信する方法
- 【初心者向けGAS】プロパティストアの概要とスクリプトプロパティの編集方法
- 【初心者向けGAS】スクリプトプロパティを操作してそのデータを取り出す方法
- 【初心者向けGAS】スプレッドシートのセル範囲の値を二次元配列として取得して取り扱う方法
- 【初心者向けGAS】Chatworkのメッセージ記法でBot送信するメッセージを装飾する方法
- 【初心者向けGAS】Google Apps Scriptのドキュメンテーションコメントの書き方