So definieren Sie eine globale Variable in Google Apps Script
Sehe ich die meisten Beispiele von Google ist, die Sie verwenden, funktioniert nur in einem einzigen Riesen-Skript.
z.B. https://developers.google.com/apps-script/quickstart/macros
Aber in unserem Stil, wir schreiben in der Regel alle Funktionen in einem einzigen namespace, wie
MyCompany = (MyCompany || {});
MyCompany.init = function () {
Logger.log('init');
};
function onOpen() {
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var menus = [{
name: "Init",
functionName: MyCompany.init
}];
spreadsheet.addMenu("Test", menus);
};
Jedoch, wenn ich den code von oben, es wieder
"MyCompany is not defined."
Wie zu lösen?
InformationsquelleAutor der Frage Ryan | 2014-07-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Könnten Sie besser dran, mit den Eigenschaften Service, wie Sie können verwenden Sie diese als eine Art von persistenten globalen variable.
klicken Sie auf "Datei > Projekt-Eigenschaften - > Projekt-Eigenschaften', um einen Schlüssel-Wert ein, oder verwenden Sie
Können die Daten abgerufen werden, mit
var myvalue = PropertiesService.getScriptProperties().getProperty('mykey');
InformationsquelleAutor der Antwort AshClarke
In der GAS-Globale Variablen sind nicht das, was Sie in anderen Sprachen. Sie sind nicht-Konstanten noch Variablen in allen Routinen.
Dachte ich, ich könnte die Verwendung von globalen Variablen für die Konsistenz zwischen Funktionen und Effizienz. Aber ich war falsch, wie bereits von einigen Leuten hier SO.
Globale variable, die ausgewertet wird bei jeder Ausführung eines Skripts, also nicht nur einmal jedes mal, wenn Sie Ihre Anwendung ausführen.
Globale Variablen KÖNNEN geändert werden, die in einem Skript (Sie sind also keine Konstanten, die nicht verändert werden kann durch einen Unfall), wird aber neu initialisiert werden, wenn ein anderes Skript aufgerufen wird.
Es gibt auch eine speed-Strafe auf die Verwendung von globalen Variablen. Wenn innerhalb einer Funktion verwenden Sie die gleichen globalen Variablen in zwei oder mehr Zeiten, wird es schneller zuordnen einer lokalen variable und verwenden, statt.
Wenn Sie möchten, zu bewahren Variablen zwischen allen Funktionen in Ihrer Anwendung, könnte es mit einem cacheService am besten.
Ich fand heraus, dass die Schleife durch alle Dateien und Ordner auf einem Laufwerk nimmt eine MENGE Zeit. Aber können Sie speichern Informationen über Dateien und Ordner im cache (oder auch Eigenschaften) und Geschwindigkeit bis mindestens 100 mal.
Die einzige Art, wie ich Globale Variablen verwenden, ist es jetzt für einige Präfixe und für die Benennung von widgets.
InformationsquelleAutor der Antwort SoftwareTester
Globale Variablen, die sicherlich vorhanden sind, in der GAS -, aber Sie müssen verstehen, die client/server Beziehung der Umwelt, um Sie richtig zu verwenden - sehen Sie sich bitte die Frage:
Globale Variablen in der Google-Skript (Arbeitsblatt)
Dies ist jedoch nicht das problem mit Ihrem code, die Dokumentation zeigt an, dass die Funktion ausgeführt werden soll, indem Sie das Menü angegeben werden muss der Methode als string, jetzt versorgen Sie die Ausgabe der Funktion:
https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet#addMenu%28String,Object%29
InformationsquelleAutor der Antwort Tim
Ich bin mit einem workaround durch Rückgabe einer Funktion mit einem Objekt meiner globalen Variablen:
InformationsquelleAutor der Antwort KrzFra