GoogleSpreadSheetを使う機会があり、色々調べてみたことを備忘録として記します。
当記事はGoogleSpreadSheetを用いてマクロの基本的な使い方までを記します。
GoogleSpreadSheetとは
Googleが提供しているエクセルのようなものです。
エクセルが使える人なら若干UIが違いますが、誰でも操作できると思います。
Excelと比較したメリットとしては
- クラウド上で保存されているため、どこからでも利用可能
- ドキュメントのアドレスを知っていれば誰でも編集可能(制限することも可能)
- リアルタイムでの複数人での更新が可能
- 履歴が保存されるためバックアップが容易にできる
などがあります。
一方、デメリットは
- クラウド上に保存されているため、インターネット環境がないとアクセスができない
- Excelよりも技術書や技術サイトが少ない
- サーバー上で動いているため多少のラグがある
- フォントの数や、罫線の種類等、機能が少ないものもある
などがあります。
GoogleSpreadSheetの始め方
Google Apps Script
GoogleSpreadSheetのマクロはGoogle Apps Script(以下、GAS)というJavaScriptをベースにしたプログラミング言語を用いています。
Google Apps Scriptの基本的な使い方
マクロの記録を用いたGAS
先ほどの手順でサンプルマクロを実行してみます。
上手く行きましたね!
マクロの編集
記録したのマクロのコードを直接見て編集する方法を解説します。
この時以下の画面が表示される場合、ログイン中のGoogleアカウントを確認してください。
デフォルトアカウント以外の場合以下の画面が表示されます。
-
6行目のA1:A10の部分をA1:A20に書き換えて、左上の保存ボタンを押下します。
spreadsheet.getActiveRange().autoFill(spreadsheet.getRange('A1:A20'), SpreadsheetApp.AutoFillSeries.DEFAULT_SERIES);
上手くできましたね!
マクロのインポート
マクロを新たに作成した場合、スプレッドシート上で動作させるためにはインポートする必要があります。
マクロの管理
ツール > マクロ > マクロの管理からインポート済みのマクロを管理することができます。
マクロ名の更新やショートカットキーの設定、マクロの編集やアウトポートができます。
GASで便利なコード
GASを使う上で便利なコードをまとめました。
コメントアウト
1行のコメントアウトの場合は「//」を使用します。
// この行はコメントアウト
var spreadsheet = SpreadsheetApp.getActive(); // コードの途中からでもコメントアウトできます。
複数行のコメントアウトの場合、先頭に「/」を、
最後尾に「/」を使用します。
/*
aaa
bbb
ccc
*/
ログの出力
以下のソースコードを実行後、スクリプトエディタの画面の表示 > ログからログを確認することができます。(ショートカットは⌘ + Enterキー)
console.log("Hello GAS!!");
メッセージボックス
以下のコードでメッセージボックスを出すことができます。
変数の確認に便利です!
Browser.msgBox("Hello GAS!!");
▼出力結果
様々なメッセージボックス
メッセージボックスで「はい」や「いいえ」、「キャンセル」等のボタンを表示したい場合は以下の通りになります。
var answer = Browser.msgBox([任意"ここにタイトル",] "ここに本文",ボタン種別);
第一引数はタイトルで任意項目となります。
第二引数は本文を入力します。
第三引数はボタン種別で、以下の項目からの選択となります。
第三引数 | 表示ボタン | 出力例 |
---|---|---|
Browser.Buttons.OK | OK | |
Browser.Buttons.OK_CANCEL | OK キャンセル |
|
Browser.Buttons.YES_NO | はい いいえ |
|
Browser.Buttons.YES_NO_CANCEL | はい いいえ キャンセル |
また上記の変数answerに返却される戻り値は以下の通りになっています。
選択肢 | 戻り値 |
---|---|
はい | yes |
いいえ | no |
OK | ok |
キャンセル | cancel |
右上の×ボタン | cancel |
インプットボックス
マクロ実行中に任意のテキストを入力したい場合はinputBoxを使います。
var answer = Browser.inputBox([任意"ここにタイトル",] "ここに本文",ボタン種別);
ボタン種別は様々なメッセージボックスで示したボタン種別を入力しますが、基本的にはBrowser.Buttons.OK_CANCELで良いと思います。
answerをmsgBoxで出力した結果
また、戻り値は以下の通りとなっています。
| 選択肢 | 戻り値 |
| ------- | ------ | |
| はい | 入力値 |
| いいえ | 入力値 |
| OK | 入力値 |
| キャンセル | cancel |
| 右上の×ボタン | cancel |