Quantcast
Channel: いつも隣にITのお仕事
Viewing all articles
Browse latest Browse all 2089

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

$
0
0
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オブジェクトの値を取得する

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

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

function myFunction() {
  var sheet = SpreadsheetApp.getActiveSheet();
  Logger.log(sheet.getName());
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

function myFunction() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var range = sheet.getRange('A3');
  Logger.log(range.getValue());
}

結果はこちらですね。

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

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

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

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

Rangeオブジェクト.getValue()

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

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

function myFunction() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var range = sheet.getRange('A3:C4');
  Logger.log(range.getValue());
}

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

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

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

先程と全く同じですね。

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

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

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

書き方はこちらです。

Rangeオブジェクト.getValues()

例えば、以下のスクリプトを実行してみましょう。
GASでスプレッドシートのセル範囲の値を配列で取得する

わかりますでしょうか?

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

[
  [A3セルの値, B3セルの値, C3セルの値], 
  [A4セルの値, B4セルの値, C4セルの値] 
]

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

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

まとめ

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

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

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

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

どうぞお楽しみに!

連載目次:超初心者向け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】スプレッドシートのセル・セル範囲とその値を取得する方法

Viewing all articles
Browse latest Browse all 2089

Trending Articles



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