2016-12-14 39 views
0

私はGoogle Apps Scriptを習得しようとしていますが、".gsファイル"を2つ作成して、 onOpen()関数です。複数の.gsファイル内に複数のonOpen()関数があります

文書を保存して閉じてから開くと、onOpen()関数のうち1つだけが実行されました(Sidebar.gsファイル)。

これらは同じファイルに含める必要がありますか?まあ、私はそれが回避策であることを知っていると思います。私の質問はなぜでしょうか?

Project: 

Code.gs: 
    function onOpen() { 
    DocumentApp.getUi().createMenu("PACKT").addItem("Greeting","greeting").addToUi(); 
    } 

    function greeting() { 
    var ui = DocumentApp.getUi(); 
    ui.alert("Greeting", "Hello World!", ui.ButtonSet.OK); 
    } 

Sidebar.js: 

    function onOpen() { 
    var htmlOutput = HtmlService.createHtmlOutput('<button onclick="alert(\'Hello World!\');">Click Me</button>').setTitle("My Sidebar"); 
    DocumentApp.getUi().showSidebar(htmlOutput); 
    } 

ありがとうございます!

答えて

2

には同じ名前空間内に同じ名前の2つの関数がありません。 functionName()コールが発生したときに、それらのうちのどれを実行する必要がありますか? (実際には、最後に定義された関数は生存するもので、残りはトレースなしで失われます)。

特に、同じプロジェクト内に2つのonOpen関数を持つことはできません。一つのファイルでも別々でも構いません(ファイルは名前空間を共有します。つまり、あるファイル内の関数は、同じファイル)。

function onOpen() { 
    doThisThing(); 
    doAnotherThing(); 
} 
+0

クール:

しかし、あなたの開く時]()関数は、単純に実行する必要がどのような機能を呼び出すことができます。説明ありがとう。ええ、私は両方のものを1つに入れて、両方とも働いたので、なぜあなたは両方を行うことができないのか知りたかっただけです。それは私がやろうと計画したものではなく、後でプロジェクトに含まれるたくさんのファイルや機能を持っているかどうか試してみるだけです。もう一度、ありがとう! – AmericanMade

+0

また、好きなだけ多くの '.gs'ファイルを作成できますが、Google Apps Scriptの動作については、すべてが1つのファイルにある場合とまったく同じになります。別々の '.gs'ファイルは、コードを簡単にナビゲートするという単一の目的を果たします。また、インストール可能な 'onOpen'トリガをいくつかの関数に使用させることもできますが、最初に実行されるものを制御することはできません。 – Vytautas

関連する問題