Google Apps Script を使用すると、Google スプレッドシートで新しい便利な機能を利用できます。Apps Script を使用して、Google スプレッドシートにカスタム メニュー、ダイアログ、サイドバーを追加できます。また、スプレッドシート用のカスタム関数を作成したり、スプレッドシートをカレンダー、ドライブ、Gmail などの他の Google サービスと統合したりすることもできます。
Google スプレッドシート用に設計されたほとんどのスクリプトでは、配列を操作してスプレッドシート内のセル、行、列を操作することができます。JavaScript の配列に慣れていない場合は、Codecademy の配列の優れたトレーニング モジュールをご覧ください。(このコースは Google が開発したものではなく、Google とも関連付けられていません)。
Google スプレッドシートで Apps Script を使用する方法の概要については、マクロ、メニュー、カスタム関数の 5 分間のクイックスタート ガイドをご覧ください。
使ってみる
Apps Script には、Google スプレッドシートの作成、読み取り、編集をプログラムで行うための特別な API が含まれています。Apps Script は、Google スプレッドシートと大きく 2 つの方法でやり取りできます。スクリプトのユーザーがスプレッドシートに対する適切な権限を持っている場合、任意のスクリプトでスプレッドシートを作成または変更できます。また、スクリプトをスプレッドシートにバインドすることもできます。これにより、スクリプトでユーザー インターフェースを変更したり、スプレッドシートを開いたときに応答したりできます。バインドされたスクリプトを作成するには、Google スプレッドシート内で [拡張機能] > [Apps Script] を選択します。
スプレッドシート サービスは、Google スプレッドシートをグリッドとして扱い、2 次元配列で操作します。スプレッドシートからデータを取得するには、データが保存されているスプレッドシートにアクセスし、データが格納されているスプレッドシートの範囲を取得して、セルの値を取得する必要があります。Apps Script は、スプレッドシート内の構造化データを読み取り、それらの JavaScript オブジェクトを作成することで、データへのアクセスを容易にします。
データの読み取り
下の図に示すように、スプレッドシートに商品名と商品番号のリストがあるとします。
次の例は、商品名と商品番号を取得してログに記録する方法を示しています。
function logProductInfo() {
var sheet = SpreadsheetApp.getActiveSheet();
var data = sheet.getDataRange().getValues();
for (var i = 0; i < data.length; i++) {
Logger.log('Product name: ' + data[i][0]);
Logger.log('Product number: ' + data[i][1]);
}
}
ログを表示
ログに記録されたデータを表示するには、スクリプト エディタの上部にある [実行ログ] をクリックします。
データの書き込み
新しい商品名や番号などのデータをスプレッドシートに保存するには、スクリプトの末尾に次のコードを追加します。
function addProduct() {
var sheet = SpreadsheetApp.getActiveSheet();
sheet.appendRow(['Cotton Sweatshirt XL', 'css004']);
}
上記のコードは、指定された値を含む新しい行をスプレッドシートの一番下に追加します。この関数を実行すると、スプレッドシートに新しい行が追加されます。
カスタム メニューとユーザー インターフェース
カスタムのメニュー、ダイアログ ボックス、サイドバーを追加して、Google スプレッドシートをカスタマイズできます。メニューの作成の基本については、メニューのガイドをご覧ください。ダイアログ ボックスの内容をカスタマイズする方法については、HTML サービスのガイドをご覧ください。
スクリプト関数をスプレッドシート内の画像または描画に関連付けることもできます。この関数は、ユーザーが画像または描画をクリックすると実行されます。詳しくは、Google スプレッドシートの画像と描画をご覧ください。
カスタム インターフェースをアドオンの一部として公開する場合は、スタイルガイドに沿って、Google スプレッドシート エディタのスタイルとレイアウトと整合性を持たせてください。
Google フォームへの接続
Apps Script を使用すると、Forms サービスと Spreadsheet サービスを通じて Google フォームと Google スプレッドシートを接続できます。この機能を使用すると、スプレッドシート内のデータに基づいて Google フォームを自動的に作成できます。また、Apps Script では、onFormSubmit
などのトリガーを使用して、ユーザーがフォームに回答した後に特定のアクションを実行することもできます。Google スプレッドシートと Google フォームを接続する方法について詳しくは、Google フォームの回答を管理する 5 分間のクイックスタートをご覧ください。
書式設定
Range
クラスには、セルまたはセル範囲の書式にアクセスして変更する setBackground(color)
などのメソッドがあります。次の例は、範囲のフォント スタイルを設定する方法を示しています。
function formatMySpreadsheet() {
// Set the font style of the cells in the range of B2:C2 to be italic.
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];
var cell = sheet.getRange('B2:C2');
cell.setFontStyle('italic');
}
データの検証
Apps Script を使用すると、Google スプレッドシートの既存のデータ検証ルールにアクセスしたり、新しいルールを作成したりできます。たとえば、次のサンプルは、セルに 1 ~ 100 の数字のみを許可するデータ検証ルールを設定する方法を示しています。
function validateMySpreadsheet() {
// Set a rule for the cell B4 to be a number between 1 and 100.
var cell = SpreadsheetApp.getActive().getRange('B4');
var rule = SpreadsheetApp.newDataValidation()
.requireNumberBetween(1, 100)
.setAllowInvalid(false)
.setHelpText('Number must be between 1 and 100.')
.build();
cell.setDataValidation(rule);
}
データ検証ルールの使用方法の詳細については、SpreadsheetApp.newDataValidation()
、DataValidationBuilder
、Range.setDataValidation(rule)
をご覧ください。
グラフ
Apps Script では、特定の範囲のデータを示すグラフをスプレッドシートに埋め込むことができます。次の例では、セル A1:B15
にグラフ表示可能なデータがあると想定して、埋め込み棒グラフを生成します。
function newChart() {
// Generate a chart representing the data in the range of A1:B15.
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];
var chart = sheet.newChart()
.setChartType(Charts.ChartType.BAR)
.addRange(sheet.getRange('A1:B15'))
.setPosition(5, 5, 0, 0)
.build();
sheet.insertChart(chart);
}
スプレッドシートにグラフを埋め込む方法について詳しくは、EmbeddedChart
と特定のグラフビルダー(EmbeddedPieChartBuilder
など)をご覧ください。
Google スプレッドシートのカスタム関数
カスタム関数は、=SUM(A1:A5)
などのスプレッドシートの組み込み関数に似ていますが、関数の動作を Apps Script で定義します。たとえば、値をインチからミリメートルに変換するカスタム関数 in2mm()
を作成して、セルに =in2mm(A1)
または =in2mm(10)
を入力することで、スプレッドシートで数式を使用できます。
カスタム関数の詳細については、メニューとカスタム関数の 5 分間のクイックスタートを試すか、カスタム関数のガイドをご覧ください。
マクロ
マクロは、Google スプレッドシートの UI から Apps Script コードを実行するもう 1 つの方法です。カスタム関数とは異なり、キーボード ショートカットまたは Google スプレッドシートのメニューで有効にします。詳細については、Google スプレッドシートのマクロをご覧ください。
Google スプレッドシートのアドオン
アドオンは、Google スプレッドシート内で実行され、Google スプレッドシートのアドオン ストアからインストールできる、特別にパッケージ化された Apps Script プロジェクトです。Google スプレッドシート用に作成したスクリプトを他のユーザーと共有する場合は、Apps Script でスクリプトをアドオンとして公開して、他のユーザーがアドオン ストアからインストールできるようにします。
トリガー
Google スプレッドシート ファイルにバインドされたスクリプトでは、onOpen()
関数や onEdit()
関数などのシンプルなトリガーを使用して、スプレッドシートへの編集アクセス権を持つユーザーがスプレッドシートを開いたり編集したりしたときに自動的に応答できます。
シンプルなトリガーと同様に、インストール可能なトリガーを使用すると、特定のイベントが発生したときに Google スプレッドシートが関数を自動的に実行します。ただし、インストール可能なトリガーは、シンプルなトリガーよりも柔軟性が高く、開く、編集、変更、フォーム送信、時間ドリブン(時計)のイベントをサポートしています。