Chciałbym napisać skrypty JavaScript dla Google Apps Script używając CoffeeScript i mam problemy z generowaniem funkcji w oczekiwanej formie.Jak generować globalne, nazwane funkcje javascript w coffeescript, dla Google Apps Script
Google Apps Script oczekuje, że skrypt będzie zawierał funkcje o najwyższym poziomie i nazwane. (Może być użycie niewłaściwego terminologii, więc będę zilustrować, co mam na myśli przykłady ...)
Na przykład, funkcja ta jest szczęśliwie rozpoznawane przez Google Apps Script:
function triggerableFunction() {
// ...
}
... podczas gdy funkcja ta nie jest (będzie analizować, ale nie nie będzie w stanie ją wyzwolić):
var nonTriggerableFunction;
nonTriggerableFunction = function() {
// ...
};
Odkryłam, że z coffeescript, najbliższa jestem w stanie uzyskać to nonTriggerableFunction
formularz powyżej. Jakie jest najlepsze podejście do generowania nazwanej funkcji, jak powyżej?
Używam już opcji "bare" (przełącznik -b
), aby skompilować bez opakowania zabezpieczającego funkcji najwyższego poziomu.
Jeden z projektów, który znalazłem w Internecie, który łączy skrypt kawy i skrypt aplikacji Google, to Gmail GTD Bot, który wydaje się, że robi to za pomocą kombinacji tyknięć wstecznych, i prosząc użytkownika o ręczne usunięcie niektórych linii z wynikowego kod. (Zobacz koniec sekcji script i sekcji "Instalacja" pod numerem README). Mam nadzieję na prostsze i czystsze rozwiązanie.
To nie wydaje się generować globalnej nazwanej funkcji. To, co wytwarza przy użyciu przełącznika B: (funkcja() { powrotu this.triggerableFunction = (funkcja() { funkcja triggerableFunction (arg1, arg2) {} powrotu triggerableFunction; })(); })(); – mattbh
Czy uruchomiłeś kod w przeglądarce? Funkcja jest globalna, ponieważ jest dołączona do kontekstu globalnego. I nazywa się: 'triggerableFunction.name ===" triggerableFunction "'.Oczywiście nie generuje on instrukcji funkcji, ale uważam, że nie jest to pytanie. – Adrien
Kod był uruchamiany w mechanizmie skryptu Google Apps, a nie w przeglądarce. Naprawdę pytałem, jak wygenerować instrukcję funkcji, której silnik Google Apps Script wymaga. Obejście zastosowane przez "gmail-gtd-bot" (za pomocą back-ticks) zadziałało dla mnie. – mattbh