はじめに
GoogleスプレッドシートはExcelなどのように Google Apps Script (GAS) を使ってマクロを記録・作成することができます。
マクロの利用方法
マクロの記録
スプレッドシート上での操作をマクロとして記録する手順は以下の通りです。
-
スプレッドシートを開く
新規または既存のGoogleスプレッドシートを開いてください。
-
記録したい操作を実行する
マクロとして記録したい操作をスプレッドシート上で実行して「保存」ボタンをクリックする。
※ 操作を実行する前に絶対参照か相対参照を選択するのを忘れないようにしましょう!
-
マクロの中身を確認する
記録されたマクロはGASのスクリプトエディタに「マクロ.gs」という名前のファイルに保存されます。
メニュー欄から「拡張機能」→「Apps Script」と選択して中身を確認してみましょう。
-
マクロを管理する
スクリプトエディタに「マクロ.gs」というファイルを作成するとマクロを管理するメニューが有効になります。
マクロの作成
マクロはスプレッドシート上の操作を覚えさせるだけでなくユーザが手動で作成することもできます。
-
スクリプトエディタを開く
メニュー欄から「拡張機能」→「Apps Script」と選択してスクリプトエディタを開いてください。
-
マクロ.gsを作成する
「ファイル」欄の右横の+アイコンを選択して「スクリプト」メニューから「マクロ」という名前のファイルを作成します。
※ ファイル名を編集する際、拡張子の「.gs」を付けると「.gs.gs」になるので気を付けてください!
-
マクロを編集する
サンプルとして以下のようなマクロを作成して「Ctrl+S」で保存してください。function setTwo() { let spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); let cell = spreadsheet.getActiveCell(); cell.setValue(2); }
-
appsscript.jsonを表示する
マクロの登録はスプレッドシートで「拡張機能」→「マクロ」→「マクロをインポート」からも実施できますが、スクリプトエディタで登録する場合はまず左側メニューの歯車アイコンの「プロジェクトの設定」で「「appsscript.json」マニュフェストファイルをエディタで表示する」にチェックを入れます。
-
appsscript.jsonを編集する
左側メニューで「エディタ」を選択してappsscript.jsonファイルを開き、次のように編集して保存しましょう。{ "timeZone": "Asia/Tokyo", "dependencies": { }, "exceptionLogging": "STACKDRIVER", "runtimeVersion": "V8", "sheets": { "macros": [{ "menuName": "setTwo", "functionName": "setTwo", "defaultShortcut": "Ctrl+Alt+Shift+1" }] } }
-
マクロを確認する
appsscript.jsonを編集すればスプレッドシートには即座に操作が反映されます。
メニュー欄から「拡張機能」→「マクロ」と順に選択するとマクロが追加されていることが確認できます。
マクロの実行
ここまではマクロの作成方法を紹介してきましたが、最後にマクロの実行方法にはいくつかのオプションがあることを紹介します。
メニューから実行する
メニューから実行する方法は一番シンプルです。
マクロを作成したら「拡張機能」→「マクロ」と順に選択して使用したいマクロ名をクリックすればマクロが実行されます。
ショートカットで実行する
マクロの作成時にショートカットキーを設定すればマクロをショートカットキーから実行することも可能です。
ただし、ショートカットキーは「Ctrl+Shift+Alt」のあとに 0~9 の数字を割り当てるので10種類までしか登録できないことに注意が必要です。
ボタンなどのUIに紐づける
マクロをはじめとするGASの関数はスプレッドシート上に配置された図形や画像などのオブジェクトに紐づけることができます。
以下はボタンのような図形を挿入してマクロと紐づける例です。
-
オブジェクトにマクロを紐づける
図形の右上に表示されるオプションボタンクリックして「スクリプトの割り当て」を選択します。
-
関数名を入力
「スクリプトを割り当て」モーダルが開くので、オブジェクトをクリックしたときに実行させたい関数名を入力して「確定」をクリックします。
-
左クリックで実行
オブジェクトにマクロを紐づけると、以降はそのオブジェクトを左クリックするとマクロが実行されるようになります。
※ オブジェクトを編集したい場合は右クリックしてください。
トリガーを設定する
Excelのマクロはブックを開いたときに実行させるなど、特定のイベントをトリガーにすることができますが、スプレッドシートもこれと同様にGASで定義した関数を特定のイベントに紐づけることができます。
以下は30分ごとにドル・円の為替レートを取得してA1セルに格納する時間主導型のマクロを埋め込む例です。
-
スクリプトエディタを開く
メニュー欄から「拡張機能」→「Apps Script」と選択してスクリプトエディタを開いてください。
-
マクロを作成する
マクロ.gsというファイルに次のような関数を追加します。function getExchangeRate() { // USD基準の為替レートを取得するAPIのエントリポイントを定義 let url = "https://api.exchangerate-api.com/v4/latest/USD"; try { // JPY(日本円)の為替レートを取得 let response = UrlFetchApp.fetch(url); let json = JSON.parse(response.getContentText()); let rate = json.rates.JPY; // A1セルに為替レートを入力 let spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); let sheet = spreadsheet.getSheetByName('シート1'); let cell = sheet.getRange('A1'); cell.setValue(rate); } catch (e) { Logger.log("Error: " + e.message); throw new Error("為替レートの取得に失敗しました"); } }
-
トリガーを追加する
トリガーはスクリプトエディタの左側メニューの「トリガー」からも設定できますが、より細かい設定を適用したい場合はプログラムから設定することもできます。以下のように30分おきに関数を実行する時間主導のトリガーを設定する関数を作成して実行しましょう。
function createTimeDrivenTriggers() { ScriptApp.newTrigger('getExchangeRate') .timeBased() .everyMinutes(30) .create(); }
トリガーの種類
-
シンプルトリガー:
ファイルを開くなどの特定のイベントと紐づけられたトリガー。
以下の名前の関数を定義することで自動的にセットされる。- onOpen(e):GoogleWorkspaceアプリを開いたときに呼び出される
- onInstall(e):アドオンのインストールしたときに呼び出される
- onEdit(e):スプレッドシートの値が変化したときに呼び出される
- onSelectionChange(e):スプレッドシートの選択範囲を変更したときに呼び出される
- doGet(e):WebアプリがHTTP GETリクエストを受信したときに呼び出される
- doPost(e):WebアプリがHTTP POSTリクエストを受信したときに呼び出される
-
インストール可能なトリガー:
AppsScriptエディタのUIやGASのコードで設定するトリガー。
-