前回は、Google Apps Script(GAS)の事始めとしてスプレッドシートのインスタンス作成方法を備忘録しました。
今回は、その下の階層「シート」について、確認していきましょう!
■ アクティブなシートの参照:getActiveSheet()
早速、スクリプトです。
シートは、スプレッドシートの中に、1つ以上存在するものです。
よって、スプレッドシートのクラスを軸に、参照していきます。
スプレッドシートの参照方法は、こちらをご覧ください。 (参考備忘録)Googleスプレッドシート:GAS、スプレッドシート参照 |
このスクリプトでやってることは単純で「アクティブなスプレッドシートssが格納しているシートのうち、アクティブなシートを参照するオブジェクトを変数sheetへ代入」しています。
そもそも「アクティブな」なので、スプレッドシートと関連付いて動くスクリプトでないと意味を成しません💦
正しく取得できているか念のため確認してみましょう。
スクリプトは、次のとおりです。
実行した際のログを見てみると…
実際のシート名称を見てみると…
■ 任意シートの参照
指定方法は2種類あります。
やりやすい方法を使っていきましょう!
□ シート名を使ってオブジェクトを取得:getSheetByName()
<シート名>とは、その名のとおりシート名称を指定することでオブジェクトを取得する方法です。
例えばこんな感じで使いますー。
実行した際のログを見てみると…
実際のシートを見てみると…、まずはシートのURLですね。
getSheetId()メソッドで取得できる値は、該当シートを一意に示す識別子です。
Googleスプレッドシートでは、該当シートのURLの「#gid=」以降を見ることで確認できます。今回の場合は、URLのgid「412965533」がスクリプト上で取得できていることが実行ログから確認できますね。
もう一つがシートのインデックスです。
シート「シート5」の配置を見ると4番目であることが確認できると思います。
このようにgetSheetByName()メソッドを使うことで簡単にシートオブジェクトを取得することができます。ただし、一点注意事項がございます。シート名とは、スプレッドシートの利用者が自由に変更できる要素であり、勝手に名前を変更された場合、このスクリプトは途端に動かなくなります。
よって、
シート名を変更されないよう運用で縛る
シート名を変更されても大丈夫な方法に切り替える
なども考慮しておく必要があります。
□ シートの集合体からオブジェクトを取得:getSheets()
getSheets()メソッドでは、該当スプレッドシートが持っているシート群を(シートオブジェクトの)配列の形で返してくれます。その値に配列の要素番号を指定することで、任意のシートオブジェクトを参照することができます。
このスクリプトでは、シート「シート5」を参照するロジックとなっています。
(配列要素は、0スタートなので、getIndex()の戻り値が4の場合は、4-1の3番なのです)
ただ、getSheetByName()同様、シートの順番なんて物は、利用者が新たなシートを追加したり、既存シートを削除することで大いに変わる要素な訳です💦
結局、gidを頼りに任意のシートオブジェクトを取得するような仕組みを準備しておかないと万全ではないのかも…ですね。
■ まとめ
いかがでしたか?
シートのインスタンス化、いろいろな手法があることご理解いただけたでしょうか?
それぞれ注意事項がございますので、それを考慮いただいた上で利用することが重要です。
ではでは。
Comments