6

Czy istnieje sposób na dodanie argumentów do funkcji, która zostanie dodana do menu Centrum skryptów w dokumencie Arkusza Google? Jest to normalna metoda onOpen.Dodawanie argumentów do funkcji w obiekcie onOpen wpisów

function onOpen() { 
    var sheet = SpreadsheetApp.getActiveSpreadsheet(); 
    var entries = [{ 
    name : "Summary", 
    functionName : "myOnOpen" 
    } 
]; 
    sheet.addMenu("Script Center Menu", entries); 
}; 

Zastanawiam się, czy jest coś podobnego do następującego.

function onOpen() { 
    var sheet = SpreadsheetApp.getActiveSpreadsheet(); 
    var entries = [{ 
    name : "Summary", 
    functionName : "myOnOpen", 
    arguments : [value: "Some value"] 
    } 
    ]; 
    sheet.addMenu("Script Center Menu", entries); 
}; 

Dzięki!

Odpowiedz

8

Nie sądzę, że jest możliwe, dokładnie tak, jak zostały napisane, ale można to zrobić w następujący sposób:

function onOpen() { 
    var sheet = SpreadsheetApp.getActiveSpreadsheet(); 
    var entries = [{ 
    name : "Summary", 
    functionName : "myParameterisedOpen", 
    } 
    ]; 
    sheet.addMenu("Script Center Menu", entries); 
}; 

function myParameterisedOpen() { 
    myOnOpen("Some value"); 
}; 
+0

Dzięki! Jest to prosta poprawka, z którą mogę żyć! – adifire

0

Tak, chciałem stworzyć grono parametrycznych funkcji, takich jak to, ale dynamicznie w oparciu o to, co było w moim arkuszu. Po serii prób i błędów i zdaniu sobie sprawy z debuggera w Skrypcie Google okazało się, że to działa:

function onOpen() { 
    var name = 'bob'; 
    var functionName = 'generate' + name + 'Schedule'; 
    this[functionName] = function() { return generateSchedule(name); } 
    generatebobSchedule(); 
} 

function generateSchedule(e) { 
    Browser.msgBox("Alert", e, Browser.Buttons.OK); 
} 
+0

Nieważne. Jeśli później wywołasz metodę generatebobSchedule, zostanie ona wyczyszczona, więc nie generbobchedSuleule. – Gary