5

Załóżmy, że mam zepsutą przykładową funkcję w skrypcie Google Apps. Funkcja ma być wywoływana z arkusza google o argumencie:Jak przekazać argument do debugera Google Apps Script?

function myFunction(input) { 
    var caps = input.toUpperCase() 
    var output = caps.substrin(1, 4) 
    return output 
} 

Choć przykład ten skrypt powinien przerwać na linii 3 po wybraniu myFunction i naciśnij debug, ponieważ nie ma takich metod jak „substrin (),”będzie przerwa na linii 2, ponieważ nie można umieścić niezdefiniowane we wszystkich nasadek:

TypeError: Cannot call method "toUpperCase" of undefined. (line 2, file "Code")

Pytanie: Czy istnieje oficjalny sposób przekazać ciąg do google-apps skrypt do testowania/debugowanie bez dodatkowej funkcji

function myOtherFunction() { 
myFunction("testString") 
} 

i debugowanie tego?

Odpowiedz

6

Funkcja, którą napisałeś, potrzebuje parametru i nie ma sposobu, aby tego uniknąć, z wyjątkiem włączenia wartości domyślnej w samej funkcji. Zobacz przykład poniżej:

function myFunction(input) { 
    input= input||'test'; 
    var caps = input.toUpperCase(); 
    var output = caps.substrin(1, 4); 
    return output; 
} 
+0

To spowoduje wybór "testu", jeśli wejście zaczyna się jako niezdefiniowane, ale poza tym użyj wejścia? W jaki sposób decyduje, z którego użyć? I nie ma w tym celu interfejsu Google? – Menasheh

+0

Tak. Dodaj Logger.log (wyjście) przed powrotem, aby móc wizualizować wyjście –

+0

input = input || "test" jest skrótem dla , jeśli wejście (! input) = "test"; logiczna lub ("||") konwertuje dane wejściowe na true lub false, a jeśli false, wybiera drugi operand. Należy jednak zauważyć, że 0 zostanie uznane za fałszywe, więc jeśli 0 zostanie przekazane, dane wejściowe będą "testowe". Można tego uniknąć, używając: input = (input! == undefined)? input: "test"; Z drugiej strony, * dowolny * ciąg będzie testowany jako prawdziwy: ("", "0", "fałsz", "niezdefiniowany") wszystkie będą miały wartość true. – HardScale

Powiązane problemy