Apps Script có thể kết nối với cơ sở dữ liệu bên ngoài thông qua dịch vụ JDBC. Đây là một trình bao bọc dựa trên công nghệ Kết nối cơ sở dữ liệu Java tiêu chuẩn. Dịch vụ JDBC hỗ trợ Google Cloud SQL cho MySQL, MySQL, Máy chủ Microsoft SQL và cơ sở dữ liệu Oracle.
Để cập nhật cơ sở dữ liệu bên ngoài bằng JDBC, tập lệnh của bạn phải mở một kết nối với cơ sở dữ liệu, sau đó thực hiện các thay đổi bằng cách gửi câu lệnh SQL.
Cơ sở dữ liệu Google Cloud SQL
Google Cloud SQL cho phép bạn tạo cơ sở dữ liệu quan hệ có trong đám mây của Google. Xin lưu ý rằng Cloud SQL có thể phát sinh phí dựa trên mức sử dụng của bạn.
Bạn có thể tạo một thực thể Google Cloud SQL bằng cách làm theo các bước trong phần Bắt đầu nhanh Cloud SQL.
Tạo kết nối Google Cloud SQL
Có 2 cách để thiết lập kết nối với cơ sở dữ liệu Google Cloud SQL bằng cách sử dụng dịch vụ JDBC của Apps Script:
- (Nên dùng) Kết nối bằng Jdbc.getCloudSqlConnection(url)
- Kết nối bằng Jdbc.getConnection(url)
Các phương pháp này được giải thích ở bên dưới. Cả hai đều hợp lệ, nhưng phương thức thứ hai yêu cầu bạn cấp quyền cho một tập hợp dải IP để truy cập vào cơ sở dữ liệu của bạn.
Sử dụng Jdbc.getCloudSqlConnection(url) (nên dùng)
Phương thức này tạo kết nối với một phiên bản Google Cloud SQL MySQL bằng phương thức Jdbc.getCloudSqlConnection(url). URL cơ sở dữ liệu có dạng jdbc:google:mysql://subname
, trong đó subname
là Tên kết nối phiên bản của MySQL được liệt kê trên trang Tổng quan của phiên bản Cloud SQL trong Bảng điều khiển Google Cloud.
Để kết nối với Cloud SQL Server, hãy xem Jdbc.getConnection(url).
Sử dụng Jdbc.getConnection(url)
Để sử dụng phương thức này, bạn phải uỷ quyền một số dải địa chỉ IP Định tuyến liên miền không phân lớp (CIDR) để các máy chủ của Apps Script có thể kết nối với cơ sở dữ liệu của bạn. Trước khi chạy tập lệnh của bạn, hãy hoàn tất các bước sau:
Trong phiên bản Google Cloud SQL, hãy uỷ quyền các dải IP cho từng dải IP từ nguồn dữ liệu này.
Sao chép URL đã được gán vào cơ sở dữ liệu của bạn; URL đó phải có biểu mẫu
jdbc:mysql:subname
.
Sau khi cho phép các dải IP này, bạn có thể tạo kết nối đến thực thể Google Cloud SQL bằng một trong các phương thức Jdbc.getConnection(url) và URL mà bạn đã sao chép ở trên.
Các cơ sở dữ liệu khác
Nếu đã có cơ sở dữ liệu MySQL, Microsoft SQL Server hoặc Oracle, bạn có thể kết nối với cơ sở dữ liệu đó thông qua dịch vụ JDBC của Apps Script.
Tạo các kết nối cơ sở dữ liệu khác
Để tạo kết nối cơ sở dữ liệu bằng dịch vụ JDBC của Apps Script, trong phần cài đặt cơ sở dữ liệu, bạn phải cho phép dải IP từ nguồn dữ liệu này.
Sau khi các danh sách cho phép này có sẵn, bạn có thể tạo kết nối với cơ sở dữ liệu bằng cách sử dụng một trong các phương thức Jdbc.getConnection(url) và URL của cơ sở dữ liệu.
Mã mẫu
Mã mẫu dưới đây giả định bạn đang kết nối với cơ sở dữ liệu Google Cloud SQL và tạo kết nối cơ sở dữ liệu bằng phương thức Jdbc.getCloudSqlConnection(url). Đối với các cơ sở dữ liệu khác, bạn phải sử dụng phương thức Jdbc.getConnection(url) để tạo các kết nối cơ sở dữ liệu.
Để biết thêm thông tin về các phương thức JDBC, hãy xem tài liệu Java về JDBC.
Tạo cơ sở dữ liệu, người dùng và bảng
Hầu hết các nhà phát triển đều sử dụng công cụ dòng lệnh của MySQL để tạo cơ sở dữ liệu, người dùng và bảng. Tuy nhiên, bạn có thể thực hiện thao tác tương tự trong Apps Script, như minh hoạ dưới đây. Bạn nên tạo ít nhất một người dùng khác để tập lệnh không phải lúc nào cũng phải kết nối với cơ sở dữ liệu dưới dạng root
.
Ghi vào cơ sở dữ liệu
Những ví dụ dưới đây minh hoạ cách ghi một bản ghi vào cơ sở dữ liệu cũng như một loạt 500 bản ghi. Việc phân lô là rất quan trọng đối với các hoạt động hàng loạt.
Ngoài ra, xin lưu ý việc sử dụng các câu lệnh có tham số, trong đó các biến được biểu thị bằng ?
. Để ngăn chặn
các cuộc tấn công bằng phương thức chèn SQL, bạn nên sử dụng
các câu lệnh có tham số để thoát tất cả dữ liệu do người dùng cung cấp.
Đọc từ cơ sở dữ liệu
Ví dụ này minh hoạ cách đọc một số lượng lớn bản ghi từ cơ sở dữ liệu, lặp lại tập hợp kết quả nếu cần.
Đóng kết nối
Kết nối JDBC tự động đóng khi một tập lệnh hoàn tất việc thực thi. (Lưu ý rằng một lệnh gọi google.script.run
duy nhất được tính là một lượt thực thi hoàn chỉnh, ngay cả khi trang dịch vụ HTML thực hiện lệnh gọi vẫn đang mở.)
Tuy nhiên, nếu biết mình đã hoàn tất với một kết nối, câu lệnh hoặc kết quả được đặt trước khi kết thúc tập lệnh, bạn nên đóng chúng theo cách thủ công bằng cách gọi JdbcConnection.close()
, JdbcStatement.close()
hoặc JdbcResultSet.close()
.
Việc hiển thị hộp thoại cảnh báo hoặc lời nhắc cũng chấm dứt mọi kết nối JDBC đang mở. Tuy nhiên, các phần tử hiển thị khác trên giao diện người dùng (như trình đơn hoặc hộp thoại tuỳ chỉnh và thanh bên có nội dung tuỳ chỉnh) thì không.
Google, Google Workspace cùng các nhãn hiệu và biểu trưng có liên quan là các nhãn hiệu của Google LLC. Tất cả các tên công ty và tên sản phẩm khác là nhãn hiệu của các công ty liên kết với Google LLC.