Tôi muốn viết các tập lệnh Javascript cho Google Apps Script bằng CoffeeScript và tôi gặp sự cố khi tạo các chức năng ở dạng mong muốn.Cách tạo các hàm javascript có tên, toàn cục trong coffeescript, cho Google Apps Script
Google Apps Script dự kiến tập lệnh chứa các hàm có tên, cấp cao nhất. (Tôi có thể sử dụng các thuật ngữ sai, vì vậy tôi sẽ minh họa những gì tôi muốn nói với các ví dụ ...)
Ví dụ, chức năng này được hạnh phúc được công nhận bởi Google Apps Script:
function triggerableFunction() {
// ...
}
... trong khi chức năng này không phải là (nó sẽ phân tích cú pháp, nhưng sẽ không bạn sẽ không thể kích hoạt nó):
var nonTriggerableFunction;
nonTriggerableFunction = function() {
// ...
};
tôi đã tìm thấy rằng với CoffeeScript, gần nhất tôi có thể nhận được là nonTriggerableFunction
biểu mẫu ở trên. Cách tiếp cận tốt nhất để tạo ra hàm có tên như triggerableFunction
ở trên là gì?
Tôi đã sử dụng tùy chọn 'trần' (công tắc -b
), để biên dịch mà không có trình bao bọc chức năng cấp cao nhất.
Dự án tôi tìm thấy trên web kết hợp CoffeeScript và Tập lệnh ứng dụng Google là Gmail GTD Bot, có vẻ như thực hiện việc này bằng cách kết hợp các dấu tích và bằng cách yêu cầu người dùng xóa một số dòng theo cách thủ công mã. (Xem phần cuối của script và phần 'Cài đặt' của README). Tôi hy vọng cho một giải pháp đơn giản và sạch hơn.
Điều đó dường như không tạo ra chức năng được đặt tên chung. Đây là những gì nó tạo ra, khi sử dụng công tắc -b: (function() { trở this.triggerableFunction = (function() { chức năng triggerableFunction (arg1, arg2) {} trở triggerableFunction; })(); })(); – mattbh
Bạn có chạy mã trong trình duyệt không? Hàm này là toàn cầu vì nó được gắn vào ngữ cảnh chung. Và nó được đặt tên: 'triggerableFunction.name ===" triggerableFunction "'.Tất nhiên, nó không tạo ra một tuyên bố chức năng, nhưng tôi tin rằng đó không phải là những gì được hỏi. – Adrien
Mã chạy trong công cụ Google Apps Script thay vì trình duyệt. Tôi đã thực sự hỏi làm thế nào để tạo ra một tuyên bố chức năng, mà công cụ Google Apps Script dường như yêu cầu. Cách giải quyết được sử dụng bởi 'gmail-gtd-bot' (sử dụng back-tick) đã làm việc cho tôi. – mattbh