名前空間したい

1// const オブジェクト = {キー: 値};
2const 名前空間 = {キー: 関数定義};

GASプロジェクトの中で、関数はグローバルに定義されます。 そのため、ファイル名を分けても、同じ名前の関数は利用できません。

もし、同じ名前の関数を使用する必要がある場合、 オブジェクト型を使って名前空間(のようなもの)を定義できます。

注釈

オブジェクトを使った名前空間の作成は、モジュール(importrequire)が標準化される以前のJavaScriptで一般的な方法だったようです。

1// ns1.gs
2const 名前空間1 = {
3    同じ関数名: function(引数) {
4        Logger.log("これは ns1 の関数")
5    }
6}
1// ns2.gs
2const 名前空間2 = {
3    同じ関数名: function(引数) {
4        Logger.log("これは ns2 の関数")
5    }
6}
1// 確認してないけど、これでもOKなはず
2// ns3.gs
3const 名前空間3 = {};
4名前空間3[同じ関数名] = function(引数) {
5        Logger.log("これは ns3 の関数")
6    }
1// main.gs
2function main () {
3    名前空間1.同じ関数名(引数);  // -> これは ns1 の関数
4    名前空間2.同じ関数名(引数);  // -> これは ns2 の関数
5    名前空間3.同じ関数名(引数);  // -> これは ns3 の関数
6};

注意

GASはV8エンジン対応でモダンなJSを使えるようになりましたが、ES6のモジュールシステムはサポートされてないらしいです。 いろいろがんばればモジュールシステムを使うこともできるようですが、ここでは深追いしません。