みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。
Google Apps ScriptでBotを作成しながら、GASプログラミングの基礎を学ぶシリーズをお送りしています。
前回の記事はこちらです。
GASのスクリプト実行時の認証についてお伝えしました。
さて、これまでの記事では、基礎中の基礎過ぎて、Botの香りは全然なかったんですが、今回からようやくBotっぽさ出していきますよ!
今回は、GASでスプレッドシートを操作していく際に知っておくべき、オブジェクトとその基礎についてお伝えします。
また、オブジェクトSpreadsheetAppについて、そして、アクティブなスプレッドシートを取得する方法もお伝えしますよ。
では、行ってみましょう!
作成するBotの説明
まず、どんなBotを作成するのかについて説明をしておきますね。
以下のようなスプレッドシートを用意しました。
珠玉の名言を集めたリストです。
これらのリストの中から、何かしらかの法則で一つを選んで、ChatworkやSlackなどのチャットサービスに定期的に送信するBotツールの作成を目指したいと思います。
なお、みなさんの好みの名言一覧をぜひ作成いただきたいのですが、ちょっとめんどいな~という方のために、以下スプレッドシートを公開しております。
どうぞコピーしてご活用ください(たまにアクセス権のリクエストをくださる方がいるのですが、「コピー」すれば自由に使えますからね。コピーして使ってください)。
オブジェクトとは
GASでは、スプレッドシートをはじめ各サービスの操作対象とするモノを「オブジェクト」と言います。
スプレッドシートを取り扱うSpreadsheetサービスでは、以下のようなオブジェクトが用意されています。
- スプレッドシート:Spreadsheetオブジェクト
- シート:Sheetオブジェクト
- セル範囲:Rangeオブジェクト
また、それらを操作するために、メソッドとよばれるたくさんの命令が用意されています。
Spreadsheetオブジェクト・Sheetオブジェクト・Rangeオブジェクト
例えば、3行目のアインシュタインの名言を送りたいとします。
その場合、まずスプレッドシート「名言Bot」のシート「シート1」のA3セルの値を取得するという処理をする必要があります。
オブジェクトへの操作という視点で、この操作を表現すると以下のようになります。
- スプレッドシート「名言Bot」を、Spreadsheetオブジェクトとして取得する
- そのSpreadsheetオブジェクトの配下にあるシート「シート1」を、Sheetオブジェクトとして取得する
- そのSheetオブジェクトの配下にあるA3セルを、Rangeオブジェクトとして取得する
- そのRangeオブジェクトの値を取得する
アクティブなスプレッドシートを取得する
では、具体的にそれらの処理の仕方を確認していきましょう。
まず、スプレッドシートをSpreadsheetオブジェクトとして取得します。
その方法はいくつかあるのですが、コンテナバインドスクリプトの場合、最も簡単なのはアクティブなスプレッドシートを取得するgetActiveSpreadsheetメソッドを使う方法です。
アクティブなスプレッドシートというのは、スクリプトがバインドしているスプレッドシートのことです。
なので、このメソッド一つで一意にスプレッドシートが決まるのです。
書き方はこちらです。
オブジェクトSpreadsheetAppとは
さて、「SpreadsheetApp」というのが出てきますが、これは何でしょう?
これは、Spreadsheetサービスでいうところのトップレベルのオブジェクトと呼ばれるものです。
スクリプトからスプレッドシートサービスの何らかのオブジェクトを操作する場合には、まずこのSpreadsheetAppオブジェクトを経由して取得しにいく必要があります。
Spreadsheetサービスの最も上位にあるオブジェクト、オブジェクトの大親玉、そんな感じです。
アクティブなスプレッドシート名をログ出力するスクリプト
では、簡単な例を紹介しましょう。
以下のようなスクリプト作成します。
function myFunction() { const ss = SpreadsheetApp.getActiveSpreadsheet(); console.log(ss.getName()); }
アクティブなスプレッドシートを取得して、それを変数ssに格納します。
その変数を使って、取得したスプレッドシート名をログ出力するというものです。
getNameメソッドはその名の通り、スプレッドシート名を取得するメソッドです。
実行すると、以下のように、スプレッドシート名「名言Bot」がログ出力として得られます。
まとめ
以上、Google Apps Scriptでスプレッドシートを操作する際の「オブジェクト」の基礎中の基礎についてお伝えしました。
- オブジェクトとは何か
- Spreadsheetサービスで取り扱えるオブジェクト(Spreadsheetオブジェクト、Sheetオブジェクト、Rangeオブジェクト)
- オブジェクトSpreadsheetAppとは
- アクティブなスプレッドシートを取得するgetActiveSpreadsheetメソッド
などなど、いずれも超重要項目ですね…!
ぜひバッチリ押さえておいてください。
では次回、今回の続きで、シートの取得の方法についてお伝えします。
どうぞお楽しみに!
連載目次:超初心者向けGASでBotを作りながら基礎を学ぶ
Google Apps Script(GAS)をはじめるためのメリットは山程ありますが、何を作ったらいいの?と悩んでしまうこともありますよね。そんな時に、おすすめしたいのが「Bot」の作成です。このシリーズでは、超初心者向けにGASでBotを作る方法を題材としながら、GASプログラミングの一通りの流れと書き方について学んでいきます。- 【初心者向けGAS】本当の最初の一歩!スクリプトエディタでプロジェクトを開く
- 【初心者向けGAS】はじめてのスクリプトを作成し、保存し、実行する
- 【初心者向けGAS】プログラミングに必須の変数&定数の使い方とデータ型について
- 【初心者向けGAS】ログを表示するconsole.logの使い方とテンプレート文字列
- 【初心者向けGAS】スクリプト実行時の「承認」でびっくりしないために
- 【初心者向けGAS】Spreadsheetサービスの「オブジェクト」の基礎の基礎を知ろう
- 【初心者向けGAS】スプレッドシートのシートを取得する2つの方法
- 【初心者向けGAS】スプレッドシートのセル・セル範囲とその値を取得する方法
- 【初心者向けGAS】for文を使ったスプレッドシートの繰り返しの超基本
- 【初心者向けGAS】条件分岐をするif文の使い方の超基本
- 【初心者向けGAS】スプレッドシートのセルに値を入力する基礎の基礎
- 【初心者向けGAS】条件に応じてループを制御する2つの方法~break文とwhile文~
- 【初心者向けGAS】スプレッドシートのセル範囲を行数・列数を使って取得する
- 【初心者向けGAS】スプレッドシートのセル範囲をクリアするいくつかの方法
- 【初心者向けGAS】Google Apps ScriptでWeb APIを活用するための基礎知識
- 【初心者向けGAS】面倒なことはライブラリに任せよう!その概要と追加の方法
- 【初心者向けGAS】Chatworkのマイチャットにメッセージを送る最も簡単な例
- 【初心者向けGAS】Google Apps Scriptで別の関数を呼び出すfunctionの書き方
- 【初心者向けGAS】時限式のイベントトリガーを設置して決まった時刻にBotを送信する方法
- 【初心者向けGAS】プロパティストアの概要とスクリプトプロパティの編集方法
- 【初心者向けGAS】スクリプトプロパティを操作してそのデータを取り出す方法
- 【初心者向けGAS】スプレッドシートのセル範囲の値を二次元配列として取得して取り扱う方法
- 【初心者向けGAS】Chatworkのメッセージ記法でBot送信するメッセージを装飾する方法
- 【初心者向けGAS】Google Apps Scriptのドキュメンテーションコメントの書き方