質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

Q&A

解決済

2回答

15716閲覧

GASの関数を別のファイルに記述して呼び出す方法を教えてください。

FoyLand

総合スコア72

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

0グッド

0クリップ

投稿2019/11/30 15:39

現在書いているGASのコードが長くなってしまったので、一部の関数を別のファイルに分けたいと思っております。
そこでこちらのqiita記事の通りやってみたところ、できませんでした。

具体的には、
main.gsにてreply(~);という関数を呼び出したいと思っており、
reply.gsにてfunction reply(~~~) {...}を記述しております。
しかし、main.gsを実行しようとすると

「reply」が定義されていません。

というエラーが発生します。
流石に、「同じフォルダ内の別のファイルに関数を記述する」というだけで呼び出せるとは思ってない(実際上手くいっていない)のですが、どのような手続きを行えば呼び出せるようになるのでしょうか。

どなたかご教授よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

私も初学者なので間違ってるかも知れませんが、「ライブラリ」と言う物を使えば良いんじゃ無いでしょうか? pythonやJavaで言うインポートみたいな物のようなので。
【初心者向けGAS】面倒なことはライブラリに任せよう!その概要と追加の方法

GASでは、作成した関数を他のプロジェクトから利用できる仕組みが用意されていて、それをライブラリと言います。

なので、これでいいかと。

投稿2019/12/01 11:54

mike2mike4

総合スコア901

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

FoyLand

2019/12/01 12:45

できました、ありがとうございます。 助かりました。 正確な理解か微妙ですがイメージとしては、functionを記述したファイルがObjectであり、functionはそのObjectのMethodという扱いになるのですね。
guest

0

「同じフォルダ内の別のファイルに関数を記述する」というだけで呼び出せるとは思ってない

いえ、呼び出せます。
以下の様に2ファイルを作成してみてください。
main()を実行すればログが出力されるのが確認できると思います。
まずは関数名をtypoしていないか確認しましょう。

  • main.gs

JavaScript

1function main() { 2 reply("replyを呼びました。"); 3}
  • reply.js

JavaScript

1function reply(value) { 2 Logger.log("value = " + value); 3}

投稿2019/12/01 06:01

draq

総合スコア2573

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

FoyLand

2019/12/01 11:41

教えてくださったとおり2ファイル作成して確かめてみましたが、同じエラーが出ました。typoも何度も確認しました。(replyの拡張子は念のため.gsと.jsいずれも用意して試しました) ちなみに、私が「同じフォルダ」と言ったのはgoogle drive内のフォルダのことなのですが、その認識でご回答されていますでしょうか。 また、本当に「同じフォルダ内の別のファイルに関数を記述するだけで呼び出せる」のでしたら、main.gsを動かすたびに、フォルダ内のファイル片っ端からfunction reply(){}を検索していることになると思うのですが、そういうものなのでしょうか。その場合、function reply(){}が複数ファイル内に記述されていた場合はエラーが発生するということでしょうか。 main.gsにはフォルダ内のファイルにアクセスする権限など何も与えていないのですが、それでも他のファイルの中身を検索、参照できるものなのでしょうか。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問