5

Tôi đang sử dụng cơ sở dữ liệu dựa trên web mà tôi cần thêm khả năng bảng tính vào giao diện người dùng của nó. Tôi đã nghĩ rằng tôi có thể sử dụng Google Docs Spreadsheets. Google App Script của họ dường như có chức năng mà tôi cần. Đặc biệt, tôi có thể sử dụng dịch vụ URLFetch kết hợp với các sự kiện onEdit để giữ cho bảng tính và DB đồng bộ hóa - kiểu AJAX. Nó cũng cho phép tôi linh hoạt trong việc xây dựng, lưu và chia sẻ bảng tínhCách tốt nhất để kết nối bảng tính với cơ sở dữ liệu web

Tuy nhiên, một số điều về Google App Script đã tạm dừng. Nó chạy phía máy chủ nên rất khó gỡ lỗi cục bộ. Nó không có bất kỳ loại trình gỡ rối nào với các điểm ngắt hoặc bước. Nó không thể nhập các mô-đun hoặc thư viện bên ngoài. Không có JSLint. Nếu không có những điều này tôi bắt đầu nhận được cảm giác "Uh, oh, điều này sẽ làm tổn thương".

Vì vậy, tôi tự hỏi liệu có cách nào tốt hơn để bật chức năng bảng tính có thể truy cập của trình duyệt lên cơ sở dữ liệu dựa trên web hiện có không? Hoặc có các phương pháp hay nhất để khai thác tối đa Google App Script không?

EDIT: Đây là những giải pháp tiềm năng theo thứ tự những gì sẽ là tốt nhất cho các ứng dụng của tôi:

  1. Trình duyệt dựa trên JavaScript engine bảng tính. (Có thể không tồn tại.)
  2. Mô-đun công cụ bảng tính Python mà tôi có thể cài đặt trên Google App Engine. (Tôi chưa từng thấy điều này.)
  3. Cách tiếp cận mạnh mẽ hơn và AJAXian đối với Bảng tính Google. (Xem câu hỏi gốc.)
  4. Công cụ bảng tính nguồn mở mà tôi có thể cài đặt trên EC2. (Những thứ này dường như tồn tại - có thể là SocialCalc hoặc Simple Spreadsheet. Đề xuất?)
+0

Cụ thể bạn cần chức năng bảng tính nào? Bảng tính làm rất nhiều những ngày này! – RedFilter

+0

@RedFilter. Hầu hết chỉ là công thức cơ bản, tham chiếu ô, phụ thuộc, định dạng ô cơ bản. Mọi thứ khác sẽ là tiền thưởng - nhiều trang tính, định dạng ô ưa thích. Biểu đồ có lẽ không cần thiết. Điều quan trọng nhất là có thể thực hiện các yêu cầu loại XHR cho cơ sở dữ liệu của tôi. – mjhm

+1

Bạn đã giảm giá bằng Bảng tính Google dưới dạng chế độ xem trình duyệt. Đưa dữ liệu vào một trang tính với một công thức ImportData (URL) trả về một csv? – DavidF

Trả lời

2

Chúng tôi sử dụng chức năng bảng tính trên trang web, chứ không phải viết kịch bản tất cả các tính năng của bảng tính, chúng tôi sử dụng công cụ tính toán mang lại cho chúng tôi chức năng bảng tính có lập trình. Công cụ tính toán biết cách tính hàng trăm loại công thức, xử lý phụ thuộc (và thứ tự giữa các phụ thuộc), định dạng ô, v.v. Trong trường hợp cụ thể của tôi, chúng tôi sử dụng SpreadsheetGear - http://www.spreadsheetgear.com/products/spreadsheetgear.net.aspx

Chúng tôi tạo biểu diễn HTML của bảng tính với điều hướng ô và nhiều tính năng khác bằng cách sử dụng một số javascript. Khi chúng ta cần bảng tính toán lại (ví dụ F9 trong Excel), chúng tôi gửi toàn bộ bảng tính đến máy chủ, yêu cầu nó tính toán mọi thứ và sau đó điền vào biểu diễn trang web với kết quả. Điều này cũng có thể ghi vào cơ sở dữ liệu tùy thuộc vào những gì trên bảng tính.

Có lẽ tôi cần đầu vào của bạn tại thời điểm này, để xem câu trả lời của tôi có quá xa lộ không.

+0

Điều này chắc chắn đang đi đúng hướng. Nếu không ai khác bật lên, bạn sẽ nhận được điều này chỉ dành cho cụm từ tìm kiếm "công cụ tính toán" và "công cụ bảng tính". Đây là những ý tưởng đầy hứa hẹn. Tôi sẽ cập nhật câu hỏi với một số chi tiết khác. – mjhm

0

Vì vậy, tôi đã tự mình đào sâu và điều này đã làm hại một chút. Dưới đây là các nội:

Nhược điểm:

  1. Bạn phải sử dụng biên tập viên của họ, không có JSLint.
  2. Không có trình gỡ rối. Các tập lệnh chạy phía máy chủ, do đó Firebug và các công cụ trình duyệt khác không trợ giúp. "View-> Execution transcript" và "View-> Logs" là một chút trợ giúp. Nhưng chúng dường như không hoạt động trong các sự kiện "onEdit".
  3. Kết nối với web thông qua Dịch vụ UrlFetch của họ không có chế độ không đồng bộ. Và nó không hoạt động chút nào trong các sự kiện "onEdit": http://code.google.com/p/google-apps-script-issues/issues/detail?id=185
  4. Về cơ bản, chúng có ba loại sự kiện. "onLoad", "onInstall" và "onEdit". Đặc biệt tôi đã bỏ lỡ một sự kiện "onClick".
  5. Không hỗ trợ thư viện bên ngoài.

Ưu điểm:

  1. Nó là có thật Javascript, vì vậy nó có chức năng dự đoán, và tôi có thể sử dụng một công cụ JSLint bên ngoài.
  2. Đường cong học tập nông cạn. Hiểu các trang tính, phạm vi và các giá trị cài đặt/nhận là các khái niệm chính.
  3. Rất nhiều chức năng để thao tác các mục bảng tính, định dạng, v.v.
  4. Hỗ trợ API dữ liệu của Google? Tôi đã không sử dụng này, nhưng nó trông giống như con đường để đi cho connnecting tài nguyên web bên ngoài.
  5. Các bản cập nhật tích hợp, được viết trên bảng tính của tôi sẽ hiển thị ngay lập tức cho những người khác đang xem bảng tính.

Nhìn chung môi trường này có rất nhiều tiềm năng, với nhiều khả năng giao diện người dùng, nhưng dường như vẫn thiếu một số chức năng chính để phát triển sản xuất thực tế.

1

Cơ sở dữ liệu dựa trên web với khả năng front-end của bảng tính? Âm thanh như Ragic. Và bạn nói bạn cần phát triển chương trình phụ trợ của riêng mình, tôi nghĩ bạn có thể sử dụng API HTTP của họ để đăng dữ liệu lên Ragic và nhờ người dùng sử dụng bảng tính front-end trong khi bạn sử dụng API để đồng bộ hóa dữ liệu của mình.