スプレッドシートの組み込み関数だけでは実現できない複雑な計算や独自のロジックが必要になることはありませんか。例えば、特定の文字列を解析して数値を抽出したり、外部APIのデータを取得して表示したい場合などです。そんなときに役立つのが、GoogleスプレッドシートのApps Scriptを使って作成するカスタム関数です。この記事では、Apps Scriptのスクリプトエディタでコードを書き、ワークシート上で「=自作関数名()」として呼び出せるようにする手順を詳しく解説します。
初めての方でも安心して進められるように、基本的な書き方から注意点まで丁寧に説明します。これを読めば、あなただけの便利な関数を作成できるようになります。
【要点】カスタム関数作成の3ステップ
- スクリプトエディタを開く: メニュー「拡張機能」→「Apps Script」でエディタを起動し、プロジェクトを作成します。
- 関数コードを記述する: JavaScriptで関数を定義し、引数と戻り値を指定します。スプレッドシートのセル範囲を引数として受け取ることも可能です。
- ワークシートで呼び出す: 「=関数名(引数)」の形でセルに入力するだけで、自作の関数が実行されます。
ADVERTISEMENT
目次
カスタム関数が利用できる仕組み
Googleスプレッドシートでは、組み込み関数の他に、Apps Script(Googleのクラウドベースのスクリプトプラットフォーム)を使って独自の関数を作成できます。このスクリプトはJavaScriptで記述し、スプレッドシートのセルから直接呼び出せます。作成した関数は、通常の関数と同じように引数を受け取り、計算結果を返します。ただし、カスタム関数にはいくつかの制限があります。例えば、実行時間は30秒以内に収める必要があり、セルの値以外の変更(セルの色変更など)はできません。また、外部APIへのアクセスは非同期処理のため、そのままでは使えません。これらの制限を理解した上で、うまく活用することが大切です。
カスタム関数を作成する手順
- スクリプトエディタを起動する
Googleスプレッドシートを開き、メニューバーから「拡張機能」→「Apps Script」をクリックします。新しいタブでスクリプトエディタが開きます。 - プロジェクト名を設定する
左上の「無題のプロジェクト」をクリックし、分かりやすい名前(例:「カスタム関数」)に変更します。 - 関数コードを記述する
エディタのコード.gsファイルに、JavaScriptの関数を記述します。例として、2つの数値を掛け算する関数を示します。function multiply(a, b) {
return a * b;
}
関数名は半角英数字で、先頭は小文字にします。引数はセルの値がそのまま渡されます。 - プロジェクトを保存する
フロッピーディスクのアイコンをクリックするか、「Ctrl+S」で保存します。 - スプレッドシートで関数を使う
スプレッドシートに戻り、任意のセルに「=multiply(3,4)」と入力します。Enterキーを押すと「12」と表示されます。
これでカスタム関数が使えるようになりました。セル範囲を引数として渡すことも可能です。例えば、次の関数は受け取った範囲の値の合計を計算します。
- セル範囲を引数にする関数
function sumRange(values) {
let total = 0;
for (let i = 0; i < values.length; i++) {
for (let j = 0; j < values[i].length; j++) {
total += values[i][j];
}
}
return total;
}
この関数を「=sumRange(A1:B2)」のように使うと、指定した範囲の全セルの合計が返ります。
カスタム関数作成時の注意点とよくある失敗例
実行時間が30秒を超えるとエラーになる
カスタム関数は最大30秒の実行時間制限があります。大量のデータを処理する場合は、ループ内で効率的なコードを書くか、処理を分割することを検討してください。タイムアウトすると「エラー: 実行がタイムアウトしました」と表示されます。
引数が二次元配列で渡されることを理解する
セル範囲を引数に取る場合、値は二次元配列(行の配列の配列)として渡されます。例えば、A1:B2の範囲は[[A1, B1], [A2, B2]]という形になります。単一セルを指定しても、1行1列の二次元配列として扱われます。
カスタム関数はセルの書式を変更できない
カスタム関数はセルの値の計算のみに使用できます。セルの背景色やフォントを変更するような操作はできません。そのような処理は、スクリプトエディタからメニューやトリガーで実行する通常の関数を別途作成する必要があります。
関数の再計算が行われない場合がある
カスタム関数は、引数として渡したセルの値が変更されたときに自動的に再計算されます。ただし、関数内で他のシートやスプレッドシートの値を参照している場合は、その値が変わっても自動再計算されないことがあります。その場合は、手動で関数を再入力するか、引数として参照セルを含める必要があります。
ADVERTISEMENT
組み込み関数とカスタム関数の比較
| 項目 | 組み込み関数 | カスタム関数(Apps Script) |
|---|---|---|
| 柔軟性 | 限られた機能、引数の型が固定 | JavaScriptで自由にロジックを記述可能、複雑な処理も実装できる |
| パフォーマンス | 高速、サーバー側で最適化 | 実行時間30秒制限、複数呼び出しで遅くなる場合あり |
| 外部データ取得 | IMPORTDATAなど限定的 | UrlFetchAppを使えば可能だが、非同期対応が必要で注意が必要 |
| 利用のしやすさ | 数式バーで即時利用、知識不要 | スクリプトの知識が必要、初回認証が必要 |
まとめ
この記事では、Apps Scriptを使ってGoogleスプレッドシートにカスタム関数を作成する方法を解説しました。スクリプトエディタで関数を定義し、ワークシートで「=関数名()」と呼び出すことで、組み込み関数では難しい独自の計算を実行できるようになります。例えば、特定の文字列を解析する関数や、複数の条件を組み合わせた高度なフィルタリング関数などを自作できます。ただし、実行時間や引数の扱い方に注意が必要です。ぜひ、日々の業務で役立つカスタム関数を自分で作ってみてください。次のステップとして、トリガーと組み合わせて自動化する方法にも挑戦してみると、さらにスプレッドシートの活用の幅が広がります。
ADVERTISEMENT
超解決 第一編集部
疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。
Googleスプレッドシートの人気記事ランキング
- 【Googleスプレッドシート】GOOGLEFINANCE関数で株価・為替を取得!リアルタイムデータの呼び出し
- 【Googleスプレッドシート】印刷範囲を指定して印刷!特定範囲だけPDFや紙に出す手順
- 【Googleスプレッドシート】複合グラフで棒と折れ線を同時表示!2軸グラフの作り方
- 【Googleスプレッドシート】FILTER関数で条件に合う行だけ抽出!数式1つで動的な絞り込み
- 【Googleスプレッドシート】フィルタ表示で他の人の表示を変えずに絞り込み!共有時の使い分け
- 【Googleスプレッドシート】重複データを抽出して表示!COUNTIFと条件付き書式の併用
- 【Googleスプレッドシート】新しいスプレッドシートを作成する3つの方法!ドライブ・URL・テンプレート
- 【Googleスプレッドシート】ARRAYFORMULAで列全体に数式を一括適用!セル分の入力を不要に
- 【Googleスプレッドシート】データ範囲を動的に伸縮させる!INDIRECTと参照範囲のコツ
- 【Googleスプレッドシート】共有解除と権限の取り消し!アクセスを完全に閉じる手順
