# 名前空間したい ```js // const オブジェクト = {キー: 値}; const 名前空間 = {キー: 関数定義}; ``` GASプロジェクトの中で、関数はグローバルに定義されます。 そのため、ファイル名を分けても、同じ名前の関数は利用できません。 もし、同じ名前の関数を使用する必要がある場合、 オブジェクト型を使って名前空間(のようなもの)を定義できます。 :::{note} オブジェクトを使った名前空間の作成は、モジュール(`import`や`require`)が標準化される以前のJavaScriptで一般的な方法だったようです。 ::: ```js // ns1.gs const 名前空間1 = { 同じ関数名: function(引数) { Logger.log("これは ns1 の関数") } } ``` ```js // ns2.gs const 名前空間2 = { 同じ関数名: function(引数) { Logger.log("これは ns2 の関数") } } ``` ```js // 確認してないけど、これでもOKなはず // ns3.gs const 名前空間3 = {}; 名前空間3[同じ関数名] = function(引数) { Logger.log("これは ns3 の関数") } ``` ```js // main.gs function main () { 名前空間1.同じ関数名(引数); // -> これは ns1 の関数 名前空間2.同じ関数名(引数); // -> これは ns2 の関数 名前空間3.同じ関数名(引数); // -> これは ns3 の関数 }; ``` :::{caution} GASはV8エンジン対応でモダンなJSを使えるようになりましたが、ES6のモジュールシステムはサポートされてないらしいです。 いろいろがんばればモジュールシステムを使うこともできるようですが、ここでは深追いしません。 :::