- vừa được xem lúc

Tích hợp Google Sheet API vào dự án của bạn!

0 0 306

Người đăng: Pham Minh Phuong

Theo Viblo Asia

1. Lời mở đầu

Google Sheets là gì? Khi nói đến làm việc với các dữ liệu về bảng tính, nhiều người thường nghĩ ngay đến sử dụng Microsoft Excel mà không hay biết đã bỏ qua một trong những công cụ miễn phí hữu hiệu của Google mang tên Google Sheets.

Đây là một chương trình tạo lập và chỉnh sửa bảng tính với các tính năng cơ bản phổ biến như trên Excel nhưng được cải tiến và có nhiều ưu điểm vượt trội hơn so với excel, phù hợp với việc xử lý các dữ liệu đơn giản, kỹ năng bán hàng làm việc từ xa, hỗ trợ làm việc nhóm cũng như tương thích trên mọi thiết bị.

Nó tiện ích như thế, bài toán là một dự án website cần lưu lại thông tin của khách hàng thành 1 sheet thì làm thế nào. Chả nhẽ chúng ta lại phải nhập thông tin của từng user khi user đó khi đăng ký -> vậy thì hơi tốn công nhỉ. Để giải quyết bài toán đó thì google drive cũng cung cấp cho chúng ta Api sử dụng để tương tác với Google Sheet. Để hiểu rõ hơn về vấn đề này thì chúng ta cùng đi tìm hiểu sâu về nó nhé.

2. Cài đặt

2.1. Cài dặt google api

Google Sheet API giúp cho các lập trình viên có thể tạo ra các ứng dụng tương tác với Google Sheet một cách dễ dàng, có thể khai thác các tính năng rất hưu ích của nó. Về cơ bản tương tác với Google Sheet Api theo các đơn vị bảng tính (spreadsheet), trang tính (sheet), vùng giá trị (range) và ô trang tính (cell).

B1: Tạo new project ở API & Services:

Các bạn truy cập link API & Services sẽ hiển thị link đăng ký tạo project mới, các bạn điền đầy đủ thông tin yêu cầu:

Tạo thành công thì sẽ quay về màn hình quản lý, các bạn chọn button cố dấu + ENABLE APIS AND SERVICES:

B2: Kích hoạt API:

Chọn Google Drive APi, Google Sheets API và lần lượt kích hoạt( Enable )

B3: Tạo Service account:

Sau khi kích hoạt xong tại màn Google Drive Api chọn Credentials -> Service account:

Nhập thông tin của Service rồi chọn DONE

Tại đây google drive sẽ tạo ra một account tự động để ủy quyền thao tác với google sheet. Chúng ta chọn Manage service accounts

B4: Export file config.json:

Chúng ta chọn Manage keys để vào phần generate private key.

Chọn ADD KEY -> Create new key -> JSON

Đến bước này thì sau khi kích đúp button CREATE thì sẽ dowload về máy tính chúng ta 1 file config dạng json với các thông số như :

{ "type": "service_account", "project_id": "project_id", "private_key_id": "private_key_id", "private_key": "private_key", "client_email": "client_email", "client_id": "client_id", "auth_uri": "auth_uri", "token_uri": "token_uri", "auth_provider_x509_cert_url": "auth_provider_x509_cert_url", "client_x509_cert_url": "client_x509_cert_url"
}

Các bạn nhớ lưu file này nhé tí mình cần config vào trong dự án của mình.

Tiếp theo các bạn tạo 1 file sheet để insert dữ liệu, các bạn nhớ là chia sẻ file này cho tài khoản service account mà chúng ta vừa tạo ở trên nhé.

Mỗi file google sheet thì có url dạng:

https://docs.google.com/spreadsheets/d/sheet_id/edit#gid=0

Ok đến đây là quá trình config xong google sheet api, các bạn chỉ cần lưu giúp mình file private key json chúng ta vừa dowload ở trên vàsheet_id của sheet bạn cần thao tác. Chúng ta cùng đi tiếp vào phần tích hợp google sheet api vào dự án nhé.

2.2 Tích hợp vào dự án của bạn

Mình lựa chọn ngôn ngữ Ruby on Rails để tích hợp google drive. Đầu tiên các bạn tạo cho mình 1 project bằng lệnh :

rails new demo-google-drive-api -d mysql 

Các bạn thêm gem 'google_drive' vào Gemfile và chạy lệnh bundle install để cài đặt.

File json ở màn tạo private key ở trên chúng ta cho vào forder config dự án với url config/google_drive_config.json.

Ở đây mình sẽ tạo bảng User để lưu thông tin người dùng khi đăng ký mới, các bạn chạy lệnh dưới :

rails g model User full_name:string email:string address:text date_of_birth:date
rails db:migrate

Insert data:

Chúng ta tạo 1 service để thao tác với google sheet nhé:

class AddUserInfoToGoogleSheetService def perform id user = User.find id user_count = User.count sheet_idx = 0 session = GoogleDrive::Session.from_config("config/google_drive_config.json") worksheet = session.spreadsheet_by_key(ENV["SPREADSHEET_KEY"]).worksheets[sheet_idx] new_records = [] new_records << handling_data(user, user_count) worksheet.insert_rows(user_count + 1, new_records) worksheet.save worksheet.reload end private def prefix_date date return if date.blank? date.strftime("%d/%m/%Y") end def handling_data user, stt [ "#{stt}", user.full_name, user.email, user.address, prefix_date(user.date_of_birth), prefix_date(user.created_at) ] end
end 

Trong đó :

  • sheet_idx: Trong 1 file sheet có nhiều file sheet nhỏ đây là vị trí file mà bạn muốn thao tác với sheet.
  • ENV["SPREADSHEET_KEY"]: Là id của sheet.

Ở model User chúng ta thêm call back after_create sau khi tạo User mới thì tự động push thông tin lên google sheet.

class User < ApplicationRecord after_create :handle_add_user_info_to_google_sheet private def handle_add_user_info_to_google_sheet AddUserInfoToGoogleSheetService.new.perform id end
end 

Bây giờ chúng ta thử tạo một bản ghi User mới, các bạn gõ câu lệnh rails c chạy lệnh tạo bên dưới :

User.create full_name: "Nguyen Van A", email: "_@.com", address: "Bac Tu Liem - Ha Noi", date_of_birth: Date.parse("10/10/1996")

Và đây là kết quả nhận được khi chúng ta insert một User thì thông tin của User đó sẽ push lên google sheet giúp cho chúng ta quản lý dữ liệu một cách đơn giản, hiệu quả nhất.

Update data :

Update fulle name dòng 2 cột B.

def perform sheet_idx = 0 session = GoogleDrive::Session.from_config("config/google_drive_config.json") worksheet = session.spreadsheet_by_key(ENV["SPREADSHEET_KEY"]).worksheets[sheet_idx] worksheet["B2"] = "Le Van A" worksheet.save worksheet.reload
end

Delete data :

Xóa dòng 2-3

def perform sheet_idx = 0 session = GoogleDrive::Session.from_config("config/google_drive_config.json") worksheet = session.spreadsheet_by_key(ENV["SPREADSHEET_KEY"]).worksheets[sheet_idx] worksheet.delete_rows(3, 2) worksheet.save worksheet.reload
end

Đến đây mình đã hướng dẫn cơ bản các bước config google api, tích hợp vào dự án Ruby on Rails.

3. Kết luận

Bài chia sẻ của mình đến đây xin được kết thúc hẹn các bạn vào lần chia sẻ kế tiếp nhé !

Tài liệu :

Bình luận

Bài viết tương tự

- vừa được xem lúc

Tôi cá là bạn không biết những điều này - Ruby on rails ( Phần 2)

Các bạn có thể theo dõi phần 1 ở đây :. https://viblo.asia/p/toi-ca-la-ban-khong-biet-nhung-dieu-nay-ruby-on-rails-phan-1-WAyK8DDeKxX. 5.

0 0 222

- vừa được xem lúc

Rails Memoization

Memoization is a process that can be used to speed up rails methods. It caches the results of methods that do time-consuming work, work that only needs to be done once. Here is an example. Example.

0 0 48

- vừa được xem lúc

Tại sao Rails lại dùng cả Webpack lẫn Sprocket?

Khi Rails 6 được ra mắt, có thể bạn đã từng tự hỏi. WTF, sao Webpack đã được add vào rồi, mà Sprocket vẫn tồn tại thế kia . Chẳng phải Webpack và Sprocket được dùng để giải quyết chung một công việc hay sao. Hoặc cả đây:.

0 0 59

- vừa được xem lúc

Bạn nên sử dụng Elasticsearch trong ứng dụng Ruby On Rails như thế nào?

Elasticsearch là một công cụ phân tích và mã nguồn mở mạnh mẽ và linh hoạt, phân tán, theo thời gian thực. Đó là tiêu chuẩn vàng trong công nghệ tìm kiếm.

0 0 80

- vừa được xem lúc

Form object pattern trong rails

1.Mở đầu.

0 0 111

- vừa được xem lúc

Sử dụng Twilio để gửi SMS trong ứng dụng Ruby on Rails

Ngoài cách xác nhận tài khoản hay gửi thông báo bằng email thì hôm nay mình sẽ hướng dẫn các bạn 1 cách nữa là thông qua SMS/Voice. Công cụ sử dụng sẽ là gem Twilio. Installation. Để cài đặt bằng Bundler, hãy lấy phiên bản mới nhất:.

0 0 67