Contents
Google App Script(GAS)とは?
Google App ScriptとはGoogleが提供する無料のスプレッドシートを自動化するためのスクリプト言語のことです。
ん?スプレッドシート?初めて聞いた方もいるかもしれないです!
スプレッドシートとはGoogleが無料で提供するExcelのブラウザ版みたいなものです。
ブラウザでアクセスなので、特定のユーザー間で共有したり編集を行うことができます。
そしてExcelとは違いローカルに落とす必要もないので、ファイルなどの管理が煩雑かしないことも特徴ですし、さらにはオフラインで編集をしてもオンラインになったら自動的に保存もしてくれる高機能版Excelです!
Googleアカウントさえあればいつでもどこでも無料で使用できます!
Excelでも同じようにコードを書いて自動化できるVBAという言語がありますが、
そのExcelではなくGoogleスプレッドシート版みたいなところです。
ただExcelと違ってブラウザでコードが書けるので、実はサーバサイド的な簡易的なWebサーバを作成することもできてしまいます。
GASを理解する上で大事な4つのオブジェクト
スプレッドシートには以下の4つのオブジェクトがあります。
1. スプレッドシート自体:ブック
2. シート
3. 範囲(セルの複数)
4. セル(1つのセル)
なのでブックを指定するとその内部のシートを扱うことができて、
シートを指定するとその中の範囲とセルを扱うことができます。
範囲やセルを指定しても、そのセルがどのブックのどのシートなのかがわからないとプログラムはどのセルを参照するのかわかりません。
なのでセルをいじる場合は、ブック、シートを指定します。
このように、
ブック>シート>範囲、セル
というような大小関係が存在します。
シートをいじりたい場合は、
それよりも上位のオブジェクトであるブックが定まらないとどのスプレッドシートのシートをいじるのかわからないし、
セルをいじりたいのであれば、それより上位のオブジェクトであるブックとシートを定めないと、
どのスプレッドシートのどのシートのセルをいじるかがわからない。
そのため、セルをいじりたいのであれば事前に参照するスプレッドシートとシートを指定しておく必要があります。
Google App Scriptの起動方法
スプレッドシートのツール>スクリプトエディタでGASを起動することができます。
簡単なサンプルコード
SpreadsheetApp.getActiveSpreadsheet().getSheetByName('a').getRange('A1:C5').getValues() SpreadsheetApp:スプレッドシートを扱うための最上位オブジェクト getActiveSpreadsheet():現在使用しているスプレッドシートのオブジェクト getSheetByName('a'):現在参照しているスプレッドシートのこのシートを扱うように指定 getRange('A1:C5'):現在参照しているシートのこの範囲のセルを指定 getValues():現在参照しているセルの範囲の値を取得 //========================= SpreadsheetApp.getActiveSpreadsheet().getSheetByName('a').getRange('A1').getValue(); getRange('A1'):現在参照しているシートのセルを指定 getValue():現在参照しているセルの値を取得(1つなので単数形) // ==== 書き込み ===== SpreadsheetApp.getActiveSpreadsheet().getSheetByName('a').getRange('A10').setValue(100); セルに書き込むので、setValue()でOK getValueの逆 SpreadsheetApp.getActiveSpreadsheet().getSheetByName('a').getRange('A10:C10').setValue(100); 範囲のセルに100を書き込む
ボタンをクリックしたら実行する
スプレッドシート上に図形から□を表示する。
カーソルと当てると3点ぽちが出てくるので、それをクリックすると
GASの関数を割り当てることができて、
ボタンをクリックした時その関数を実行して処理してくれるようになる。
図形を作成して、以下のように図形に3つの点が出てきます。
クリックすると、以下のように「スクリプト割り当て」が出てくるのでクリックします。
そうするとGASで作成した実行したい関数名を指定します。
これでこの図形(ボタン)をクリックすると、その関数が実行されてExcelのマクロのように一括処理が行われます。