techium

このブログは何かに追われないと頑張れない人たちが週一更新をノルマに技術情報を発信するブログです。もし何か調査して欲しい内容がありましたら、@kobashinG or @muchiki0226 までいただけますと気が向いたら調査するかもしれません。

GAS事始め(その1):スプレッドシートを操作する

社内ツールとしてGoogle DocsGmailを使用している人も最近では多いと思いますが、しっかり使いこなせているでしょうか。 私は使いこなせていません。

GoogleのサービスはGAS(Google Apps Script)と連携することにより、アイディア次第でサービス間を横断した非常に強力な ツールを構築することができます。この記事では最も利用頻度が高いと思われるスプレッドシートをGASから制御する 基本的な操作方法を紹介します。

スクリプトの作成方法

GASにはスタンドアロン型と埋込み型がありますが、まずは簡単な埋込み型から試してみましょう*1

埋込み型のスクリプトを試すには、まず適当なスプレッドシートを作成して、メニューバーから「ツールスクリプトエディタ」を選択します。するとGASを記述するためのスクリプトエディタが表示されます。ここに入力されたスクリプトは、このスクリプトエディタを 開いたスプレッドシートに対して実行されます。これが埋込み型のスクリプトです*2

スプレッドシートを操作する

スプレッドシートに対して可能な操作は多岐に渡りますが、よほど特殊なことをしたいという場合でもない限り おおよそ何でもできると言っても差し支えないと思います。

可能な操作をざっとあげると以下のものがあります。

  1. アクティブなセルの値の取得/セット
  2. 任意のセルの値を取得/セット
  3. 任意のセルに名前を付与/削除
  4. 任意の名前のセルの値を取得/削除
  5. シート名・ファイル名の設定
  6. 任意の名前でシートを作成/削除
  7. カスタムメニューを追加する
  8. カスタム関数を追加する

他にもまだまだ使用可能な操作はありますが、上記の操作だけでもかなり色々なことが できそうで夢が広がりますね。

スクリプトを実行する

どんな感じの操作ができるかわかったところで、とりあえず何かスクリプトを実行してみましょう。

サンプルのスクリプトを用意したので、以下のコードをスプレッドシートスクリプトエディタに貼り付けて実行してみてください。

GAS事始め(その1):スプレッドシート基本操作

メニューバーのすぐ下のツールバー的なところに再生ボタン(青枠)と実行する関数名(ピンク枠)が表示されているので、関数名が実行したい関数名になっていることを確認して再生ボタンをクリックすると、対象の関数が実行されます。 f:id:snishimura0926:20160309235941p:plain

なお初回の実行時にはスクリプト実行の許可を求めるダイアログが表示されるので、「続行」をクリックしてください。 続行をクリックするとスクリプト実行権限を許可するページが新規タブに表示されるので、「許可」をクリックしてください。これでGASが実行できるようになります。

実行前はこんな感じですが f:id:snishimura0926:20160310000018p:plain

スクリプト実行後はこんな感じになります。 f:id:snishimura0926:20160310000221p:plain

スプレッドシート名の変更、シートの追加、任意のセルの指定、値のセット、セルの移動等々の操作が実行できていることがわかります。 今回使用したAPIは以下のものです。

メソッド 概要
SpreadsheetApp.getActiveSpreadsheet() アクティブなスプレッドシートの参照を取得する
Spreadsheet.rename(newName) スプレッドシート名をnewNameに変更する
Spreadsheet.insertSheet(sheetName) スプレッドシートに名前がsheetNameのシートを追加する。シート名だけではなくインデックスやその他のオプションを指定してシートを追加することもできる
Spreadsheet.getActiveSheet() アクティブなシートの参照を取得する
Sheet.getRange(A1Notation) シート内の指定位置のセル(GASではRangeと呼ばれる)を取得する。指定方法はA1, B3のような指定*3と(1, 3)のように行、列を指定する方法がある
Spreadsheet.getName() スプレッドシート名を取得する
Range.setValue(value) セルに値をセットする
Range.moveTo(A1Notation) 引数で指定したRangeに参照を移動する
Sheet.sort(Column) 指定した列の値を昇順でソートする

それぞれの処理はサンプルコードのコメントを参考にしてください。

まとめ

今回はGASからスプレッドシートに対して、いくつか基本的な操作を実行してみました。 次回以降はGASの基本的なクラスやらライフサイクルやらを見ていきます。

リファレンスを一通り眺めてみると、他にどんなことができそうかイメージが湧くと思います。 https://developers.google.com/apps-script/guides/sheets

*1:埋込み型というのは若干意訳気味だけど間違ってはいまい

*2:埋込み型というのは若干(ry

*3:この指定方法がA1Notationといわれるもの。この指定方法は他の多くのAPIでも有効