top of page
検索

Googleスプレッドシート:GAS、シート参照

  • 執筆者の写真: egachira0250
    egachira0250
  • 2021年8月17日
  • 読了時間: 4分

更新日:2024年12月2日

前回は、Google Apps Script(GAS)の事始めとしてスプレッドシートのインスタンス作成方法を備忘録しました。


今回は、その下の階層「シート」について、確認していきましょう!


■ アクティブなシートの参照:getActiveSheet()

 

早速、スクリプトです。

シートは、スプレッドシートの中に、1つ以上存在するものです。

よって、スプレッドシートのクラスを軸に、参照していきます。

スプレッドシートの参照方法は、こちらをご覧ください。 (参考備忘録)Googleスプレッドシート:GAS、スプレッドシート参照

このスクリプトでやってることは単純で「アクティブなスプレッドシートssが格納しているシートのうち、アクティブなシートを参照するオブジェクトを変数sheetへ代入」しています。


  • そもそも「アクティブな」なので、スプレッドシートと関連付いて動くスクリプトでないと意味を成しません💦


正しく取得できているか念のため確認してみましょう。

スクリプトは、次のとおりです。


実行した際のログを見てみると…


getActiveSheet()を活用した際の実行ログ


実際のシート名称を見てみると…


getActiveSheet()を活用した際の実際のシート名


■ 任意シートの参照

 

指定方法は2種類あります。

やりやすい方法を使っていきましょう!



□ シート名を使ってオブジェクトを取得:getSheetByName()

 

<シート名>とは、その名のとおりシート名称を指定することでオブジェクトを取得する方法です。

例えばこんな感じで使いますー。


実行した際のログを見てみると…


getSheetByName()を活用した際の実行ログ


実際のシートを見てみると…、まずはシートのURLですね。

getSheetByName()を活用した際の実際のURL


getSheetId()メソッドで取得できる値は、該当シートを一意に示す識別子です。

Googleスプレッドシートでは、該当シートのURLの「#gid=」以降を見ることで確認できます。今回の場合は、URLのgid「412965533」がスクリプト上で取得できていることが実行ログから確認できますね。


もう一つがシートのインデックスです。


getSheetByName()を活用した際の実際のインデックス


シート「シート5」の配置を見ると4番目であることが確認できると思います。


このようにgetSheetByName()メソッドを使うことで簡単にシートオブジェクトを取得することができます。ただし、一点注意事項がございます。シート名とは、スプレッドシートの利用者が自由に変更できる要素であり、勝手に名前を変更された場合、このスクリプトは途端に動かなくなります。


よって、

  • シート名を変更されないよう運用で縛る

  • シート名を変更されても大丈夫な方法に切り替える

なども考慮しておく必要があります。



□ シートの集合体からオブジェクトを取得:getSheets()

 

getSheets()メソッドでは、該当スプレッドシートが持っているシート群を(シートオブジェクトの)配列の形で返してくれます。その値に配列の要素番号を指定することで、任意のシートオブジェクトを参照することができます。


このスクリプトでは、シート「シート5」を参照するロジックとなっています。

配列要素は、0スタートなので、getIndex()の戻り値が4の場合は、4-1の3番なのです)


ただ、getSheetByName()同様、シートの順番なんて物は、利用者が新たなシートを追加したり、既存シートを削除することで大いに変わる要素な訳です💦


結局、gidを頼りに任意のシートオブジェクトを取得するような仕組みを準備しておかないと万全ではないのかも…ですね。



■ 応用編:任意シートの存在チェック

 

お望みのシートが存在するかによって処理を分岐したい場合、次のように確認します。

  • isExistSheet(arg):引数 arg で指定された名称のシートが存在するかどうかをチェックする自作の関数です。存在すれば True を、そうでなければ False を返します。

    • シートが存在しなかった場合は getSheetByName()null を、存在すればオブジェクトを返しますので、if 文の条件は True と判定されます。

  • debug():テスト用の関数です。g_*** で定義した変数(調査するシート名を設定)を順番に isExistSheet() 関数へ渡して返ってきた存在有無ステータスをロギングします。



実行結果は次のとおりです。期待どおりですねw



■ まとめ

 

いかがでしたか?

シートのインスタンス化、いろいろな手法があることご理解いただけたでしょうか?

それぞれ注意事項がございますので、それを考慮いただいた上で利用することが重要です。


ではでは。

Comentarios


©2020 by Excelノウハウの備忘録♪。Wix.com で作成されました。

bottom of page