lisz-works

技術系だけど関係ないこと多い系ブログ

Google Apps Scriptでライブラリを作る!共通関数の作り方

【スポンサーリンク】

Google Apps Script

最近Google Apps Scriptを触り始めました!

適当な処理を共通化したいなぁ……

と思ったので、やり方をご紹介です。

概要

手順の概要は

  1. ライブラリ化したい関数用のプロジェクトを作る
  2. APIとして公開(自分のみ可)設定する
  3. ライブラリとして読み込む
  4. 自作ライブラリの関数を使う!

ライブラリ用プロジェクトを作る

Googleドライブにアクセスして、新規プロジェクトを作成します。

左上の「新規ボタン」から、「その他→Google Apps Script」を選択。
人によって構成が違かったりするのかな?

新規作成

共通関数を作りたいので、プロジェクト名は「common」にしました。

本当は機能ごとに分けるのがベストだと思います。
ですが、今回はひとまず「よく使う」をまとめるのが目的です。

なので細分化はおいおい。

お試しとして、ログ出力するだけという、全然意味のない関数を作成。 Logger使っても、文字列の長さがほぼ変わらないからホントに意味がない(笑)

コーディング

// ログ出力
function log(str) { Logger.log(str); }

ライブラリにするための設定をする

コードを作ったら、メニューの「公開→実行可能APIとして導入...」を選択。

実行可能APIとして導入

設定用ポップアップが出てきます。

ライブラリの設定

「このバージョンを説明してください」の箇所に、説明を書きます。
今回は「共通関数」と書いておきます。

「スクリプトにアクセスできるユーザー」は、とりあえず自分のみ。
公開したい方は、全員でよいかと。

OKなら「配置ボタン」を選択。

API IDが出てきます。

ライブラリの情報

現在のAPI ID」のテキストボックスの値をコピー!

そして「閉じるボタン」を押します。

ライブラリを読み込む

別のプロジェクトを開きます。
今度は作成した「common」を使用する側です。

メニューの「リソース→ライブラリ...」を選択。

ライブラリ

「ライブラリを追加」に、さっきコピーした「API ID」を貼付けて「追加ボタン」を選択。

ライブラリの追加

すると追加されたものが表示されます。
ちゃんと「common」が追加されていますね!

ライブラリ追加後

バージョンを任意のもの……今回は1を選択しておきます。
その時の最新にしておけば問題ないと思います。

この表示項目の中で、「識別子」という箇所をチェックです!
ここに設定されている文字列が、関数を呼び出すときに必要となります。

覚えておきましょう!

保存ボタンで閉じます。

ライブラリを使ってみる

それではmyFunction()で、commonの関数を使ってみましょう!

さっきの「識別子」を使うときが来ます。

識別子.関数名(引数);

と記述することで、ライブラリの関数が使えます。

途中まで入力すると、ちゃんとヘルプが出てくる!
素晴らしいですね……

コード補完

ということで、下記のようにコードを書きます。

function myFunction() {
  common.log("common function log!");
}

それでは実行して、ログ*1を見てみましょう。

ログ出力確認

ちゃんと出てますね!成功です!

注意点

Google先生いわく、このようにこのような注意が必要だそうです。

A script that uses a library does not run as quickly as it would if all the code were contained within a single script project. Although libraries can make development and maintenance more convenient, you should use them sparingly in projects where speed is critical. Because of this issue, library use should be limited in add-ons.
引用:https://developers.google.com/apps-script/guides/libraries

翻訳してもらった結果、ざっくりいうと

プロジェクト1つで動かすのより、ライブラリを使ったほうが「処理が遅い」そうです。

なので便利だけど、速度が必要なものは気を付けないとダメだよ!

とのこと。

きっとちょっとした処理なら問題ない……でしょう(希望的観測)

参考

コチラのサイトを参考にしました。
ありがとうございました。

orihubon.com

あとがき

やっと触り始められましたGoogle Apps Script!

個人的にでもなんか便利になるように組みたいところ。

スプレッドシートやSlackなど、他のものと連携できるようになったら、生活の利便性が上がりそうな予感しかしない……

最近地味に忙しい合間で、細々と組んでいく予定です。

*1:Ctrl+Enter