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

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

新規登録して質問してみよう
ただいま回答率
85.50%
LINE Messaging API

LINE Messaging APIは、メッセージの送信・返信ができるAPIです。Web APIを経由しアプリケーションサーバとLINEのAPIでやり取りが可能。複数のメッセージタイプや分かりやすいAPIリファレンスを持ち、グループチャットにも対応しています。

Google Apps Script

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

Q&A

解決済

1回答

754閲覧

GASでファイル越しに同じローカルスコープを獲得したい

supereater712

総合スコア29

LINE Messaging API

LINE Messaging APIは、メッセージの送信・返信ができるAPIです。Web APIを経由しアプリケーションサーバとLINEのAPIでやり取りが可能。複数のメッセージタイプや分かりやすいAPIリファレンスを持ち、グループチャットにも対応しています。

Google Apps Script

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

0グッド

1クリップ

投稿2019/04/24 14:23

前提・実現したいこと

GASでLinebotを開発しています。
オブジェクト中心に作ってしばらく、大量の変数をグローバルスコープに置いていたことに気づきました
全体を関数や名前空間で囲って調整してグローバル空間に作成したオブジェクトを減らしたかったですが

一定の行数を超えると中括弧が赤くなりそれ以上行を長くすると動作が保証されないようです

そこで長いブロックを回避するために何かしらコードを分ければいいと考えました
純粋にコードを途中で分割できれば最良ですが、不可能です

一旦ブロックを閉じて、別の場所から再開できればいいですが、
GASはファイルの読み込み順が決まってないこともあり
そんな方法があるか見当もつきません

GASで何かを隔てても同じローカルスコープを獲得するする可能な方法はあるでしょうか。
これか他の方法があればそれによってグローバルのオブジェクトを減らしたいです
お願いします。

ソースコード

gas

1var A; //global 2function testOne(){ 3 var a; //local 4}

gas

1var B; //global 2function testTwo(){ 3 var b; //local but not same scope 4}

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

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

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

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

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

macaron_xxx

2019/04/25 03:55

ソースコードの意味がよくわからないですが、引数を使うとかそういう話ではないんです?
supereater712

2019/04/25 04:48

引数ですか? 確かに全オブジェクトを 処理を引き継ぎたい関数の引数に渡せば 関数を分割するという課題は解決です 当然引数に大量に書き連ねるのは利便性に難がありますよね …というのが私が考えられる程度です 私は変数を引き継ぐ目的の他に引数の使い方を良く知りません…
supereater712

2019/04/25 04:48

関数もオブジェクトのひとつだと聞いて グローバル空間に関数をいくつも定義し 関数をリレーすることがいい事かどうかわからなくなってしまいました。 要は 関数を長い行数で書けない事 グローバル空間に関数を沢山配置する事があまり良くない事 これらを解決する手段を探しています。
macaron_xxx

2019/04/25 05:04

関数をリレーするというのは少しおかしな表現かと思います。 関数をリレーするというより、関数を切り出していくということが必要なのかなと思います。 だから全ての変数を引数に渡すのではなく、切り出した関数で必要な変数のみを引数として渡せばいいのです。 グローバルに置かなければいけない変数はグローバルにおけばいいですし、ローカルで十分なものはローカル変数でいいですし。どちらが悪いということもないと思いますよ。
supereater712

2019/04/25 05:41

なるほど… 何故誰も長い関数を書けない事を憂いてなかったのか私は不思議でした 何も全ての機能を一同にまとめる必要もなければ グローバル空間にオブジェクトを置くことを徹底的に避ける必要もないんですね。 GASでプログラム同士が競合する機会も よく考えればライブラリ導入時くらいしかないなあと。 おかげ様でどう横着していたか気づくことができたつもりです。 丁寧に回答してくださりありがとうございました。
guest

回答1

0

自己解決

※自己解決ではありません
追記欄でmacaron_xxxさんに解決して頂きました。
macaron_xxxさん、ありがとうございました。

投稿2019/04/25 15:00

supereater712

総合スコア29

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問