GASの質問をいただきました
「form.gsで定義したtextをmain.gsでも再利用したい」
という質問です。GoogleAppsScriptでは変数をどのようにグローバルに持てばいいのでしょうか?
例えば、コード1で定義したperson = '大島優子'をコード2で呼び出して実行しようとすると
personは定義してないから使えないよ!と怒られます。
それそうですよね。personはコード1でしか宣言していないので、コード2から呼び出そうとしても無理です。
変数を複数のコード間で共有したい
例えばコード.gsでperson = '大島優子';と宣言してみます。
myFunction内でpersonを定義しているので、コード1のmyfunctionの中でしかpersonは有効ではないです。
ではどうすれば、gunction2へ他のスクリプトに変数を引き渡せるの?
function外で変数を定義することです
先程の「大島優子」のサンプルに戻りましょう
もしも大島優子をmyFunction外で定義します。
コード1でfunctionが始まる前にpersonを宣言してみました。
するとコード2でもpersonという変数が使用できます。
するとperson='大島優子'が引き継がれます。
これは変数を定義している場所が重要です。
これは子供が「お母さん」って呼ぶのに似ています。
引用:
https://www.irasutoya.com/2019/12/blog-post_239.html
変数を共有するのは「子供がお母さん」って呼ぶのに似ているんです。
家の中で子供が「お母さんー!!」って読んだら、自分のお母さんが振り返ってくれます。
でも新宿駅で子供が「お母さんー!!」って叫んだら、他の人も振り返りますよね?
なんででしょう?それは誰のお母さんかわからないからです。
もしかしたら田中家で「お母さん」と言ったら…田中〇〇さん1人だけです。
でも 日本全国で「お母さん」と言ったら…複数人います。
プログラミングでも同様のことが言えて、他のfunction内で関数を共有したいのであれば、
その変数をどこで定義するのかが大事です
会社で複数人でコードを書いて、変数を共有しているときは変数を定義している領域が大事になってくるわけです。
これでも解決しない場合
ファイルを上に移動をしないといけないケースがあります。
上から順次実行されるので、実行順序を変えると解決する場合があります。