Googleスプレッドシートで業務を効率化するために、複数のシートやプロジェクトで同じ処理を何度も書いていませんか。毎回同じ関数をコピー&ペーストするのは手間がかかり、修正が必要になったときにすべてのスクリプトを直す必要があります。Apps Scriptのライブラリ機能を使えば、共通の処理をひとつのスクリプトにまとめて、複数のスプレッドシートから簡単に呼び出せるようになります。この記事では、Apps Scriptライブラリの基本的な作り方と、実際にほかのプロジェクトで再利用する方法を解説します。
【要点】Apps Scriptライブラリで汎用処理を再利用する方法
- ライブラリの作成(スクリプトプロジェクト分離): 共有したい関数を含むスタンドアロンスクリプトを作成し、スクリプトIDを取得します。
- ライブラリの登録(依存関係の追加): 利用側のスクリプトで「リソース > ライブラリ」からスクリプトIDを指定し、バージョンと識別子を設定します。
- ライブラリの呼び出し(識別子.関数名): 利用側の関数内で「ライブラリ識別子.関数名()」の形式で呼び出すことで、処理を再利用できます。
ADVERTISEMENT
目次
Apps Scriptライブラリの仕組みとメリット
Apps Scriptライブラリは、あるスクリプトプロジェクトに記述した関数を、別のスクリプトプロジェクトから呼び出せる機能です。ライブラリとして公開する側のスクリプトは、スタンドアロンスクリプト(スプレッドシートに紐づかない独立したスクリプト)として作成します。利用側はそのスクリプトIDを指定し、指定したバージョンの関数を実行できます。これにより、共通処理を一箇所で管理でき、修正が必要なときはライブラリ側を更新するだけで全プロジェクトに反映されます。また、ビルドインのライブラリ(例:OAuth2、Sheets API)と同様に扱えるため、大規模なシステム開発でも有用です。
ライブラリを利用する主なメリット
第一にコードの重複を排除できます。同じ処理を複数のスクリプトに書く必要がなくなり、メンテナンス工数が大幅に削減されます。第二にバグ修正や機能追加が容易です。ひとつのライブラリを修正するだけで、全プロジェクトにその修正が適用されます。第三にチーム開発での共有がしやすくなります。ライブラリを共有ドライブに配置すれば、複数のメンバーが同じ処理を利用できます。
ライブラリを作成して再利用する具体的な手順
ここでは、汎用的な「日付処理関数」をライブラリとして作成し、別のスプレッドシートで使うまでの手順を説明します。例として、現在の月の初日と末日を返す関数を作ります。
ライブラリ側(スタンドアロンスクリプト)の作成
- 新しいスタンドアロンスクリプトを作成する
Googleドライブで「新規 > その他 > Google Apps Script」を選択します。スプレッドシートに紐づかない独立したスクリプトファイルが作成されます。 - 汎用関数を記述する
コードエディタに次の関数を入力します。この関数は「DateUtils」という名前空間を想定して、オブジェクトにラップしておきます。var DateUtils = {};
DateUtils.getFirstDayOfMonth = function(date) {
var d = new Date(date.getFullYear(), date.getMonth(), 1);
return d;
};
DateUtils.getLastDayOfMonth = function(date) {
var d = new Date(date.getFullYear(), date.getMonth() + 1, 0);
return d;
}; - スクリプトIDを確認する
エディタのメニュー「ファイル > プロジェクトのプロパティ」を開き、「スクリプトID」をコピーしておきます。このIDがライブラリを識別するためのキーになります。また、プロジェクト名を「DateUtilsLib」などに変更しておくと管理しやすいです。 - バージョンを作成する
メニュー「ファイル > バージョンを管理」を開き、「新しいバージョンを保存」をクリックして説明を入力します。初回は「初版」などでよいでしょう。ライブラリを利用する側はこのバージョンを指定して呼び出します。バージョンが固定されていないと、変更が即座に影響してしまうので注意が必要です。
利用側(スプレッドシートに紐づくスクリプト)でライブラリを追加する
- 利用するスプレッドシートのスクリプトエディタを開く
Googleスプレッドシートを開き、「拡張機能 > Apps Script」でスクリプトエディタを起動します。 - ライブラリを追加する
エディタの左側の「ライブラリ」の横にある「+」(追加)ボタンをクリックします。先ほどコピーしたスクリプトIDを「スクリプトID」欄に貼り付け、「検索」ボタンを押します。 - バージョンと識別子を設定する
「バージョン」で先ほど作成したバージョン番号(例:1)を選択します。「識別子」にはライブラリの名前を入力します。ここでは「DateUtils」と入力します。この識別子を使って関数を呼び出します。 - 追加されたことを確認する
左パネルの「ライブラリ」に追加したライブラリが表示され、コード補完も利用可能になります。
ライブラリの関数を呼び出す
- 利用側のスクリプトで関数を書く
コードエディタに次のような関数を追加します。function testDateUtils() {
var today = new Date();
var firstDay = DateUtils.getFirstDayOfMonth(today);
var lastDay = DateUtils.getLastDayOfMonth(today);
Logger.log('月初: ' + firstDay);
Logger.log('月末: ' + lastDay);
} - 実行して結果を確認する
関数を実行すると、ログビューアに月初と月末の日付が出力されます。これでライブラリが正しく動作していることが確認できます。
ライブラリ活用時の注意点とよくあるトラブル
バージョンの固定と更新の反映タイミング
ライブラリを利用する側は、特定のバージョンを指定します。ライブラリ側で新バージョンを作成しても、利用側のバージョン設定を変更しない限り古いバージョンが使われ続けます。逆に、バージョンを固定せず「HEAD」を指定すると、ライブラリ側の最新コードが即座に反映されますが、意図しない変更が発生する危険があります。通常はバージョンを固定して、更新が必要なときに利用側でバージョンを上げる運用が安全です。
ライブラリの権限設定と公開範囲
ライブラリは、デフォルトでは同じGoogleアカウント内のプロジェクトでのみ利用できます。他のユーザーと共有するには、ライブラリのスクリプトプロジェクト自体を共有するか、Google Workspace Marketplaceに公開する必要があります。ただし、簡単な社内共有であれば、スクリプトプロジェクトを共有ドライブに配置し、利用者に編集権限を与えることで読み取り専用のアクセスが可能です。共有する際は、ライブラリのコードに機密情報を含めないように注意してください。
ライブラリ内でのグローバル変数の扱い
ライブラリ内で定義したグローバル変数は、利用側から直接参照できません。ライブラリの関数を通して間接的にアクセスする必要があります。そのため、状態を持つオブジェクトをライブラリで共有したい場合は、getter/setter関数を用意するか、プロパティサービスを使って保存する方法が適しています。
ライブラリ名の競合に注意
利用側で複数のライブラリを追加するとき、それぞれの識別子が重複しないようにする必要があります。また、組み込みのオブジェクト(例:Utilities、UrlFetchAppなど)と同じ名前を使うとエラーが発生します。識別子にはわかりやすく、かつ他のライブラリと衝突しにくい名前を選びましょう。
ADVERTISEMENT
ライブラリ利用と従来のコードコピーとの比較
| 項目 | ライブラリ利用 | コードコピー(従来) |
|---|---|---|
| コードの重複 | 排除される | プロジェクトごとにコピーが必要 |
| 修正の反映 | ライブラリのバージョンを上げるだけ | 全プロジェクトを修正する必要あり |
| バージョン管理 | バージョン指定で安定稼働 | Gitなどで別途管理する必要あり |
| チーム共有 | スクリプトプロジェクトの共有で容易 | コピー配布の手間がかかる |
| 実行速度 | 若干のオーバーヘッドあり | ローカル実行と同等 |
上表の通り、ライブラリ利用はメンテナンス性と共有の容易さで大きく優れています。一方で、呼び出しにわずかなオーバーヘッドが発生しますが、ほとんどの業務用途では実用上の問題になりません。コードの重複が多く、修正が頻繁に発生するケースでは、ライブラリ化によるメリットが非常に大きいです。
まとめ
Apps Scriptのライブラリ機能を使うことで、繰り返し使う処理を一箇所に集約し、複数のスプレッドシートで容易に再利用できるようになります。この記事では、スタンドアロンスクリプトを作成し、スクリプトIDを取得してバージョン管理し、利用側でライブラリとして追加して関数を呼び出す手順を解説しました。また、バージョンの固定や権限設定などの注意点も紹介しました。次のステップとして、よく使う文字列処理や日付計算をライブラリ化してみてください。さらに、チームで利用する場合は共有ドライブにライブラリを配置すると、全員が同じ処理を使えるようになります。この仕組みを活用して、業務の効率化とコード品質の向上を実現しましょう。
ADVERTISEMENT
超解決 第一編集部
疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。
Googleスプレッドシートの人気記事ランキング
- 【Googleスプレッドシート】GOOGLEFINANCE関数で株価・為替を取得!リアルタイムデータの呼び出し
- 【Googleスプレッドシート】印刷範囲を指定して印刷!特定範囲だけPDFや紙に出す手順
- 【Googleスプレッドシート】新しいスプレッドシートを作成する3つの方法!ドライブ・URL・テンプレート
- 【Googleスプレッドシート】数値の連続データを自動入力!オートフィルの活用
- 【Googleスプレッドシート】ダークモードを有効にする!目に優しい配色への切替
- 【Googleスプレッドシート】株価APIで株式データを自動取得!GOOGLEFINANCE超え活用
- 【Googleスプレッドシート】共有相手が編集できない時のチェック!権限と許可状態の確認
- 【Googleスプレッドシート】ページ設定で用紙サイズと向きを調整!印刷レイアウトの基本
- 【Googleスプレッドシート】Excelファイルxlsxをインポートする手順!ドラッグ&ドロップで取り込み
- 【Googleスプレッドシート】条件付き書式をコピーする!書式のみペーストの活用
