CodeZine(コードジン)

特集ページ一覧

Google Apps ScriptでGoogleドキュメントのスプレッドシートを操作する

Google Apps ScriptによるGoogleドキュメントの操作(1)

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2010/04/21 14:00

目次

複数のセルの操作

 ここでは、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);
}
図8 A1~A3までのセルの合計を計算し表示する。
図8 A1~A3までのセルの合計を計算し表示する。

 これを実行すると、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);
}
図9 選択した範囲のセルの合計を計算する。ただし、これは1列のみ選択した場合。
図9 選択した範囲のセルの合計を計算する。ただし、これは1列のみ選択した場合。

 選択された範囲は、SpreadsheetAppオブジェクトにある「getActiveRange」で得ることができます。後は、基本的に先のサンプルと同じです。getValuesで値をまとめて取得し処理するだけです。getActiveRangeを使えば、いちいちSheetを取得してRangeを取得してといった手順を省けるので、直接Rangeの範囲を指定するより処理が簡単です。


  • LINEで送る
  • このエントリーをはてなブックマークに追加

バックナンバー

連載:速習Google Apps Script

著者プロフィール

  • 掌田 津耶乃(ショウダ ツヤノ)

    三文ライター&三流プログラマ。主にビギナーに向けたプログラミング関連の執筆を中心に活動している。 ※現在、入門ドキュメントサイト「libro」、カード型学習サイト「CARD.tuyano.com」を公開中。またGoogle+プロフィールはこちら。

あなたにオススメ

All contents copyright © 2005-2021 Shoeisha Co., Ltd. All rights reserved. ver.1.5