Whoa !!! Quay lại xe tải lên. Có một cách tiếp cận đơn giản hơn nhiều
Tôi đã nghiên cứu điều này một chút trong vài tuần qua vì tôi đang lên kế hoạch thực hiện tương tự cho báo cáo hàng tháng của mình. Tôi chưa có mã thực sự nhưng tôi sẽ thêm nó khi tôi tiến bộ.
Trong Google Documents, có quá nhiều API và các thuật ngữ tương tự liên quan đến việc làm việc với tài liệu mà mọi thứ có thể gây nhầm lẫn một chút. Nếu bạn chưa biết, hãy thiết lập trong đầu của bạn thực tế rằng GAS (Google Apps Scripting) và GAE (Google App Engine) là hai điều hoàn toàn khác nhau. Mặc dù chúng âm thanh giống như chúng tương tự như Java là JavaScript.
GAS là các tập lệnh được nhúng trong Google Documents (hy vọng sẽ có thể nhập dưới dạng mô-đun độc lập trong tương lai). như sửa đổi/cập nhật tài liệu bên ngoài và phản hồi email tự động). Hãy nhớ rằng những thứ này cần phải nhẹ vì chúng chạy trên máy chủ của google. Nếu kịch bản của bạn mất nhiều thời gian để hoàn thành, việc thực thi sẽ bị cắt sớm (google xung quanh để tìm các giới hạn). Điều đó có nghĩa là bạn chỉ nên sử dụng vani JS (không có khung công tác như jQuery) và các chỉnh sửa hiệu suất bất cứ khi nào có thể.
GAE, mặt khác, giống như một máy chủ web (với một lớp cơ sở dữ liệu có sẵn) sống ở đâu đó trong đám mây. Nó tồn tại như một lớp trung gian (và đã được triển khai) thuận tiện cho các doanh nghiệp/sở thích để tạo ra các ứng dụng tùy chỉnh để thực hiện việc nâng hạng nặng hơn. Thật không may, API của Bảng tính bên ngoài quá hạn chế để hoàn thành những gì chúng tôi đang làm việc một mình vì vậy nó không phải là một tùy chọn.
Tự động hóa sử dụng Google Apps Scripting và trigger theo thời gian
Cách tiếp cận này nên công việc nhưng đòi hỏi một cách tiếp cận nhẹ hackish.
Mở sổ làm việc chứa bảng báo cáo của bạn. Nhấp vào [Tools] -> [Script editor ...]. Khi có goto [Triggers] -> [Current script's triggers ...].
Nếu bạn không có bất kỳ trình kích hoạt nào, hãy thêm một trình kích hoạt. Sau đó, trong trình đơn thả xuống 'Sự kiện', chọn 'Theo thời gian'.
Chào mừng bạn đến với thế giới xử lý sự kiện phía máy chủ. Một trong những tính năng gọn gàng mà bạn nhận được với các tài liệu dựa trên đám mây là khả năng kích hoạt các công việc cron trực tiếp trong tài liệu của bạn. Không cần phần mềm trung gian bên ngoài.
Nếu bạn không nhận thấy bây giờ, không có trình kích hoạt cho 'Tháng giờ'. Đây là nơi nó bị hacky. Để làm việc xung quanh việc thiếu tính năng này, chúng tôi sẽ yêu cầu chúng tôi kích hoạt trình kích hoạt hàng ngày và sử dụng một số JavaScript để khớp với ngày hiện tại với ngày hôm trước.
[mã sẽ đến đây]
Đầu tiên, đến hàm được gắn với trình xử lý sự kiện kích hoạt thời gian. Khối mã này chỉ đơn giản là phân tích ngày tháng, so sánh nó với ngày trước đó và lưu trữ giá trị trong một trang tính ẩn (mà chúng tôi sử dụng như là lớp kiên trì) cho so sánh ngày hôm sau. Nếu điều kiện tháng mới được đáp ứng thì khối mã tiếp theo sẽ chạy.
[Mã sẽ đi đây]
Yours sẽ rõ ràng là khác với tôi một chút nhưng khái niệm cơ bản là:
- tải đối tượng bảng tính (không nên nhầm lẫn với một đối tượng Sheet)
- Xác định đối tượng mẫu khuôn mẫu
- Sao chép trang tính mẫu cho tên phù hợp dựa trên phạm vi ngày
Trong mỏ, bước tiếp theo của tôi là trích xuất dữ liệu từ tháng để tạo biểu đồ đường xếp chồng lên nhau để báo cáo trạng thái hiện tại cho các cấp trên của tôi.
Lưu ý: Do tính chất cộng tác đa người dùng của tài liệu nên sự kiện phải được kích hoạt phía máy chủ. Điều này tạo ra một vấn đề lớn đối với chúng tôi. Vì mã sự kiện chạy ở nơi khác nếu lỗi mã, chúng tôi không nhận được bất kỳ phản hồi nào từ trình duyệt của mình. Giải pháp duy nhất cho việc này là thiết lập thông báo trên trình kích hoạt để gửi email cho bạn ngay lập tức khi tập lệnh lỗi.
Cập nhật: Trong khi nghiên cứu điều này, tôi đã tìm thấy một kỹ thuật thú vị khác. Nếu tôi có thể quản lý để làm việc này mà không có bất kỳ lỗi nào, tôi có thể thử gọi trình kích hoạt bằng cách sử dụng ngày được đánh dấu trên Lịch Google.
@Priyank Bolia. Tôi không nghĩ bạn hiểu Google Documents. Tôi hoàn toàn không có bảng tính Excel. Tôi chỉ có một bảng tính Google Docs. Trong trang tính này, tôi có một trang tính mẫu mà tôi muốn sao chép, đổi tên và sau đó chỉnh sửa. Tôi muốn làm điều này theo chương trình. – chollida
Bạn giải quyết vấn đề này như thế nào? – Tyug
@Tyug Tôi chưa giải quyết được. – chollida