Help us understand the problem. What is going on with this article?

GASのスクリプトエディタでファイル分割したgsファイルを読み込む試行錯誤

概要

GoogleAppsScriptのスクリプトエディタでコードを書いたときに、ファイル分割してコード管理したくなった際に、定義した関数をスクリプトエディタで使えるようにするための手順を試行錯誤したのでまとめてみます。

要するに以下のように2つ以上の.gsファイルを作って、それぞれロードして定義した関数を使えるようにしたいということです。
image.png

発生した問題

他の記事で、定義した関数をそのまま利用すれば良いだけとあったので、スクリプトエディタでmain.gsを実行(main.gsは内部でparser.gsで定義した関数を利用しています)。
実行開始後、処理が全く終わらず。デバッグすると、別ファイル(parser.gs)に定義済みのはずの関数で処理が止まっていた。

試したこと

トリガーから実行する

  • 実行をスクリプトエディタ上で行っていたのを、トリガーを作成してSpreadSheet起動時にスクリプトが動作するように設定したところ、正常に別ファイル定義の関数も読み込まれた。
  • SpreadSheetからだと関連付けてあるプロジェクトの全てのスクリプトが読み込まれる(?)様子。

プロジェクト自体をライブラリとして利用する

自分のプロジェクトをライブラリとして定義し、自分のプロジェクトに関連付けることでプロジェクト全体のロードがスクリプトエディタで書いたコード実行前に読み込まれる様子

  1. メニューの ファイル>版を管理 から「新しいバージョンを保存」でバージョン番号を発行しておく(ライブラリ追加の際に必要なため)
  2. メニューの ファイル>プロジェクトのプロパティ から「情報」タブの「プロジェクトキー」を取得します
  3. メニューの リソース>ライブラリ... から「ライブラリを追加」テキストボックスに先ほど取得したプロジェクトキーを入れて保存します
  4. このとき、以下のようにライブラリが追加されますので、事前に発行したバージョン番号をプルダウンで選択して保存します image.png

以上でmainファイルから別ファイルに記述した関数を呼び出せるようになります。
ライブラリとして正しく利用する意味では、汎用的な処理を分割して別プロジェクトにしてしまい、本来の意味でのライブラリとして共通で利用するのが良いように思いました。

基本Googleの各種サービスとプロジェクトを紐付けて使うものなのでこのような仕様なのでしょうが、もっと簡単にできる方法あったらぜひ教えてください...。
余談ですが jsの alert() にあたる Browser.msgBox もSpreadSheet側からでないと処理が止まって動きませんでした(当然と言えば当然ですが...)

とは言えGASは便利なので、もう少しちゃんと調べてUPDATEしていきたいと思います。

参考

https://qiita.com/shirakiya/items/5e51e352faef6f7db9be
https://itami.info/tech/memorandum/googleappsscriptincludfunctions.html

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away