【初心者向けGAS】Spreadsheetサービスの「オブジェクト」の基礎の基礎を知ろう


spreadsheet

photo credit: gonzalo_ar Work done via photopin (license)

みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。

Google Apps ScriptでBotを作成しながら、GASプログラミングの基礎を学ぶシリーズをお送りしています。

前回の記事はこちらです。

【初心者向けGAS】スクリプト実行時の「承認」でびっくりしないために
超初心者向けGoogle Apps Scriptを学ぶシリーズ、Botの作成を目指しております。実行時に「承認してください」とスクリプトからのアクセス許可が求められる件について、詳しく解説していきます。

GASのスクリプト実行時の認証についてお伝えしました。

さて、これまでの記事では、基礎中の基礎過ぎて、Botの香りは全然なかったんですが、今回からようやくBotっぽさ出していきますよ!

今回は、GASでスプレッドシートを操作していく際に知っておくべき、オブジェクトとその基礎についてお伝えします。

また、グローバルオブジェクトSpreadsheetAppについて、そして、アクティブなスプレッドシートを取得する方法もお伝えしますよ。

では、行ってみましょう!

作成するBotの説明

まず、どんなBotを作成するのかについて説明をしておきますね。

以下のようなスプレッドシートを用意しました。

スプレッドシートの名言リスト

珠玉の名言を集めたリストです。

これらのリストの中から、何かしらかの法則で一つを選んで、チャットワークやSlackなどのチャットサービスに定期的に送信するBotツールの作成を目指したいと思います。

オブジェクトとは

GASでは、スプレッドシートをはじめ各サービスの操作対象とするモノを「オブジェクト」と言います。

スプレッドシートを取り扱うSpreadsheetサービスでは、以下のようなオブジェクトとそれを操作するための命令であるメソッドが用意されています。

  • スプレッドシート:Spreadsheetオブジェクト
  • シート:Sheetオブジェクト
  • セル範囲:Rangeオブジェクト

Spreadsheetオブジェクト・Sheetオブジェクト・Rangeオブジェクト

例えば、3行目のアインシュタインの名言を送りたいとします。

その場合、まずスプレッドシート「名言Bot」のシート「シート1」のA3セルの値を取得するという処理をする必要があります。

オブジェクトへの操作という視点で、この操作を表現すると以下のようになります。

  1. スプレッドシート「名言Bot」をSpreadsheetオブジェクトとして取得する
  2. そのSpreadsheetオブジェクトの配下にあるシート「シート1」をSheetオブジェクトとして取得する
  3. そのSheetオブジェクトの配下にあるA3セルをRangeオブジェクトとして取得する
  4. そのRangeオブジェクトの値を取得する

アクティブなスプレッドシートを取得する

では、具体的にそれらの処理の仕方を確認していきましょう。

まず、スプレッドシートをSpreadsheetオブジェクトとして取得します。

その方法はいくつかあるのですが、コンテナバインドスクリプトの場合、最も簡単なのはアクティブなスプレッドシートを取得するgetActiveSpreadsheetメソッドを使う方法です。

アクティブなスプレッドシートというのは、スクリプトがバインドしているスプレッドシートのことです。

なので、このメソッド一つで一意にスプレッドシートが決まるのです。

書き方はこちらです。

SpreadsheetApp.getActiveSpreadsheet()

グローバルオブジェクトSpreadsheetAppとは

さて、「SpreadsheetApp」というのが出てきますが、これは何でしょう?

これは、Spreadsheetサービスでいうところのグローバルオブジェクトと呼ばれるものです。

スクリプトからスプレッドシートサービスの何らかのオブジェクトを操作する場合には、まずこのSpreadsheetAppオブジェクトを経由して取得しにいく必要があります。

Spreadsheetサービスの最も上位にあるオブジェクト、トップレベルのオブジェクト、オブジェクトの大親玉、そんな感じです。

アクティブなスプレッドシート名をログ出力するスクリプト

では、簡単な例を紹介しましょう。

以下のようなスクリプト作成します。

アクティブなスプレッドシートを取得して、それを変数ssに格納します。

その変数を使って、取得したスプレッドシート名をログ出力するというものです。

getNameメソッドはその名の通り、スプレッドシート名を取得するメソッドです。

Spreadsheetオブジェクト. getName()

実行すると、以下のように、スプレッドシート名「名言Bot」がログ出力として得られます。

GASでスプレッドシート名をログ出力する

まとめ

以上、Google Apps Scriptでスプレッドシートを操作する際の「オブジェクト」の基礎中の基礎についてお伝えしました。

  • オブジェクトとは何か
  • Spreadsheetサービスで取り扱えるオブジェクト(Spreadsheetオブジェクト、Sheetオブジェクト、Rangeオブジェクト
  • グローバルオブジェクトSpreadsheetAppとは
  • アクティブなスプレッドシートを取得するgetActiveSpreadsheetメソッド

などなど、いずれも超重要項目ですね…!

ぜひバッチリ押さえておいてください。

では次回、今回の続きで、シートの取得の方法についてお伝えします。

【初心者向けGAS】スプレッドシートのシートを取得する2つの方法
初心者向けのGoogle Apps Script入門シリーズとして、GASプログラミングの基礎をお伝えしています。今回は、スプレッドシートからシートを取得する2つの方法をお伝えします。

どうぞお楽しみに!

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

Google Apps Script(GAS)をはじめるためのメリットは山程ありますが、何を作ったらいいの?と悩んでしまうこともありますよね。そんな時に、おすすめしたいのが「Bot」の作成です。このシリーズでは、超初心者向けにGASでBotを作る方法を題材としながら、GASプログラミングの一通りの流れと書き方について学んでいきます。
  1. 【初心者向けGAS】本当の最初の一歩!スクリプトエディタでプロジェクトを開く
  2. 【初心者向けGAS】はじめてのスクリプトを作成し、保存し、実行する
  3. 【初心者向けGAS】プログラミングに必須の変数の使い方とデータ型について
  4. 【初心者向けGAS】ログを表示するLogger.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】チャットワークのマイチャットにメッセージを送る最も簡単な例
  18. 【初心者向けGAS】Google Apps Scriptで別の関数を呼び出すfunctionの書き方
  19. 【初心者向けGAS】時限式のイベントトリガーを設置して決まった時刻にBotを送信する方法
  20. 【初心者向けGAS】プロパティストアの概要とスクリプトプロパティの編集方法
  21. 【初心者向けGAS】スクリプトプロパティを操作してそのデータを取り出す方法
  22. 【初心者向けGAS】スプレッドシートのセル範囲の値を二次元配列として取得して取り扱う方法
  23. 【初心者向けGAS】チャットワークのメッセージ記法でBot送信するメッセージを装飾する方法
  24. 【初心者向けGAS】Google Apps Scriptのドキュメンテーションコメントの書き方

  投稿者プロフィール

タカハシノリアキ株式会社プランノーツ 代表取締役
株式会社プランノーツ代表、コミュニティ「ノンプロ研」主宰。1976年こどもの日生まれ。東京板橋区在住。「ITで日本の『働く』の価値を上げる!」をテーマに、VBA&GASの開発、講師、執筆などをしております。→詳しいプロフィールはコチラ
★ご依頼・ご相談はお気軽にどうぞ!→お問い合わせはコチラ
★フォロー頂ければ嬉しいです。

コメント