SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

速習Google Apps Script

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

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

  • X ポスト
  • このエントリーをはてなブックマークに追加

選択範囲に応じた関数の設定

 このように、setFormula("=SUM(A1:A9)")といった形でテキストとして関数を設定するのは非常に簡単に行えます。が、引数にセルの範囲を指定して使う場合、そのセル範囲をダイナミックに指定する場合もあるでしょう。このような場合には、どのようにしてセル範囲を取得し指定するかを考える必要があります。

 例として、「選択されたセル範囲の合計を、その下にあるセルに表示する」という場合を考えてみましょう。マウスでセルを選択してスクリプトを実行すると、その各列の合計を、選択されセル範囲のすぐ下のセルにSUM関数を使って表示します。つまり、現在選択されているセル範囲を基に、関数を設定するセルと、そこに用意するSUM関数の引数(どのセル範囲を合計するか)をダイナミックに取得し設定するわけです。

function setSUM(){
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var range = sheet.getActiveRange();
  var r = range.getRowIndex();
  var rw = range.getHeight();
  var c = range.getColumnIndex();
  var cw = range.getWidth();
  var nextrange = sheet.getRange(r + rw,c,1,cw);
  for(var i = 0;i < cw;i++){
    var rowrange = sheet.getRange(r,c + i,rw,1);
    var A1str = rowrange.getA1Notation();
    var cell = nextrange.getCell(1, i + 1)
    cell.setFormula("=SUM(" + A1str + ")");
  }
}
図6 選択されたセル範囲で、各列ごとの合計を選択されたセルの下に表示する。
図6 選択されたセル範囲で、各列ごとの合計を選択されたセルの下に表示する。

 選択されたセル範囲は、getActiveRangeで得られます。そのセル範囲は、以下の関数を使うことで調べることができます。

セル範囲を調べる関数
関数名 概要
getRowIndex Rangeの一番最初の行番号を返します。
getColumnIndex Rangeの一番最初の列番号を返します。
getLastRow Rangeの一番最後の行番号を返します。
getLastColumn Rangeの一番最後の列番号を返します。
getHeight Rangeの行数を返します。
getWidth Rangeの列数を返します。

 また、行・列の番号をもとにしてRangeを取得する場合、getRangeの引数にそれらを指定してやります。例えば次のような具合です。

《Sheet》.getRange( 行番号 , 列番号 )
《Sheet》.getRange( 行番号 , 列番号 , 行数 , 列数 )

 これらのメソッドを利用することで、選択された範囲を調べたり、それに隣接するセルの行列番号を取得したりできるようになります。では、SUM関数の引数に指定するセル範囲の表記はどのようにして取得するのでしょうか。SUMなどの関数では、行列番号ではなく、"A1:A10"といった形式でセルを指定します。

 この表記を調べるには、Rangeオブジェクトの「getA1Notation」というメソッドを利用します。これは、そのRangeの"A1"形式の表記テキストを返すメソッドです。これで取得したテキストをSUM関数の引数に渡し、setFormulaすればいいわけです。

ユーザー情報の取得

 Google Apps Scriptは、Googleスプレッドシートだけで利用可能なものではありません。その他のサービスと連携した処理もいろいろと用意されています。それらについても紹介しましょう。まずは、ユーザー情報についてです。

function showUserData(){
  var user = Session.getUser();
  var mail = user.getEmail();
  var id = user.getUserLoginId();
  Browser.msgBox(mail + "\n" + id);
}
図7 ログインユーザーのIDとメールアドレスを表示する。
図7 ログインユーザーのIDとメールアドレスを表示する。

 これは、ログインしているユーザーのIDとメールアドレス(通常、両者は同じになります)を表示するサンプルです。アクセスしているユーザーに関する情報は、「User」オブジェクトとして用意されています。これは、セッションを管理する「Session」オブジェクトから取得できます。「Session.getUser()」を呼び出すことで、現在ログインしているユーザーのUserオブジェクトが得られます。

 このUserオブジェクトには「getEmail」「getUserLoginId」といったメソッドが用意されています。これらにより、ユーザーのメールアドレスやログインIDが取得できます。ログインしているユーザーのチェックなどに利用できます。

次のページ
Gmailの送信

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
速習Google Apps Script連載記事一覧
この記事の著者

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

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

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/5064 2010/04/26 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング