Apps Script có thể kết nối với các cơ sở dữ liệu bên ngoài thông qua dịch vụ JDBC, một trình bao bọc xung quanh công nghệ Java Database Connectivity tiêu chuẩn. Dịch vụ JDBC hỗ trợ Google Cloud SQL cho MySQL, MySQL, Microsoft SQL Server 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 đến cơ sở dữ liệu rồi 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ác cơ sở dữ liệu quan hệ nằm trên đám mây của Google. Xin lưu ý rằng Cloud SQL có thể tính phí dựa trên mức sử dụng của bạn.
Bạn có thể tạo một phiên bản Google Cloud SQL bằng cách làm theo các bước được liệt kê trong phần Hướng dẫn nhanh về Cloud SQL.
Tạo kết nối Google Cloud SQL
Có hai cách để thiết lập kết nối với cơ sở dữ liệu Google Cloud SQL bằ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 thức 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 uỷ quyền cho một nhóm 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 một kết nối đến 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 MySQL có trong trang Tổng quan về phiên bản Cloud SQL trong bảng điều khiển Google Cloud.
Để kết nối với Cloud SQL 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 cho một số dải địa chỉ IP Định tuyến liên miền không phân lớp (CIDR) để 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, hãy hoàn tất các bước sau:
Trong phiên bản Google Cloud SQL, hãy uỷ quyền cho các dải IP, mỗi lần một dải từ nguồn dữ liệu này.
Sao chép URL được chỉ định cho cơ sở dữ liệu của bạn; URL này phải có dạng
jdbc:mysql:subname
.
Sau khi uỷ quyền cho các dải IP này, bạn có thể tạo kết nối đến phiên bản 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 riêng, 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 một mối kết nối cơ sở dữ liệu bằng dịch vụ JDBC của Apps Script, bạn phải uỷ quyền cho dải IP từ nguồn dữ liệu này trong phần cài đặt cơ sở dữ liệu.
Sau khi thiết lập các danh sách cho phép này, bạn có thể tạo kết nối đến cơ sở dữ liệu bằ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 bên dưới giả định rằng bạn đang kết nối với một cơ sở dữ liệu Google Cloud SQL và tạo các 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 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 cho JDBC.
Tạo cơ sở dữ liệu, người dùng và bảng
Hầu hết nhà phát triển đều sử dụng công cụ dòng lệnh MySQL để tạo cơ sở dữ liệu, người dùng và bảng. Tuy nhiên, bạn có thể làm điều tương tự trong Apps Script, như minh hoạ bên dưới. 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 luôn kết nối với cơ sở dữ liệu dưới dạng root
.
Ghi vào cơ sở dữ liệu
Các 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 lô gồm 500 bản ghi. Việc xử lý theo lô là rất quan trọng đối với các thao tác hàng loạt.
Cũng lưu ý đến việc sử dụng các câu lệnh được tham số hoá, trong đó các biến được biểu thị bằng ?
. Để ngăn chặn các cuộc tấn công chèn SQL, bạn nên sử dụng các câu lệnh được tham số hoá để thoát khỏi mọi 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 trên tập kết quả khi cần.
Đóng các kết nối
Các kết nối JDBC sẽ tự động đóng khi một tập lệnh hoàn tất việc thực thi. (Xin lưu ý rằng một lệnh gọi google.script.run
được tính là một lần 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 mở.)
Tuy nhiên, nếu biết rằng bạn đã hoàn tất một kết nối, câu lệnh hoặc tập hợp kết quả trước khi kết thúc tập lệnh, thì bạn nên đóng các kết nối, câu lệnh hoặc tập hợp kết quả đó theo cách thủ công bằng cách gọi JdbcConnection.close()
, JdbcStatement.close()
hoặc JdbcResultSet.close()
.
Việc hiện hộp thoại cảnh báo hoặc hộp thoại nhắc cũng sẽ chấm dứt mọi kết nối JDBC đang mở. Tuy nhiên, các phần tử giao diện người dùng khác đang hiển thị (chẳng hạn 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 như những nhãn hiệu và biểu tượng có liên quan là nhãn hiệu của Google LLC. Tất cả các tên sản phẩm và công ty khác là nhãn hiệu của những công ty mà chúng liên kết.