Google Apps ScriptでGoogleドキュメントのスプレッドシートを操作する
Google Apps ScriptによるGoogleドキュメントの操作(1)
複数のセルの操作
ここでは、Rangeで指定したのが1つのセルだけでしたから、単純にgetValue/setValueで値を操作できました。が、複数のセルを操作する場合はそうもいきません。getValueでは、選択された最初のセルの値しか取り出せないのです。このような場合には、「getValues」を使って、全セルの値をまとめて取得します。
function myFunction() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];
var cells = sheet.getRange("A1:A3");
var values = cells.getValues();
var total = 0;
for(var i in values){
total += values[i] * 1;
}
Browser.msgBox("合計:" + total);
}

これを実行すると、A1~A3セルの合計を計算して画面に表示します。ここでは、次のようにしてセルの値をまとめて取得しています。
var cell= sheet.getRange("A1:A3");
var values = cell.getValues();
範囲を指定してセルのRangeを取得する場合、指定の仕方はいろいろとあるのですが、最も分かりやすいのは、"A1:A3"というように範囲の2点(左上と右下)のセルをコロンで区切ったテキストとして指定する方法でしょう。こうして範囲指定することにより、getRangeで複数のセルをまとめてあつかうRangeが取得できます。そこから値を取得する「getValues」は、Rangeで指定した全セルの値を配列としてまとめて返します。後は、その配列から順に値を取り出して処理していけばいいわけです(ただし、複数列に渡って選択されている場合には修正が必要です。これについては後述します)。
選択されたセルの処理
続いて、Rangeの範囲をあらかじめ決めておくのではなく、ユーザーが選択した範囲のセルを操作してみることにしましょう。これは、1列のみ選択した場合とそうでない場合で若干違いがあります。まず、1列のみ選択された場合を見てみましょう。
function myFunction() {
var range= SpreadsheetApp.getActiveRange()
var values = range.getValues();
var total = 0;
for(var i in values){
total += values[i] * 1;
}
Browser.msgBox("合計:" + total);
}

選択された範囲は、SpreadsheetAppオブジェクトにある「getActiveRange」で得ることができます。後は、基本的に先のサンプルと同じです。getValuesで値をまとめて取得し処理するだけです。getActiveRangeを使えば、いちいちSheetを取得してRangeを取得してといった手順を省けるので、直接Rangeの範囲を指定するより処理が簡単です。
この記事は参考になりましたか?
- 速習Google Apps Script連載記事一覧
-
- Google Apps ScriptでスプレッドシートからGoogleドキュメント以外のサ...
- Google Apps ScriptでGoogleドキュメントのスプレッドシートを操作する
- この記事の著者
-
掌田 津耶乃(ショウダ ツヤノ)
三文ライター&三流プログラマ。主にビギナーに向けたプログラミング関連の執筆を中心に活動している。※現在、入門ドキュメントサイト「libro」、カード型学習サイト「CARD.tuyano.com」を公開...
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア
