【openById(id)】URLに記載されているIDでスプレッドシートを指定する

GoogleAppsScript

【openById(id)】メソッドは

スプレッドシートのURLに書かれた固有のIDを使って処理対象とするスプレッドシートを指定・取得するメソッド

です。

公式リファレンスの該当ページはこちら

 

クラス

【SpreadsheetAppクラス】

 

記述方法

 

(id)について
openbyid02

(id)に引数として記入するID値はスプレッドシートのURLから確認することができます。URLの途中に44桁の英数字(アンダーバーなどの記号も含む)が書いてありますがこちらがIDとなります。

こちらを” ”で囲って引数として記入します。

 

アクティブなシートの取得における注意

openById(id)を使う上で注意していただきたいのはアクティブなシートについての扱いです。(※アクティブなスプレッドシートではなくアクティブなシートです!)

同じSpreadsheetクラスを取得するメソッドであるgetActiveSpreadsheet()と比較してご説明いたします。

 

getActiveSpreadsheet()で取得したSpreadsheetクラスでは”現在指定されているシート”がアクテイブなシートとして指定されています。

対して、openById(id)で取得したSpreadsheetクラスでは”シートリストの一番左側”がアクティブなシートとして指定されています。

openbyid01

 

上記の図でご説明すると…getActiveSpreadsheet()で取得した場合は”2”のシートがアクティブ状態になっているのに対して、

openById(id)で取得した場合には”0″のシートがアクテイブ状態になっています。

これらは、下記のコード例のようにgetActiveSheet()でアクティブなシートを取得して、getIndex()を使うことで両者でシートのインデックス番号が違うことが確認できます。

 

これらの違いを理解した上でスクリプトを記述する必要があります。どういった場合にopenById(id)を利用したほうが良いのかについては、以下の使用例にてご紹介します。

 

戻り値

【Spreadsheetクラス】

Spreadsheetクラスを戻り値として返します。

getActiveSpreadsheetメソッドと違い、IDを使うことで必要なスプレッドシートファイルを確実に取得することができますので、アクティブなシートが変更されて思わぬエラーが起こる…といったことが起こらないので便利です。

 

使用例

Standalone Script開発で利用

Standalone ScriptとはGoogle Drive上やhttps://script.google.comから新規作成することで利用できるスクリプトファイルのことです。

一方で、Google スプレッドシートやフォームのメニューから作成することが可能なスクリプトファイルであるContainer Bound Scriptという形態のスクリプトファイルも存在します。(後日解説)

両者の大きな違いは後者は作成元のスプレッドシートやフォームに紐付いたスクリプトファイルを作成できるのに対して、前者は完全独立型のスクリプトファイルである点にあります。

 

そのため、Standalone ScriptではgetActiveSpreadsheet()によるコードを記述すると「そもそも、どこのスプレッドシートのことを言っているの?」という問題になるわけです。

ですので、Standalone Scriptで開発をする場合でスプレッドシートが絡んでくる場合には、openById(id)などでスプレッドシートのファイルを指定して取得する必要があるわけです。

下記の例では、2種類用意したスプレッドシートのデータを取得して、そこに記載されている売上金額を抽出しメールで通知するスクリプトをご紹介しております。あまり実用的ではないかもしれませんが、あくまでStandalone Scriptで複数のスプレッドシートを扱うことになった場合のサンプルとしてご確認ください。

余談

※読み飛ばし可

余談ですが、下記の記述についてはJavaScriptであればテンプレートリテラルという記述方法でもっとスマートに記述することが可能です…が、テンプレートリテラルが対応し始めたES5というJavaScriptのバージョンにGoogle Apps Scriptが対応していないため利用しておりません。

Google Apps Scriptの開発をローカルで行う場合はBabelなどのツールを利用することで、最新のJavaScirpt記法でプログラミングしたものをGASファイルに適した記述に変換することが可能になので、また興味のある方は調べて実践してみてください!

関連メソッド

以下のメソッドも確認しておくと、よりopenById(id)を活用することが可能です。(後日追加予定)

yoshi

JavaScript、Google Apps Scriptがメイン。Pythonもちょっとだけ。Google Apps Script開発、Pythonスクレイピングなどをする機会が多いです。ご依頼なども承っております。 記事内容についてのご意見・ご指摘などいただけますと幸いです。

シェアする

1件のコメント

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

コメントする