Google スプレッドシートによる Apps Script の基礎 #1: マクロとカスタム関数

1. Apps Script へようこそ

Apps Script とは

Apps Script は、高速のアプリケーション開発プラットフォームです。Google Workspace の自動化、カスタマイズ、拡張を行うことができます。Apps Script で手間のかかる作業や複雑な作業を Google Workspace で合理化することで、時間と労力を節約できます。

Apps Script の機能は以下のとおりです。

  • Apps Script の組み込みサービスを使用すると、Google Workspace のアプリケーション データをスクリプトで読み取り、更新、操作できます。
  • Apps Script のブラウザ内コードエディタを使用してスクリプトを作成できます。コード開発ソフトウェアをインストールまたは実行する必要はありません。
  • メニュー項目、ダイアログ、サイドバーを使用して、エディタから直接スクリプトを有効化できる Google Workspace エディタのユーザー インターフェースを設計できます。

この「Google スプレッドシートによる Apps Script の基礎」再生リストでは、Apps Script の基礎と、Google スプレッドシートを使いやすくするための使用方法について説明します。この Codelab では、Apps Script の基本について説明します。

スプレッドシート サービス

Apps Script を使用すると、Google スプレッドシートを拡張して時間と労力を節約できます。Apps Script が提供するスプレッドシート サービスを使用すると、スクリプトで Google スプレッドシートのファイルとその中のデータを操作できます。このサービスを使用すると、次の一般的なスプレッドシート タスクを自動化できます。

  • スプレッドシートを作成、変更する
  • セルのデータ、数式、表示形式を読み取って更新します。
  • カスタムボタンやメニューを作成する。
  • 他の Google アプリケーションやサードパーティのソースからデータをインポート、エクスポートします。
  • スプレッドシートへのアクセスを共有、制御する。

学習内容

この再生リストには、Google スプレッドシートで Apps Script の使用を開始するために必要なすべてのトピックが記載されています。

  1. マクロとカスタム関数
  2. スプレッドシート、スプレッドシート、範囲
  3. データの操作
  4. データ形式
  5. スライドでデータをグラフ化して表示する

この再生リストの Codelab は順番に読むように作られています。最高の学習体験を得るために、この Codelab から始めて順番に完了してください。

この Codelab の詳細については、次のセクションに進んでください。

2. はじめに

この再生リストの最初の Codelab へようこそ。この Codelab では、Google スプレッドシートで Apps Script を使用する方法の基礎を学びます。具体的には、マクロとカスタム関数の 2 つの主要なコンセプトに焦点を当てています。

マクロは、Google スプレッドシート内の一連のアクションを記録したものです。記録したマクロは、後でメニュー項目やショートカット キーで繰り返し実行することができます。Google スプレッドシートと Apps Script コードエディタの両方で、独自のマクロの作成と更新ができます。

Apps Script コードエディタでは、カスタム関数を作成することもできます。Google スプレッドシートの組み込み関数SUMAVERAGE など)と同様に、Apps Script を使用して、単純な操作やニッチな操作(変換、文字列の連結など)のためのカスタム関数を作成できます。作成した関数は、Google スプレッドシートで組み込み関数と同じように呼び出すことができます。カスタムの関数は、記述したセル数式で使用することも可能で、必要に応じて他の関数と組み合わせることができます。

この Codelab に含まれるコンセプトと要件については、以下をご覧ください。

学習内容

  • Google スプレッドシートのスクリプトを作成する方法。
  • Apps Script エディタの操作方法。
  • マクロを作成、更新する方法
  • スプレッドシートのカスタム関数を初めて作成する

必要なもの

紹介部分はこれで完了です。次のセクションに進んでマクロの操作を開始します。

3. スプレッドシートでマクロを作成する

一般的に、スプレッドシートの編集では、セル値のコピー、書式設定、数式の作成など、繰り返し動作を行うため、面倒な作業やミスにつながりやすくなります。Google スプレッドシートでは、繰り返し行う操作を自動化するマクロが用意されています。マクロを使用すると、一連のアクションをシートに記録できます。記録したマクロを使用すると、スプレッドシートの別の場所で簡単なホットキーを押して同じ操作を繰り返すことができます。

このセクションでは、スプレッドシートでマクロを作成する方法について説明します。次のセクションでは、Apps Script を使用してマクロが作成される仕組みについて説明します。

始める前に

続行する前に、データを含むスプレッドシートが必要です。データシートはお客様に提供されています。こちらのリンクをクリックしてデータシートをコピーし、[コピーを作成] をクリックしてください。

5b8aded1bb349ecf.png

使用可能なサンプル スプレッドシートのコピーを Google ドライブ フォルダに保存し、「収益性の高い映画上位 10 件(2018 年)」のコピーを作成します。

マクロを作成する

使用するスプレッドシートが作成されたので、Google スプレッドシートでマクロを記録できます。この例では、データのヘッダー行をフォーマットするマクロを作成します。手順は次のとおりです。

  1. セル A1 をクリックして、カーソルを行に配置します。これはヘッダー行です。
  2. メニューで [拡張機能] > [マクロ] > [マクロを記録] を選択します。

録画を開始すると、スプレッドシートでのあらゆる操作(セルのハイライト表示、データの追加、別のシートへの切り替え、表示形式など)が Google スプレッドシートに記憶されます。これらのアクションは、後でマクロを保存して有効にすると繰り返される「スクリプト」になります。

  1. [マクロ] ダイアログで [相対参照] を選択します。

c59f2f12317352d2.gif

  1. [row 1] を選択します。

1d782ee30c66a02b.gif

  1. 一番上の行の [塗りつぶしの色] を白から [マゼンタ 3 の色] に変更します。

f7e7abaf76e338c7.png

  1. 一番上の行の [Text Color] を黒から white に変更します。

d5e630acbe83148.png

  1. テキストを太字にするには、Ctrl+B(macOS では Cmd+B)キーを押します。
  2. 一番上の行を固定するには、[表示 / 固定 > 1 行] を選択します。

97cb244ffebe8953.png

  1. マクロ ダイアログで [保存] をクリックします。新しいダイアログで、マクロに名前を付けるよう求められます。「ヘッダー」という名前を入力して [保存] をクリックします。

b4610a54340da518.gif

スプレッドシートのユーザー インターフェースを使用して、見出しの書式設定に特化したマクロを作成しました。

4ed7fbed18ea3681.png

マクロを有効にする

スプレッドシートで新しいマクロを適用する手順は次のとおりです。

  1. シートを作成するには、[シートを追加] 9c9b0c19bf317e7f.png をクリックします。

927c012b4e11475b.png

  1. 新しいシートで、「A1:C2」になんらかのテキストを追加します。以下の入力例を参考にしてください。

c3aadaef52a609bf.png

  1. 最初の行をハイライト表示します。

cfe36fcf833d0bd7.gif

  1. 選択した領域にマクロを適用するには、[拡張機能] > [マクロ] で [ヘッダー] をクリックします。
  2. 画面上の指示に沿ってマクロを承認します。
  1. ステップ 4 を繰り返してマクロを再度実行します(最初の実行を停止します)。

スプレッドシートでのマクロの適用方法を学習しました。スプレッドシートの記入例:

7c7130a4a697bd92.png

マクロを使用すると、スプレッドシートを効率的に作成できます。この Codelab の次のパートでは、マクロをさらに強力にする方法について学びます。ここで重要なのは、マクロを記録すると、Apps Script コードを記述することです。スプレッドシートのバックグラウンドで、マクロ操作に一致するコードが作成されます。次のセクションでは、Apps Script のブラウザ内エディタを使用してコードを直接変更する方法について説明します。

4. スクリプト エディタのマクロ

マクロを作成すると、Google スプレッドシートではそのアクションを Apps Script の関数として保存します。このマクロを有効にすると、Google スプレッドシートで Apps Script 関数が呼び出され、これらのアクションが同じ順序で適用されます。

スクリプト エディタ

マクロを作成したら、そのコードを見てみましょう。マクロ スクリプトを表示するには、[拡張機能] > [Apps Script] をクリックして、Apps Script のブラウザコード エディタを開きます。

スクリプト エディタを使用すると、Apps Script でコードを記述して、Google サーバーでそれらのスクリプトを実行できます。

macro.gs の分析

現在のスクリプトを確認します。スプレッドシートでは、Header マクロを記録したときに macros.gs スクリプト ファイルを作成し、対応する Apps Script 関数(Header)で埋めました。Header マクロを有効にすると、スプレッドシートがこの関数を実行します。

下の画像を見て、Apps Script におけるマクロ関数の構造を理解してください。手順を異なる順序で記録した場合や、記録中にスプレッドシート内をクリックすると、コードが少し異なる場合があります。

5D653a69a0897adf.png

最初の行は、承認に影響するアノテーション コメントです。

/** @OnlyCurrentDoc */

ほとんどのスクリプトは、実行する前にユーザーに権限をリクエストします。これらの権限により、ユーザーがスクリプトで行える操作を制御できます。スクリプト プロジェクトに@OnlyCurrentDocコメントがある場合、Apps Script は現在のスプレッドシートにアクセスして更新する権限のみを求めます。このコメントがないと、Apps Script はユーザーのすべてのスプレッドシートにアクセスして更新する権限をリクエストします。1 つのファイルのみを使用する場合は、このアノテーションを含めることをおすすめします。マクロ レコーダーにより、このコメントが自動的に追加されます。

Apps Script でマクロの指示がどのように表されているかは、次の手順で関数で確認できます。

function Header(){
  var spreadsheet = SpreadsheetApp.getActive();
  var sheet = spreadsheet.getActiveSheet();
  sheet.getRange(
    spreadsheet.getCurrentCell().getRow(),
    1, 1, sheet.getMaxColumns()).activate();
  spreadsheet.getActiveRangeList().setBackground('#4c1130')
  .setFontColor('#ffffff')
  .setFontWeight('bold');
  spreadsheet.getActiveSheet().setFrozenRows(1);
};

このコードは、Header マクロをアクティブにすると実行されます。function に続いて、ラベル Header() が関数の名前とパラメータを定義します。Header() は、Apps Script のマクロ関数で入力を必要としないためパラメータを必要としません。中かっこは、常に Apps Script 内で関数の本文を囲みます。

この再生リストで後述する Codelab では、マクロの作成に関連するクラスとコンセプトについて説明します。以下のコードの説明に目を通すことで、マクロを構成するコンポーネントとその役割について大まかに理解できます。最初の行について考えてみます。

var spreadsheet = SpreadsheetApp.getActive();

この場合、getActive() は、スプレッドシート内の現在アクティブなスプレッドシート ファイルを表すオブジェクトを返し、それを新しい変数 spreadsheet に設定します。

var sheet = spreadsheet.getActiveSheet();
sheet.getRange(
    spreadsheet.getCurrentCell().getRow(),
    1, 1, sheet.getMaxColumns()).activate();

これらの行は、最初の行をクリックしてハイライト表示する操作に対応しています。これをアクティベーションと呼びます。最初の行は現在のシートを変数 sheet に格納し、2 行目は getRange() メソッドを使用して最初の行全体を取得してから、activate() を呼び出して有効にします。最初の行は、特定の行番号と列番号を使用して指定します。spreadsheet.getCurrentCell().getRow() 呼び出しは現在の行の数を返し、sheet.getMaxColumns() はシートの最大列数を返します。

spreadsheet.getActiveRangeList().setBackground('#4c1130')
.setFontColor('#ffffff')
.setFontWeight('bold');

この部分ではコードが複雑になります。spreadsheet を使用して効率的にメソッドを呼び出すために、このコードでは 3 つのメソッドを getActiveRangeList() にスタックし、このコードがこの spreadsheet メソッドで冗長的に呼び出されることを防ぎます。Apps Script を使用してコーディングを行うほど、1 つのクラスに対して複数のメソッドを呼び出すという慣習(メソッド チェーンとも呼ばれます)に慣れるでしょう。ここでは、コードブロックの各メソッドについて簡単に説明します。

最後に、最後の行でマクロの最初の行がフリーズします。

spreadsheet.getActiveSheet().setFrozenRows(1);

そのマクロは、マクロを記録したときに生成したスクリプトです。一般的ではない用語や方法に関して心配する必要はありません。ここでは、一般的なマクロ関数における Apps Script の焦点や、今後の Codelab で取り上げるトピックについて解説します。

次のセクションでは、Header() 関数のコードの操作に重点を置き、スクリプト エディタを使用してマクロをさらにパーソナライズする方法について説明します。

Apps Script でマクロをカスタマイズする

Apps Script エディタには、以前に Google スプレッドシートで作成したマクロが表示されます。関数の本文の内容を調整することで、マクロの手順をさらにカスタマイズし、さまざまなアクションを追加で実行できます。以下の演習で、スクリプト エディタでマクロを操作するさまざまな方法を説明します。

影響を受けるセルを変更する

行全体ではなく最初の行の最初の 10 列だけが表示されるようにマクロを変更するとします。マクロを削除して、記録し直してください。ただし、Apps Script エディタを使用すれば、それらの変更を直接行うことができます。以下にその方法の 1 つを示します。

  1. スクリプト エディタで、sheet.getMaxColumns()10 に置き換えます。この編集により、スプレッドシート内のマクロのセル範囲が変更されます。
/** @OnlyCurrentDoc */

function Header(){
  var spreadsheet = SpreadsheetApp.getActive();
  var sheet = spreadsheet.getActiveSheet();
  sheet.getRange(
    spreadsheet.getCurrentCell().getRow(),
    1, 1, 10).activate();
    /* sheet.getMaxColumns() replaced with 10.*/
  spreadsheet.getActiveRangeList().setBackground('#4c1130')
  .setFontColor('#ffffff')
  .setFontWeight('bold');
  spreadsheet.getActiveSheet().setFrozenRows(1);
}
  1. スクリプトを保存するには [保存] save をクリックします。
  2. プロジェクト名を変更するには、新しいプロジェクト名として「マクロとカスタム関数」を入力し、[名前を変更] をクリックします。
  3. シートを作成するには、スプレッドシートでシートを追加アイコン 9c9b0c19bf317e7f.png をクリックします。

927c012b4e11475b.png

  1. スクリプト エディタで、関数のリストから [Header] を選択し、[実行] をクリックします。

新しいシートでは、次のような結果が表示されます。

2021-083088

有効または目標範囲を変更すると、マクロは最初の行の一部にのみ影響するようになります。多くの Apps Script メソッドは、範囲または A1 表記をパラメータとして取り、処理対象のセルを指定します。

次に、マクロの色をカスタマイズする方法を学習します。

マクロの色を変更する

スプレッドシートでマクロなどの要素のカラーパターンを簡単にデザインできるように、Apps Script では塗りつぶし範囲やテキストの色を変更できます。マクロの色をカスタマイズする方法については、次の手順をご覧ください。

以下では、マクロの背景色を変更する手順を詳しく説明します。

  1. スプレッドシートで、元のデータを含むシート(シート 1)に戻ります。
  2. 最初の行をクリックしてハイライト表示します。
  3. スクリプト エディタで、背景色 #4c1130#afeeee に置き換えます。これらの値は、16 進数のトリプレット表記を使用して異なる色を表します。
/** @OnlyCurrentDoc */

function Header(){
  var spreadsheet = SpreadsheetApp.getActive();
  var sheet = spreadsheet.getActiveSheet();
  sheet.getRange(
    spreadsheet.getCurrentCell().getRow(),
    1, 1, 10).activate();
  spreadsheet.getActiveRangeList().setBackground('#afeeee')
    /* #4c1130 replaced with #afeeee.*/
  .setFontColor('#ffffff')
  .setFontWeight('bold');
  spreadsheet.getActiveSheet().setFrozenRows(1);
}
  1. スクリプトを保存するには [保存] save をクリックします。
  2. 関数のリストから [Header] を選択し、[実行] をクリックします。

スプレッドシートでは、1 行目の最初の 10 列について、背景色がカスタム ターコイズ カラーに変わります。

bbd26f7c8e35039.png

setBackground(color) のパラメータの16 進数色表記#4c1130(暗いマゼンタ 3)から #afeeee(薄いターコイズ、Google スプレッドシートではアクセスできないオプション、デフォルト カラーメニュー)に切り替えると、マクロの背景色属性を変更できます。

マクロによって設定された背景色が変更されました。テキストの色も変更する場合は、2 つ目のカラーコードを変更します。

  1. スプレッドシートで最初の行をクリックし、ハイライト表示されていることを確認します。
  2. スクリプト エディタで、フォントの色 #ffffff#191970 に置き換えます。このマクロにより、ネイビーブルーのフォントの色が設定されます。
/** @OnlyCurrentDoc */

function Header(){
  var spreadsheet = SpreadsheetApp.getActive();
  var sheet = spreadsheet.getActiveSheet();
  sheet.getRange(
    spreadsheet.getCurrentCell().getRow(),
    1, 1, 10).activate();
  spreadsheet.getActiveRangeList().setBackground('#afeeee')
  .setFontColor('#191970')/* #ffffff replaced with #191970.*/
  .setFontWeight('bold');
  spreadsheet.getActiveSheet().setFrozenRows(1);
}
  1. スクリプトを保存するには [保存] save をクリックします。
  2. 関数のリストから [Header] を選択し、[実行] をクリックします。

スプレッドシートに戻ると、ヘッダー行のテキストの色が濃い青色で表示されます。

2eaf2fb4879e1b36.png

ここまでで、マクロが実際に Apps Script コードとして記録されるスプレッドシートの操作であることがわかりました。次のセクションでは、カスタム関数を使用して、Google スプレッドシートで Apps Script を活用する方法を紹介します。

5. 最初のスクリプトをコーディングする: カスタム関数

多くのスプレッドシート アプリケーションと同様に、Google スプレッドシートにはスプレッドシートの関数を計算できる組み込み関数(=SUM() など)もあります。カスタム関数は、Apps Script で指定する関数です。定義したカスタム関数は、組み込み関数と同様にスプレッドシートの任意の場所で使用できます。

このセクションでは、Apps Script で金額を変更するカスタム関数を作成する方法について説明します。

スクリプト ファイルを作成する

[マクロ] セクションと同じスプレッドシートとスクリプト プロジェクトを使用して、新しいスクリプトの作成方法を確認します(最終的には最初のカスタム関数の作成に使用できます)。

  1. Apps Script ファイルを作成するには、スクリプト エディタに戻ります。
  2. [ファイル] の横にある「ファイルを追加」アイコン ファイルを追加 > Script をクリックします。
  3. 新しいスクリプト ファイルに customFunctions という名前を付けて、Enter キーを押します。(Apps Script は自動的にスクリプト ファイル名に .gs を追加します)。

customFunctions.gs という名前の新しいタブがエディタに表示されます。

カスタム関数専用のスクリプトを作成したので、次はコードに使用できます。

米ドルをスイスフランに換算する

「上位 10 位の総収益映画 2018&#39」のデータを変更し、世界の総売上高を米ドルだけでなくスイスフランにも表示したいとします。カスタム関数を使用すれば、簡単に実現できます。次の演習では、カスタム関数を作成して、ドル値を数学的にフラン値に変換します。

最初のカスタム関数を作成する前に、関数が適切な出力をできるようにデータセットを変更します。手順は次のとおりです。

  1. スプレッドシートで列 H を右クリックします。
  2. 表示されたメニューで [右に 1 つ挿入] をクリックします。

fc1421cb1c456e52.gif

  1. セル I1 内の列に「\wide_GCM(スイス フラン)」というラベルを付けます。

これで、コンバージョン カスタム関数の結果を格納できる列が作成されました。次に、スクリプト エディタを使用して、最初のカスタム関数を作成します。

  1. customFunctions.gs で、myFunction() のコードを次のコードで置き換えます。
/**
 * Converts US dollars to Swiss francs.
 *
 * @param {number} dollars The total number of dollars.
 * @return {number} swissFrancs The converted total of Swiss francs.
 * @customfunction
 */
function USDTOCHF(dollars){
  var swissFrancs = dollars * .99; 
  return swissFrancs;
}

これは、米ドルをスイスフランに換算するコードです。スプレッドシートでカスタム関数を実行する方法を以下にご紹介します。

  1. スクリプトを保存するには [保存] save をクリックします。
  2. スプレッドシートで「I2」セルを選択します。
  3. 関数バーに「=USDTOCHF(H2)」と入力します。

数式を列の残りのセルに適用するには:

  1. [I2] セルの右下にカーソルを移動し、小さな青いボックスを選択します(青いボックスにカーソルを合わせるとカーソルが 9c9b0c19bf317e7f.png に変わります)。
  2. 青いボックスを下にドラッグして、範囲 I3:I11 をハイライト表示します。

3cf46560d6cea0de.gif

列 I には、スイス フランの米ドル換算額が表示されます。

7fc06b3d7e3e2a9.png

最初のカスタム関数を作成しました。次のセクションでは、USDTOCHF() を構成するコードについて説明します。

USDTOCHF() の分析

最初のコメントには、コードの目的が詳しく記載されています。

/**
 * Converts US dollars to Swiss francs.
 *
 * @param {number} dollars The total number of dollars.
 * @return {number} swissFrancs The provided value in Swiss francs.
 * @customfunction
 */

このようなコメント ブロックは、関数内で説明するために頻繁に使用されます。

このコメントでは、関数の説明(ドルをフランに変換)と、関数のパラメータと戻り値の型を記述するアノテーションの 2 つを区別できます。

Apps Script では JSDoc を利用して、コードのオートコンプリート ヒントを文書化、作成できます。USDTOCHF() で使用される各アノテーションが Apps Script の開発にどのように役立つかを以下に示します。

  • @param: @param アノテーションを使用して、関数に渡される各パラメータを記述できます。
  • @return: @return アノテーションを使用して、関数が返す結果を記述できます。
  • @customfunction: カスタム関数のドキュメント コメントには常に @customfunction を追加する必要があります。このスプレッドシートでは、以下のように、セルに関数名を入力すると、組み込み関数がオートコンプリートされるのと同じようにカスタム関数にオートコンプリートするよう通知されます。

d8680ab6efae97ac.gif

オートコンプリートのポップアップに表示されるテキストと、コメント ブロック内に指定した説明テキストが一致しています。作成する説明文が適切なものになるよう、カスタム関数を使いやすくしましょう。

次に、USDTOCHF() 関数内のコードにフォーカスします。

function USDTOCHF(dollars){
  var swissFrancs = dollars * .99; 
  return swissFrancs;
}

前述のように、USDTOCHF() は数値変数ドルを取り、固定為替レートを乗算して、数値変数 swissFrancs でスイスフランに変換された値を返します。入力パラメータは、セルにカスタム関数を追加する際に指定したセルの値です。この例では、H 列から入力した金額が表示されます。出力値 swissFrancs は関数のセルに配置されます(この例では列 I)。

カスタム関数は、次のセクションで説明するように、数値または文字列値に作用します。

文字列接頭辞を連結する

関数 USDTOCHF() の数値出力に、スイスフランの接頭辞 CHF を含めるとします。連結演算子(+,を使用すれば、Apps Script でも次の手順で作成できます。

  1. スクリプト エディタで、@return アノテーションを更新して、数値ではなく文字列を返すようにします。
  2. return swissFrancsreturn 'CHF' + swissFrancs に変更します。

+ 演算子は、swissFrancs に含まれる値の前に文字列 CHF を追加します。コードは次のようになります。

/**
 * Converts US dollars to Swiss francs.
 *
 * @param {number} dollars The total number of dollars.
 * @return {string} swissFrancs The provided value in Swiss francs.
 * @customfunction
 */
function USDTOCHF(dollars){
  var swissFrancs = dollars * .99;
  return 'CHF' + swissFrancs;
}
  1. スクリプトを保存するには [保存] save をクリックします。

列 I の値の先頭にスイス フラン文字列が接頭辞として追加されました。

20e4bfb7f0a994ea.png

カスタム関数で米ドルをスイス フランに変換するだけでなく、通貨の文字列をプレフィックスで出力します。

上級者向け: 外部データを取得する

基本的なカスタム関数の作成に適していますが、この例では、フランに対するスイスドルの為替レートが一定であることが前提となっています。代わりに現在の為替レートを使用したいと仮定して、シートが再読み込みされるたびに現在の再計算を表すために値が再計算されますか。それには、現在の為替レートを発見する方法が必要です。この情報は Google スプレッドシートでは容易に入手できませんが、幸いなことに Apps Script を使用して入手できます。

通貨をスイスフランに換算するコードの例を以下に示します。

function USDTOCHF(dollars){
  // Gets a cache that is common to all users of the script.
  var cache = CacheService.getScriptCache();

  // Accesses the memory location (rates.CHF) of the script cache.
  var rate = cache.get('rates.CHF');

  // If a cache miss occurs, the program fetches the current
  // CHF rate from an API and stores the rate in the cache
  // for later convenience.
  if (!rate) {
    var response =
UrlFetchApp.fetch('https://api.exchangeratesapi.io/latest?base=USD');
    var result = JSON.parse(response.getContentText());
    rate = result.rates.CHF;
    cache.put('rates.CHF', rate);
  }
  // Converts dollars to CHF according to the latest rate.
  var swissFrancs = dollars * rate;
  // Returns the CHF value.
  return 'CHF' + swissFrancs;
}

このコードは、サードパーティの為替レート API を使用して、金融情報サーバーから現在の為替レートを取得します。これには、UrlFetchAppCacheService などの Apps Script サービスを使用します。これらの高度なコンセプトは、この Codelab では扱いませんが、Google スプレッドシートの複雑なタスクを自動化する Apps Script の汎用性がわかるようになっています。

カスタム関数のガイドライン

カスタム関数の演習が完了しました。プロジェクトでカスタム関数を使用する際は、一定の制限事項があることを理解することが重要です。次のリストは、Google スプレッドシートのカスタム関数ガイドに詳述されている制限事項をまとめたものです。

  • ユーザー認証が必要なカスタム関数を作成しないでください。カスタム関数の作成は、サンプルデータの計算、テキスト編集などの単純なタスクを行うためのものです。Apps Script サービスの使用をご覧ください。
  • カスタム関数の名前を、別の組み込み関数と同じ名前にしたり、名前の末尾にアンダースコアを付けたりしないでください。命名ガイドラインを確認する。
  • 変数関数をカスタム関数に渡さないカスタム関数には、引数として確定値(固定値)のみを渡すことができます。=RAND() の結果などの変数の引数を渡すと、カスタム関数が機能しなくなります。引数のガイドラインをご覧ください。
  • 完了までに 30 秒を超える関数を作成しないでください。時間がかかる場合はエラーが発生するため、関数コードはシンプルなものにし、対象範囲を狭めてください。カスタム関数で行われる計算はできる限りシンプルにすることをおすすめします。戻り値のガイドラインをご覧ください。

スクリプト エディタを使用してマクロを利用してカスタム関数を作成することで、スプレッドシートを改善できるようになりました。次のセクションでは、学習した内容と、スクリプト作成のスキルを伸ばすために何ができるのかを確認します。

6. おわりに

あなたは、Google スプレッドシートを使用した Apps Script の基礎に関する最初の Codelab を完了しました。スプレッドシートのマクロとカスタム関数を作成、編集して、Apps Script の基本的な概念を学びました。Apps Script の知識は、次の Codelab でさらに発展させることができます。

この Codelab はお役に立ちましたか。

はい いいえ

学習した内容

  • Apps Script の基本的なコンセプト。
  • スクリプト エディタの操作方法。
  • スプレッドシートのマクロを作成、更新する方法。
  • Google スプレッドシートでカスタム関数を作成する方法

次のステップ

この再生リストの次の Codelab では、Apps Script スプレッドシート サービスの主なクラスと用語について説明します。このサービスを使用すると、Apps Script を使用して Google スプレッドシート内のデータの値と表示を細かく制御できます。

次の Codelab のスプレッドシート、スプレッドシート、範囲をご覧ください。