2016-12-14 3 views
0

Ich versuche, Google Apps Script zu lernen, und ich habe gerade ein bisschen ein Experiment mit der Erstellung von zwei ".gs files" im selben Projekt, jeweils mit einem onOpen() -Funktion.Mehrere onOpen() Funktionen in mehreren .gs Dateien

Nach dem Speichern, Schließen und anschließenden Öffnen des Dokuments wurde nur eine der onOpen() - Funktionen ausgeführt (Sidebar.gs).

Müssen diese in der gleichen Datei enthalten sein? Nun, ich weiß, dass es eine Arbeit ist. Ich denke, meine Frage ist WARUM?

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); 
    } 

Vielen Dank!

Antwort

2

Sie sollten nie haben zwei Funktionen mit dem gleichen Namen im gleichen Namespace. Es macht einfach keinen Sinn: welche von ihnen sollte ausgeführt werden, wenn functionName() Aufruf geschieht? (In Wirklichkeit wird die letzte zu definierende Funktion die überlebende sein; der Rest ist spurlos verloren).

Insbesondere sollten Sie nicht zwei onOpen-Funktionen innerhalb desselben Projekts haben, sei es eine Datei oder separat (die Dateien teilen sich den Namespace, was bedeutet, dass die Funktionen in der einen Datei von der anderen aufgerufen werden können) die gleiche Datei).

Aber Ihr ein onOpen() Funktion kann einfach nennen, wie Funktionen ausführen müssen:

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

kühlen. Danke für die Erklärung. Ja, ich würde beides zusammen machen, und beide arbeiteten, ich wollte nur wissen, warum du beides nicht kannst. Es war nicht etwas, was ich geplant hatte, sondern einfach nur zu experimentieren, falls ich später noch viele Dateien und Funktionen in einem Projekt habe. Noch einmal Danke! – AmericanMade

+0

Ich möchte auch darauf hinweisen, dass Sie so viele '.gs' Dateien haben können, wie Sie möchten, aber in Bezug darauf, wie Google Apps Script damit arbeiten wird, sind sie genauso, als wären sie alle in einer Datei. Die separaten '.gs' Dateien dienen nur dem Zweck, die Navigation in Ihrem Code zu erleichtern. Sie können auch mehrere Funktionen verwenden, die den installierbaren 'onOpen'-Trigger verwenden, aber ich glaube, dass Sie keine Kontrolle darüber haben werden, was zuerst ausgeführt wird. – Vytautas

Verwandte Themen