複数のセルの操作
ここでは、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の範囲を指定するより処理が簡単です。
