Google Apps Script を使用すると、Google スプレッドシートで新しい便利な機能を利用できます。Apps Script を使用して、Google スプレッドシートにカスタム メニュー、ダイアログ、サイドバーを追加できます。また、スプレッドシート用のカスタム関数を作成したり、スプレッドシートをカレンダー、ドライブ、Gmail などの他の Google サービスと統合したりすることもできます。
Google スプレッドシート用に設計されたほとんどのスクリプトでは、配列を操作してスプレッドシート内のセル、行、列を操作することができます。JavaScript の配列に慣れていない場合は、Codecademy の配列に関する優れたトレーニング モジュールをご利用ください。(このコースは Google が開発したものではなく、Google との関連性もありません)。
Google スプレッドシートで Apps Script を使用する方法については、マクロ、メニュー、カスタム関数に関する 5 分間のクイックスタート ガイドをご覧ください。
始める
Apps Script には、Google スプレッドシートの作成、読み取り、編集をプログラムで行うための特別な API が用意されています。Apps Script は、大きく分けて 2 つの方法で Google スプレッドシートとやり取りできます。1 つは、スクリプトのユーザーがスプレッドシートに対する適切な権限を持っている場合、どのスクリプトでもスプレッドシートを作成または変更できるという方法です。もう 1 つは、スクリプトをスプレッドシートにバインドするという方法です。これにより、スクリプトでユーザー インターフェースを変更したり、スプレッドシートを開いたときに応答したりできます。バインドされたスクリプトを作成するには、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 スプレッドシートで関数を自動的に実行します。ただし、インストール可能なトリガーはシンプルなトリガーよりも柔軟性が高く、次のイベントをサポートしています。open、edit、change、form submit、time-driven(clock)。