Google sheet có thể lấy dữ liệu từ cơ sở dữ liệu không?

Có nhiều cách để đẩy dữ liệu từ SQL Server sang Google Sheets, bao gồm sử dụng Python hoặc Google Apps Script. Mặc dù Python rất tốt cho một truy vấn SQL nặng, nhưng tôi thấy hơi rắc rối khi lên lịch. Trong khi đó, Google Apps Script hoạt động hoàn hảo cho các truy vấn SQL cỡ trung bình và trình kích hoạt giúp lập lịch trình rất đơn giản, cũng không cần sử dụng bất kỳ API nào

Trong bài viết này, tôi sẽ chia sẻ với các bạn cách đẩy dữ liệu từ MS SQL Server lên Google Sheets bằng Google Apps Script và các mẹo tôi học được khi triển khai giải pháp

Các bước nhập dữ liệu từ MS SQL Server vào Google Sheets bao gồm

  1. Tạo người dùng có quyền truy cập vào Máy chủ SQL (tùy chọn)
  2. Danh sách trắng Địa chỉ IP Google
  3. Tạo một hàm để đọc dữ liệu từ SQL
  4. Tạo hàm đẩy dữ liệu lên Google Sheets
  5. Đặt tất cả chúng lại với nhau

1. Tạo người dùng có quyền truy cập vào Máy chủ SQL

Giả sử bạn đã làm việc với SQL Server của mình rồi, đây không phải là bước bắt buộc. Bạn cũng có thể sử dụng tài khoản của mình

Tuy nhiên, khi kết nối với SQL Server bằng Google Apps Script, bạn cần hiển thị rõ ràng tên người dùng và mật khẩu của mình, điều này không tối ưu cho việc sử dụng tài khoản thông thường của bạn. Do đó, bạn nên tạo một người dùng SQL dành riêng cho Google Apps Script và người dùng này chỉ có thể có quyền truy cập đọc vào một tập hợp các bảng

Nếu bạn có nhóm Cơ sở hạ tầng quản lý quyền truy cập vào các công cụ CNTT khác nhau trong công ty của mình, họ có thể giúp bạn thực hiện nhiệm vụ này

2. Danh sách trắng Địa chỉ IP Google

Chỉ sau khi các địa chỉ IP được đưa vào danh sách trắng, dịch vụ Google JDBC mới có thể tạo kết nối cơ sở dữ liệu

Trên thực tế, điều đó có nghĩa là bạn cần đưa danh sách IP này vào danh sách trắng (đây là tài liệu chính thức mà Google đề cập đến từ tài liệu JDBC). Điều này cũng có thể được thực hiện bởi nhóm Cơ sở hạ tầng

3. Chức năng Đọc dữ liệu từ SQL

Đầu tiên, bạn mở một SpreadSheet trống, sau đó mở Tools > Script Editor. Bạn có thể dán mã sau vào Trình chỉnh sửa tập lệnh của mình

Chức năng này thực hiện logic sau

  • Kết nối với máy chủ SQL
  • Truy vấn cơ sở dữ liệu
  • Lưu kết quả của truy vấn SQL dưới dạng mảng nhiều chiều

đầu vào chức năng

  • Tên của cơ sở dữ liệu SQL mà bạn muốn kết nối
  • Truy vấn SQL để truy xuất dữ liệu của bạn

đầu ra chức năng

Một mảng nhiều chiều với

  • chiều dài mảng = số hàng được trả về bởi truy vấn SQL và
  • độ dài của mỗi phần tử mảng = số cột được trả về bởi truy vấn SQL

lời khuyên của tôi

  • Nhiều hướng dẫn yêu cầu bạn đặt tên máy chủ của mình vào biến máy chủ ở trên. Nếu bạn đã thử làm điều đó và gặp lỗi này,
Exception: Unexpected error while getting the method or property getConnection on object Jdbc.

thay vào đó hãy thử với địa chỉ IP công khai của cơ sở dữ liệu của bạn (có thể tìm thấy trong Azure Portal)

  • Dịch vụ JDBC cũng cho phép bạn kết nối với cơ sở dữ liệu MySQL và Oracle, đọc thêm về dịch vụ này tại đây

4. Chức năng Đẩy dữ liệu lên Google Sheets

Hàm sau có thể được sử dụng để nối bất kỳ mảng đa chiều nào vào Google Trang tính

  • Đầu tiên, nó tìm thấy hàng cuối cùng có dữ liệu của trang tính
  • Sau đó, ở dưới cùng của dữ liệu hiện có, lấy một phạm vi trang tính bằng với kích thước của mảng
  • Sau đó đặt các giá trị của phạm vi đó bằng với các giá trị của mảng
  • Cuối cùng, nó loại bỏ mọi bản sao nếu tồn tại

đầu vào chức năng

  • Dữ liệu bạn muốn đẩy. Dữ liệu này phải là một mảng nhiều chiều
  • Tên của trang tính bạn muốn đẩy dữ liệu vào

đầu ra chức năng

  • Không có, dữ liệu được đẩy sau khi chức năng được thực thi

lời khuyên của tôi

  • Nếu bạn muốn thay thế tất cả dữ liệu hiện có thay vì nối thêm vào chúng, hãy xóa nội dung của trang tính trước khi thêm dữ liệu. Bạn làm điều đó bằng cách thêm dòng này trên dòng 7
sheet.clearContents();
  • Nếu bạn chỉ muốn xóa một phần của nội dung hiện có, e. g xóa mọi thứ trừ tiêu đề cột, hãy sử dụng
sheet.getRange('A2:H').clearContent();
  • Thay vào đó, nếu bạn có mảng một chiều, hãy sửa đổi dòng 7 thành
sheet.getRange(lastRow+1, 1, 1, data.length).setValues(data)

(Ở đây về cơ bản bạn có được một phạm vi chỉ có 1 hàng và số cột = độ dài của mảng)

5. Để tất cả chúng cùng nhau

Bây giờ bạn chỉ cần một hàm để gọi hàm readData và chuyển kết quả của nó cho hàm pushDataToGoogleSheet

lời khuyên của tôi

  • Nếu bạn có nhiều cơ sở dữ liệu mà bạn muốn truy vấn dữ liệu, bạn có thể nhận danh sách cơ sở dữ liệu trong cùng một kết nối, sau đó gọi hàm cho mọi cơ sở dữ liệu đáp ứng tiêu chí của bạn

  • Nếu bạn có một truy vấn SQL dài, hãy đặt nó trên nhiều dòng và kết nối các dòng bằng cách sử dụng phép nối (“+”) HOẶC sử dụng công cụ khai thác SQL trực tuyến để loại bỏ tất cả các ngắt dòng
  • Sử dụng dấu ngoặc kép “ ” để mở và đóng truy vấn SQL, vì SQL sử dụng dấu nháy đơn, điều này sẽ giúp bạn tránh được những rắc rối không cần thiết
  • Truy vấn SQL không thể dài hơn 250 ký tự. Nếu bạn có một truy vấn lớn, sẽ tốt hơn nếu sử dụng Python để đẩy dữ liệu thay thế
  • Nếu bạn gặp vấn đề về thời gian chờ với truy vấn, hãy tắt thời gian chạy Chrome V8 bằng cách đi tới Cài đặt dự án > Bỏ chọn Bật thời gian chạy Chrome V8
  • Nếu bạn muốn theo dõi dữ liệu của mình thường xuyên, hãy chuyển đến Trình kích hoạt (ký hiệu đồng hồ ở phía bên trái Trình chỉnh sửa tập lệnh), chọn chức năng được lên lịch là “chính”, nguồn sự kiện là “Theo thời gian” và

Sự kết luận

Google Trang tính là một công cụ trực tuyến tuyệt vời để thực hiện trực quan hóa đơn giản và tạo báo cáo được chia sẻ, trong khi MS SQL Server là công cụ tuyệt vời để lưu trữ dữ liệu. Sự kết hợp giữa Google Trang tính và MS SQL Server sẽ rất mạnh mẽ và cho phép bạn thực hiện nhiều phân tích, đặc biệt khi bạn muốn theo dõi dữ liệu của mình thường xuyên

Tôi hy vọng bài viết này cung cấp cho bạn những hiểu biết hữu ích về cách bạn có thể nhập dữ liệu từ SQL Server vào Google Trang tính. Các chức năng trên cũng có thể được sử dụng theo những cách khác nhau tùy theo nhu cầu của bạn. Nếu bạn có bất kỳ câu hỏi hoặc đề xuất nào, xin vui lòng cho tôi biết trong nhận xét. D