Quantcast
Viewing all articles
Browse latest Browse all 2085

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

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

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

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

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

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

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

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

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

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

作成するBotの説明

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

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

Image may be NSFW.
Clik here to view.
スプレッドシートの名言リスト

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

これらのリストの中から、何かしらかの法則で一つを選んで、チャットワークや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サービスの最も上位にあるオブジェクト、トップレベルのオブジェクト、オブジェクトの大親玉、そんな感じです。

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

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

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

function myFunction() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  Logger.log(ss.getName());
}

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

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

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

Spreadsheetオブジェクト. getName()

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

Image may be NSFW.
Clik here to view.
GASでスプレッドシート名をログ出力する

まとめ

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

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

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

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

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

どうぞお楽しみに!

連載目次:超初心者向け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サービスの「オブジェクト」の基礎の基礎を知ろう

Viewing all articles
Browse latest Browse all 2085

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>