2016-08-09 8 views
1

Ich automatisiere einige Prozesse in Google Apps Script.Aufruf einer Funktion innerhalb einer Funktion (invoke) in Google Apps Script

Ich habe ein paar Funktionen erstellt, die derzeit unabhängig voneinander sind. Nun möchte ich sie jedoch so gruppieren, dass sie innerhalb der "Master" -Funktion ausgelöst werden.

function master(){ 
    // code that imports data from a form and organises it 
    runMeAfterMaster(); 
    } 


function runMeAfterMaster(){ 
    // code that should run after master 
} 

Beide sind im selben Skriptdatei, arbeiten beide unabhängig voneinander, aber ich kann nicht nur in der Lage zu sein scheinen zu „aufrufen“ oder meine andere Funktion innerhalb des einen Master nennen.

Bitte Hilfe!

+0

hallo Tony, könnten Sie bitte erarbeiten, was meinst du "kann nicht aufrufen". Welchen Fehler haben Sie erhalten? – Eugene

+0

Sie müssen überprüfen Master-Funktion aufgerufen wird oder nicht., Einmal Master-Funktion aufgerufen andere Funktion auch Sterne arbeiten. – Thom

+0

Hallo Leute! Danke Herren !! Eugene: Mit "ich kann nicht aufrufen" spreche ich über den Aufruf der Funktion runMeAfterMaster() innerhalb der Funktion master(). Aber meine Syntax führt es nicht aus. @Thom: Ja, ich führe den Funktionsmaster aus, aber die Funktion runMeAfterMaster() läuft nicht darin. Denken Sie nicht, dass es sich um ein Problem mit dem Oszilloskop handelt, da sich beide Funktionen in derselben Skriptdatei befinden. Irgendwelche Ideen? :) – Tony

Antwort

0

Was Sie geschrieben haben, ist in Ordnung runMeAfterMaster scheint aufgerufen zu werden, ich nehme an, Ihr Problem ist woanders haben Sie Ihre Funktionen mit Logger.log eingerichtet?
zB:

function master(){ 
    // code that imports data from a form and organises it 
    Logger.log("I'm in master now"); 
    runMeAfterMaster(); 
    Logger.log("still in master but after calling runMeAfterMaster"); 
    } 


function runMeAfterMaster(){ 
    Logger.log("I'm in runMeAfterMaster now"); 
    // code that should run after master 

    Logger.log("getting out of runMeAfterMaster"); 
} 

wenn Sie nicht Logger.log, da die Funktion ausgelöst wird automatisch yoo (und Sie einen Blick auf die Protokolle haben kann) kann es durch Ihre eigene loggin Funktion ersetzen können, die schreiben alles in einer Tabelle:

function logit(message) { 
    SpreadsheetApp.openById("SPREADSHEET_ID").getActiveSheet().appendRow([new Date(),message]); 
} 

dann wird es geworden:

function master(){ 
    // code that imports data from a form and organises it 
    logit("I'm in master now"); 
    runMeAfterMaster(); 
    logit("still in master but after calling runMeAfterMaster"); 
    } 


function runMeAfterMaster(){ 
    logit("I'm in runMeAfterMaster now"); 
    // code that should run after master 

    logit("getting out of runMeAfterMaster"); 
} 
+0

Danke Harold für deine Antwort! – Tony

+0

Woher wussten Sie, dass ich nicht debuggen/loggen konnte? – Tony

0

Harolds Tipps hat mich auf dem richtigen Weg. Der Weg zum Ausprobieren.

Ich habe meinen Code in einem Code-Editor (in meinem Fall Brackets) platziert und führte ihn durch JSLint. Um irgendwelche Fehler zu finden.

Keine Fehler dort, obwohl die geschweifte Klammer am Ende des Funktionsnamens rot war. In Google Apps erscheinen über 100 Codezeilen und die geschweifte Klammer wird rot. Unter 100 Zeilen ist es gut zu gehen!

Leider konnte ich nicht debuggen.

Also entschied ich mich, es einfacher zu machen und beide Funktionen innerhalb einer neuen aufzurufen. Das hat nicht funktioniert ... und ich ignoriere immer noch warum.

Zweite Sache, die ich tat, war einfach beide Code jeder Funktion in einem neuen umgruppieren und es nennen. Das hat funktioniert.

function MasterOfAll(){ 
    //Code from the Master function. 
    //Code from the runAfterMasterFunction. 
} 

Unnötig zu sagen, ich bin kein großer Fan dieser Lösung (unklar, chaotisch), aber es funktioniert!

+0

Ihr Problem ist so unerklärlich wie es ist. Wenn Sie uns nicht mehr Code geben, nehme ich an, dass wir Ihnen hier nicht mehr helfen können – Harold

Verwandte Themen