# Google Spreadsheetの弱点
Google Spreadsheetは、もはや説明不要の便利な表計算ツールですね。
ブラウザ上で立ち上げられることと、特殊な操作が不要で複数人が編集可能であることが、
大きな強みとして挙げられると思います。
関数群も豊富で、もはやちょっとしたツールなら、Webアプリを作るよりも遥かに早く、
目的のツールを作ることが出来てしまいます。
しかし、そんなSpreadsheetにも、弱点が存在します。
それは、
マクロが標準装備されていない
んですね。
関数は豊富ですが、それはあくまで与えられた値を計算して出力するもの、
直接値を書き換える必要があるときには使うことが出来ません。
表計算ツールとして考えるとそれで十分なのですが、
やはり、値の書き換えは出来たほうがやれることの幅が広がる...。
そんな時に役に立つものがありました。
それが、 Apps Scriptです!!
# Google Apps Script
Apps Script (以下:GAS) は、Googleが提供するサービスの自動化をすることを主目的にされたスクリプト言語です。
使い慣れたJavascriptライクな構文を使用することが出来ます。
このスクリプトの記述も、ブラウザ上で編集/実行/テストが可能という特徴を持ち、
ローコストな開発が可能です。
https://workspace.google.co.jp/intl/ja/products/apps-script/
# SpreadsheetでのGASの使い方
## 新規作成
まずは新規でSpreadsheetを作成します。
メニュータブのなかから、拡張機能を選び、AppsScriptを選びます。
AppsScriptの画面が開き、無題のプロジェクトと言う名前で、空の関数が作成されていると思います。
```javascript
function myFunction() {
}
```
では実際にスクリプトを書いてみましょう。
```javascript
function myFunction() {
Logger.log("hello world.")
}
```
保存し、実行ボタンを押してみましょう。
画面下部の実行ログに
```
情報 hello world.
```
と出力されていたら、成功です。
## Spreadsheetの値を取得する
このままでは何ら意味のない、単体の文字を出力するだけのスクリプトなので、 実際にSpreadsheetの値を取得してみます。
Spreadsheet側の <b>A1</b> セルに、<b>I'm spread sheet</b> と入力します。
次に、GAS側で次のようにスクリプトを作成します。
```javascript
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に値を書き込む
次に書き込みを行う方法を記載します。
スクリプトを以下のように変更します。
```javascript
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セルに、<b>I am Google App Script.</b>
という文言が追加されているはずです。
## マクロ化
Spreadsheetから取得と、Spreadsheetへの書き込み、2つのインターフェースを使用できました。
取得した値はJavascriptの要領で、様々に加工可能です。
可能した値をSpreadsheetへの書き込みを用いれば、好きなようにSpreadsheetを変更可能です。
これにより、Spreadsheetの値を用いて、Spreadsheetへ書き込むという事が可能になり、
値の直接書き換えという当初の目的を達することが出来ます。
SmartBee
作業項目や現場情報の一括管理を可能にするクラウドサービスです。
SmartBeeを導入すれば、管理業務の負担が減るばかりでなく、点検現場の状況をリアルタイムで把握でき、ミスやコスト削減につながります。