Googleスプレッドシートでカスタム関数(ユーザー定義関数)を作る!
Googleスプレッドシートの操作を中心にGAS(GoogleAppsScript)の基本コードを紹介しています。初心者の方が順番に読んでくだけでGASの基礎コードが理解出来るようになればなと思って、短めの記事で進めて行きたいと思います!
今回は、”Googleスプレッドシートでカスタム関数(ユーザー定義関数)を作る方法”について紹介します!
カスタム関数とは
Googleスプレッドシート上の関数では、SUMやAVERAGEなどが有名ですが、これはGoogleがもともと用意しておいてくれている組み込みの関数になります。
この関数ですが、GASを使うことで自作出来てしまいます!その自作した関数のことを「カスタム関数」と言います。
Excel&VBAでは同じみの”ユーザー定義関数”ですね!
作り方
では早速作り方です。
- コンテナバインドスクリプトでスクリプトエディタを立ち上げる
- gsファイルにグローバル関数を作成する
- Googleスプレッドシートで関数と同じように使う
非常に簡単です、
コンテナバインドスクリプトでスクリプトエディタを立ち上げる
スクリプトエディタの立ち上げは、こちらの記事も参考にしてください。
カスタム関数を作るには、Googleスプレッドシートに紐付いた形でスクリプトエディタを立ち上げプロジェクトを作る必要があります。
スプレッドシートから「ツール」→「スクリプトエディタ」でしたね。
.gsファイルにグローバル関数を作成する
次に、立ち上げたスクリプトエディタで、関数を作成します。
関数を作るときに注意する点は「グローバル関数」であることです。
関数には、スコープ(呼び出せる範囲)が2種類あります。
- グローバル関数・・・どこからでも呼び出せる関数
- プライベート関数・・・スクリプト内からの呼び出しのみ許可されている関数
これまでやってきたように、普通に「function 関数名(引数1,引数2,….)」のように書いた場合は、グローバル関数です。
プライベート関数は、次のように関数名の後ろに「_」アンダースコアを付けます。このようにすることで、GASのスクリプト内からしか呼び出せなくなります。
function 関数名_(引数1,引数2,….){
// 処理
return 返り値
}
全てをグローバル関数で作成してしまうと、スプレッドシート上から望まないのに動いてしまう場合があるので、プライベート関数にすることで、そのような自体を防ぐことが出来ます。
それでは、次のような関数を書いてみましょう。
function kakeru100(rng){
var ans = rng * 100
return ans
}
関数名は、kakeru100、引数にセルの範囲(rng)、処理の中身は、指定されたセルの値を100倍にして返すだけの簡単なものです。※セルの範囲は1つのセルだけ、入っている値は数値型とします。
Googleスプレッドシートで関数と同じように使う
最後に、ワークシートでの使い方です。
この時点でスクリプトエディタは閉じちゃっても大丈夫です。スプレッドシートに戻ってください。
A列に適当に数字を入れています。
B列に、先程作った関数を使って計算してみましょう。
使い方は、SUMやAVERAGEと同じです、
=関数名(引数)
つまり今回で言うと「kakeru100」と関数名を付けているのと、引数はセル範囲としているので、B1セルに次のように入力してください。
=kakeru100(A1)
これだけです。
B1セルに入れた後は、通常の数式のコピペのように、5行目(B5セル)までコピーペーストすれば、全て100倍された数字が入ります。
実際にやってみます。
実行後画面
このように、自作でスクリプトエディタに作った関数は、ワークシート上でも使えるようになります。
ドキュメンテーションコメント
SUMやAVERAGEなどもともと用意されている関数は、「=S」とか入れた時点で候補が出てきますね。
先程のサンプルの「=kakeru100」関数は候補として出てきませんでしたが、一工夫することで、もともと用意されている関数のように、候補に出現したり、使い方の詳細情報を表示することができるようになります。
その設定方法を「ドキュメンテーションコメント」と言います。
下記のようなルールで、関数を作成するときに一緒に書きます。
- 関数の宣言の直前に書く
- 「/**」ではじまり「*/」で終わる
- 概要やタグを使った情報を記載する
タグというのは「@」アットマークから始まるキーワードで、引数や戻り値の情報を記載します。
ドキュメンテーションコメントで使用するタグ一覧
タグ | 説明 |
---|---|
@param | 引数の{データ型}と概要 |
@return | 返り値の{データ型}と概要 |
@customfunction | スプレッドシートの保管の候補にする |
先程のサンプルコードに追加します。
/**
* 指定したセルの値を100倍にして返す
*
* @param {range} セル
* @return {Number} 100倍の数値
* @customfunction
*/
function kakeru100(rng){
var ans = rng * 100
return ans
}
スプレッドシート側で「=ka」といれてみます。
kakeru100関数が候補として現れ、説明文が添えられています。
Tabキーで関数を決定すると、より詳細な使い方の情報が表示されます。
まとめ
カスタム関数の作り方を紹介しました。今回は、数値を100倍するだけの簡単なカスタム関数を作りましたが、この方法を使うことで、通常の関数では実現できない処理をスプレッドシート上でも行うことができるようになります!せっかくGASを勉強するなら通常スプレッドシートにも活かしていきましょう!
コメント