Shoeisha Technology Media

CodeZine(コードジン)

特集ページ一覧

Google Apps ScriptでスプレッドシートからGoogleドキュメント以外のサービスにアクセスする

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

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

 Google Apps Scriptでは、GoogleドキュメントのみならずGoogleコンタクトやGoogleカレンダーなど多くのサービスにアクセスすることができま す。それらをGoogleスプレッドシートから利用してみましょう。

目次

はじめに

 Google Apps Scriptでは、GoogleドキュメントのみならずGoogleコンタクトやGoogleカレンダーなど多くのサービスにアクセスすることができます。それらをGoogleスプレッドシートから利用してみましょう。

対象読者

  • Web版オフィスアプリケーションの導入を考えている方。
  • GoogleドキュメントまたはGoogle Appsを既に使っている人。
  • 各種のWebサービスの自動化を考えている人。

スクリプトを関数として使う

 前回、Google Apps Scriptの基本操作と、スプレッドシートの基本的な扱いについて説明をしました。今回は、スクリプトの利用についてさらに深く考えてみましょう。まずは、「スクリプトを関数としてセルに設定する」ということからです。

 Google Apps Scriptは、関数としてスクリプトを定義しますが、この関数は、Googleスプレッドシートに用意されている関数と同様にセルに設定し、自動的に計算させることが可能です。実際に簡単なサンプルを作ってみましょう。

function myFunc(n){
  var total = 0;
  for(var i = 1;i <= n;i++)
    total += i;
  return total;
}
図1 セルにmyFunc関数を設定すると、引数に指定したセルの値を取得し合計を表示する。
図1 セルにmyFunc関数を設定すると、引数に指定したセルの値を取得し合計を表示する。

 これは、セルでの利用を考えた関数です。ゼロから、引数に渡された値(整数)までの合計を計算してreturnするというごく単純なものです。例えばA1セルに「100」と記述し、A2セルに「=myFunc(A1)」というように関数を設定してみましょう。「5050」という数字が自動的に計算され表示されます。セルでの利用を考えた関数は、以下の2点を考えて設計する必要があります。

  1. 他のセルの値などを利用して処理をする場合、引数にセルの指定を渡して処理をします。このとき、例えば「=myFunc(A1)」というようにA1セルが指定されると、myFunc関数の仮引数nにはA1セル(のRange)ではなく、A1セルの値が渡されます。
  2. 計算結果は、returnで返します。この値が、関数を設定したセルに表示されます。

 セルの指定が引数で渡されると、スクリプトの仮引数にはセル自体ではなくその値が渡される、という点にさえ注意すれば、関数を作成するのはそれほど難しくはありません。ただし、ここでの例は、単純に「1つのセルが選択された場合」のみを想定していました。が、実際には多数のセルを範囲指定して処理をする場合もあります。

 こうした場合、スクリプトの仮引数には、指定されたセル範囲の値が2次元配列としてまとめられて渡されます。ですから、二重の繰り返しなどにより渡された配列の要素を処理するようにスクリプトを記述する必要があります。例をあげましょう。

function myFunc(arr){
  var total = 0;
  for(var i = 0;i < arr.length;i++)
    for (var j = 0;j < arr[i].length;j++)
      total += arr[i][j] * 1;
  return total;
}
図2 指定した範囲内のセルの合計を計算し表示する。
図2 指定した範囲内のセルの合計を計算し表示する。

 これは、選択されたセルの値すべてを合計する(つまり、SUM関数と同じ処理をする)サンプルです。二重の繰り返しを使い、仮引数のarrから順に値を取り出し処理しています。

 このように単独セルと、複数セルの場合で引数の扱いが多少変わります。両方のケースに対応させたい場合は、渡された値の内容を確認し、単独セルか複数セルかで処理を分岐するなどすればよいでしょう。


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

著者プロフィール

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

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

バックナンバー

連載:速習Google Apps Script
All contents copyright © 2005-2019 Shoeisha Co., Ltd. All rights reserved. ver.1.5