Google Spreadsheetの弱点
Google Spreadsheetは、もはや説明不要の便利な表計算ツールですね。
ブラウザ上で立ち上げられることと、特殊な操作が不要で複数人が編集可能であることが、
大きな強みとして挙げられると思います。
関数群も豊富で、もはやちょっとしたツールなら、Webアプリを作るよりも遥かに早く、
目的のツールを作ることが出来てしまいます。
しかし、そんなSpreadsheetにも、弱点が存在します。
それは、
マクロが標準装備されていない
んですね。
関数は豊富ですが、それはあくまで与えられた値を計算して出力するもの、
直接値を書き換える必要があるときには使うことが出来ません。
表計算ツールとして考えるとそれで十分なんですが、
やはり、値の書き換えは出来たほうがやれることの幅が広がる…。
そんな時に役に立つものがありました。
それが、Google Apps Scriptです!!
Google Apps Script
Google Apps Script (以下:GAS) は、Googleが提供するサービスの自動化をすることを主目的にされたスクリプト言語です。
使い慣れたJavascriptライクな構文を使用することが出来ます。
このスクリプトの記述も、ブラウザ上で編集/実行/テストが可能という特徴を持ち、
ローコストな開発が可能です。
SpreadsheetでのGASの使い方
新規作成
まずは新規でSpreadsheetを作成します。
メニュータブのなかから、拡張機能を選び、AppsScriptを選びます。
AppsScriptの画面が開き、無題のプロジェクトと言う名前で、空の関数が作成されていると思います。
function myFunction() {
}
では実際にスクリプトを書いてみましょう。
function myFunction() {
Logger.log("hello world.")
}
保存し、実行ボタンを押してみましょう。
画面下部の実行ログに
情報 hello world.
と出力されていたら、成功です。
Spreadsheetの値を取得する
このままでは何ら意味のない、単体の文字を出力するだけのスクリプトなので、
実際にSpreadsheetの値を取得してみます。
Spreadsheet側の A1 セルに、I'm spread sheet と入力します。
次に、GAS側で次のようにスクリプトを作成します。
function myFunction() {
// アクティブなSpreadsheetを取得
const spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
// アクティブなシートを取得
const activeSheet = spreadsheet.getActiveSheet()
// A1セルを取得
const range = activeSheet.getRange("A1")
// セルの値を取得
const val = range.getValue()
Logger.log(val)
}
これを実行してみましょう。
情報 I'm spread sheet
と出力されていたでしょうか?
Spreadsheet側のA1を変更すると、こちらの出力も連動して変更されます。
Spreadsheetに値を書き込む
次に書き込みを行う方法を記載します。
スクリプトを以下のように変更します。
function myFunction() {
// アクティブなSpreadsheetを取得
const spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
// アクティブなシートを取得
const activeSheet = spreadsheet.getActiveSheet()
// B1セルを取得
const range = activeSheet.getRange("B1")
// セルに値を設定
const val = range.setValue("I am Google App Script.")
}
実行してみましょう。今度は情報には特に何も表示されません。
ですが、Spreadsheet側を見てみると、
B1セルに、I am Google App Script.
という文言が追加されているはずです。
マクロ化
Spreadsheetから取得と、Spreadsheetへの書き込み、2つのインターフェースを使用できました。
取得した値はJavascriptの要領で、様々に加工可能です。
可能した値をSpreadsheetへの書き込みを用いれば、好きなようにSpreadsheetを変更可能です。
これにより、Spreadsheetの値を用いて、Spreadsheetへ書き込むという事が可能になり、
値の直接書き換えという当初の目的を達することが出来ます。