【初心者向けGAS】スプレッドシートのセル・セル範囲とその値を取得する方法


cells

photo credit: RecondOil Solar Panels Green via photopin (license)

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

初心者向けにBotづくりを目指してGoogle Apps Scriptプログラミングの基礎をシリーズでお伝えしています。

前回の記事はこちら。

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

GASでスプレッドシートのシートを取得する方法についてお伝えしました。

今回は、その続きとして、Google Apps ScriptでRangeオブジェクト、つまり、セルやセル範囲とその値を取得する方法についてお伝えします。

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

前回までのおさらいと今回のお題

題材としているスプレッドシートはこちらです。

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

まず、Bot作りをするために、このリストからあるセルを取得する必要があるとします。例えば、A3セルの値を取得するのであれば

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

という手順のスクリプトを組む必要があります。

前回までのおさらいとして、以下のスクリプトを組んでみました。

これで、上記手順の1,2まで、つまりSheetオブジェクトは取得できましたので、今回はその残り、セルとその値の取得を目指していきたいと思います。

getRangeオブジェクトでセル範囲を取得する

Sheetオブジェクトの特定のセルまたはセル範囲を取得するにはgetRangeメソッドを使います。

getRangeメソッドは、以下の2通りの使い方があります。

  • アドレスを指定してセル範囲を取得する
  • 行番号、列番号、行数、列数を指定してセル範囲を取得する

今回は、前者の「アドレス」を使った方法を中心に解説を進めていきます。

アドレスを指定してセル範囲を取得する

アドレスは「A3」や「A1:E5」などといった、セルのアドレスです。

普段スプレッドシートを使用していればわかりますよね。

アドレスを文字列としてgetRangeメソッドの引数として渡すことで、そのセル範囲を取得することができます。

Sheetオブジェクト.getRange(アドレス)

単体のセルとその値を取得する

では、まず単体のセルとその値を取得してみましょう。

例えば、以下のようにすれば、A3セルの値をログ出力することができます。

結果はこちらですね。

GASでスプレッドシートのセルの値をログ出力した

ちゃんとA3セルの値がログ出力されているのが確認できます。

getValueメソッドでセルの値を取得する

上記スクリプトで使用されているgetValueメソッドですが、これは単体セルの値を取得するメソッドです。

Rangeオブジェクト.getValue()

複数セルとその値を取得する

では、例えば以下のようなスクリプトを実行したらどうなるでしょうか。

取得しているRangeオブジェクトは「セル範囲」ですが、値の取得は単体セル用のgetValueメソッドですよね。

実行すると以下のようになります。

GASでスプレッドシートのセルの値をログ出力した

先程と全く同じですね。

つまり、Rangeオブジェクトがセル範囲の場合にgetValueメソッドを使うと、セル範囲の一番左上のセルの値のみを取得するということになります。

getValuesメソッドでセル範囲の値を取得する

さて、セル範囲の値をまとめて取得したい場合には、getValuesメソッドを使う方法があります。getValuesということで、複数形ですね。

書き方はこちらです。

Rangeオブジェクト.getValues()

例えば、以下のスクリプトを実行してみましょう。

GASでスプレッドシートのセル範囲の値を配列で取得する

わかりますでしょうか?

見やすく整理すると、以下のように二次元配列にセル範囲の値が格納されていることがわかります。

各行のデータ群(レコード)が配列になっていて、それを要素とする二次元配列になっているということです。

このシリーズの後半で配列について触れていきますが、スプレッドシートのセル範囲はよくこのような二次元配列として取り扱うのが有効な手段となりますので、なんとなく覚えておいていただければと思います。

まとめ

以上、Google Apps Scriptでセルやセル範囲とその値を取得する方法についてお伝えしました。

  • getRangeメソッドでセルやセル範囲を取得する
  • getValueメソッドで単体セルの値を取得する
  • getValuesメソッドでセル範囲の値を配列として取得する

getRangeオブジェクトのもう一つの使い方である行番号や列番号を使う方法、またセル範囲を二次元配列で扱う方法については、またシリーズ後半の別の記事で紹介していきますね。

さて、次回ですが、スプレッドシートの上から順番にセルの値を取得する方法についてお伝えします。

【初心者向けGAS】for文を使ったスプレッドシートの繰り返しの超基本
初心者向けGoogle Apps Script超入門、GASプログラミングの基本を学んでいきます。今回は、for文を使った繰り返しの超基本。カウント変数、初期化式、条件式、増加式の意味と使い方です。

どうぞお楽しみに!

連載目次:超初心者向け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のドキュメンテーションコメントの書き方

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

コメント