Hướng dẫn ruby google sheets - trang tính ruby ​​​​google

1. Google developer console

1.1 Tạo new project

Đăng nhập vào https://console.developers.google.com/?angularJsUrl= Trên thanh header chọn [Select a project] để tạo mới project

Hướng dẫn ruby google sheets - trang tính ruby ​​​​google

Ví dụ như mình đã tạo google-sheet-api

Hướng dẫn ruby google sheets - trang tính ruby ​​​​google

1.2 Enable APIs and Service

Chọn project: google-sheet-api Click vào Enable APIs and Service Để xuất hiện màn hinh bên dưới. Tiếp đó tìm APIs và Service của Google driver API và Google sheet API để Enable nó lên Enable APIs and Service

Hướng dẫn ruby google sheets - trang tính ruby ​​​​google
Để xuất hiện màn hinh bên dưới.
Hướng dẫn ruby google sheets - trang tính ruby ​​​​google
Tiếp đó tìm APIs và Service của Google driver APIGoogle sheet API để Enable nó lên
Hướng dẫn ruby google sheets - trang tính ruby ​​​​google
Hướng dẫn ruby google sheets - trang tính ruby ​​​​google

Sau đó click vào Google APIs để về trang chủ và chọn Credentials Click vào Create credentials và chọn option Service account keyhttps://images.viblo.asia/316f0e00-8343-4889-94ac-d6e53965756c.pngCredentials

Hướng dẫn ruby google sheets - trang tính ruby ​​​​google
Click vào Create credentials và chọn option Service account key
Hướng dẫn ruby google sheets - trang tính ruby ​​​​google
https://images.viblo.asia/316f0e00-8343-4889-94ac-d6e53965756c.png

Sau đó tạo service name của bạn và chọn role rồi create vào Create để download key về máy

Hướng dẫn ruby google sheets - trang tính ruby ​​​​google
rồi create vào Create để download key về máy

2. Tạo Project google-sheet-api

Tạo thư mục project: mkdir google-sheet-api

Di chuyển key vừa download lúc nãy vào thư mục cp Downloads/google-sheet-api-8af1289c9ba0.json google-sheet-api/client_secret.json

Di chuyển tới thư mục project cd google-sheet-api

Tạo Gemfile bundle init

Tạo file spreadsheet touch spreadsheet.rb

Hướng dẫn ruby google sheets - trang tính ruby ​​​​google

2.1. Gemfile

Thêm

require "bundler"
Bundler.require

session = GoogleDrive::Session.from_service_account_key("client_secret.json")

spreadsheet = session.spreadsheet_by_title("Học Sinh")
worksheet = spreadsheet.worksheets.first # lấy ra sheet đầu tiên trong file googlesheet

worksheet.rows.first(3).each {|row| puts row.first(2).join(" | ")}
0 và chạy
require "bundler"
Bundler.require

session = GoogleDrive::Session.from_service_account_key("client_secret.json")

spreadsheet = session.spreadsheet_by_title("Học Sinh")
worksheet = spreadsheet.worksheets.first # lấy ra sheet đầu tiên trong file googlesheet

worksheet.rows.first(3).each {|row| puts row.first(2).join(" | ")}
1 để cài đặt

# frozen_string_literal: true

source "https://rubygems.org"

git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }

# gem "rails"
gem "google_driver"

2.2 Chuẩn bị file google sheet và share quyền

Tiến hành share quyền cho email là value của key client_email trong file json client_secret.json mình tải về ban đầu đối với googlesheet mình muốn thao tác. client_email trong file json client_secret.json mình tải về ban đầu đối với googlesheet mình muốn thao tác.

Hướng dẫn ruby google sheets - trang tính ruby ​​​​google

3. Thao tác với google sheet

3.1 Lấy dữ liệu từ google sheet

Lấy 3 dòng đầu và 2 cột

require "bundler"
Bundler.require

session = GoogleDrive::Session.from_service_account_key("client_secret.json")

spreadsheet = session.spreadsheet_by_title("Học Sinh")
worksheet = spreadsheet.worksheets.first # lấy ra sheet đầu tiên trong file googlesheet

worksheet.rows.first(3).each {|row| puts row.first(2).join(" | ")}

Chạy

require "bundler"
Bundler.require

session = GoogleDrive::Session.from_service_account_key("client_secret.json")

spreadsheet = session.spreadsheet_by_title("Học Sinh")
worksheet = spreadsheet.worksheets.first # lấy ra sheet đầu tiên trong file googlesheet

worksheet.rows.first(3).each {|row| puts row.first(2).join(" | ")}
2 ta có Kết quả

Hướng dẫn ruby google sheets - trang tính ruby ​​​​google

3.2 Insert dữ liệu vào file googlesheet

require "bundler"
Bundler.require

session = GoogleDrive::Session.from_service_account_key("client_secret.json")

spreadsheet = session.spreadsheet_by_title("Học Sinh")
worksheet = spreadsheet.worksheets.first # lấy ra sheet đầu tiên trong file googlesheet

puts "importing"

new_records = [
  [4, "Trần E", 19],
  [5, "Lý F", 20]
]
worksheet.insert_rows(worksheet.num_rows + 1, new_records)
worksheet.save

puts "imported"

Chạy

require "bundler"
Bundler.require

session = GoogleDrive::Session.from_service_account_key("client_secret.json")

spreadsheet = session.spreadsheet_by_title("Học Sinh")
worksheet = spreadsheet.worksheets.first # lấy ra sheet đầu tiên trong file googlesheet

worksheet.rows.first(3).each {|row| puts row.first(2).join(" | ")}
2 ta có Kết quả https://images.viblo.asia/0a94c2ef-8ffc-4b1e-bc92-1f163e720bf4.png
Hướng dẫn ruby google sheets - trang tính ruby ​​​​google
https://images.viblo.asia/0a94c2ef-8ffc-4b1e-bc92-1f163e720bf4.png

3.3 Update dữ liệu file googlesheet

require "bundler"
Bundler.require

session = GoogleDrive::Session.from_service_account_key("client_secret.json")

spreadsheet = session.spreadsheet_by_title("Học Sinh")
worksheet = spreadsheet.worksheets.first # lấy ra sheet đầu tiên trong file googlesheet

puts "updating"

worksheet["B3"] = "Name Updated"
worksheet.save

puts "updated"

Chạy

require "bundler"
Bundler.require

session = GoogleDrive::Session.from_service_account_key("client_secret.json")

spreadsheet = session.spreadsheet_by_title("Học Sinh")
worksheet = spreadsheet.worksheets.first # lấy ra sheet đầu tiên trong file googlesheet

worksheet.rows.first(3).each {|row| puts row.first(2).join(" | ")}
2 ta có Kết quả
Hướng dẫn ruby google sheets - trang tính ruby ​​​​google

3.4 Remove dữ liệu file googlesheet

require "bundler"
Bundler.require

session = GoogleDrive::Session.from_service_account_key("client_secret.json")

spreadsheet = session.spreadsheet_by_title("Học Sinh")
worksheet = spreadsheet.worksheets.first # lấy ra sheet đầu tiên trong file googlesheet

puts "deleting"

worksheet.delete_rows(4, 2) # remove 2 line tính từ line thứ 4
worksheet.save

puts "deleted"

Chạy

require "bundler"
Bundler.require

session = GoogleDrive::Session.from_service_account_key("client_secret.json")

spreadsheet = session.spreadsheet_by_title("Học Sinh")
worksheet = spreadsheet.worksheets.first # lấy ra sheet đầu tiên trong file googlesheet

worksheet.rows.first(3).each {|row| puts row.first(2).join(" | ")}
2 ta có Kết quả
Hướng dẫn ruby google sheets - trang tính ruby ​​​​google

3.4 Remove dữ liệu file googlesheet

https://www.youtube.com/watch?v=VqoSUSy011I