Liên kết Google sheet với Google Calendar

Nhớ hồi còn đi học, chả phải để tâm, lo lắng đến điều gì, chỉ có đến dịp Tết là mình ngồi đếm lịch âm để biết số ngày nghỉ còn lại. Mỗi năm mỗi tuổi, cái tuổi nó đuổi xuân đi, giờ đây khi đã lập gia đình, có nhiều việc phải lo lắng suy nghĩ, mình dần dần để tâm đến lịch âm, đến ngày xấu, ngày đẹp nhiều hơn vì các cụ nhà ta từ xưa đã có câu "có thờ có thiêng, có kiêng có lành". Ngẫm ra thì không phải là không có cái lý của nó.

Thế là mình đi tìm một ứng dụng lịch vạn niên cài vào điện thoại. Mình có thể xem ngày xấu, ngày đẹp qua ứng dụng, tuy nhiên các ứng dụng mình thử qua đều không có tính năng nhắc nhở sắp đến những ngày lễ âm lịch như mồng một, rằm, lễ ông công, ông táo để thắp hương. Hơn nữa, những sự kiện ngày âm lịch này, mình muốn hiển thị chúng luôn trên lịch trình hàng ngày để tiện theo dõi mà không phải sử dụng thêm một ứng dụng nữa.

II. Giải pháp

Mình đang dùng ứng dụng Google Calendar để quản lý lịch trình hằng ngày. Google Calendar cũng có cung cấp sẵn một số bộ lịch mặc định như Ngày nghỉ lễ của Việt Nam, tuy nhiên mình lại không tìm thấy bộ lịch nào đáp ứng được nhu cầu của mình. Do vậy, mình đã quyết định tự tạo ra 4 bộ lịch "made by Enso" như sau:

  • Ngày Âm Lịch: mỗi ngày dương lịch được thêm một sự kiện [full day] có tiêu đề chính là ngày âm lịch của ngày đó. Ví dụ ngày 20/7/2017 có một sự kiện với tiêu đề 27/6/2017. Thực ra Google Calendar đã có sẵn tính năng hiển thị lịch âm. Chúng ta có thể kích hoạt bằng cách vào Calendar Settings >> General >> Alternate Calendar >> Chinese calendar [Simplified hoặc Traditional]. Tuy nhiên có thể Google mặc định chỉ người Trung Quốc mới dùng lịch này nên hiển thị ngày bằng hán tự @_@.

  • Ngày Lễ Âm Lịch: những ngày dương lịch tương ứng với các ngày lễ âm lịch trong năm như mồng một, ngày rằm, tết nguyên đán, phật đản, ông công ông táo, giỗ tổ Hùng Vương,… thì sẽ có một sự kiện [full day] với tiêu đề là tên các ngày lễ âm lịch đó.

  • Tam Nương – Ly sào: những ngày dương lịch tương ứng với các ngày Tam nương hay Ly sào [ngày xấu cần tránh] trong âm lịch thì sẽ có một sự kiện [full day] với tiêu đề Tam nương hoặc Ly sào. Nếu có hứng thú các bạn có thể tìm trên Google để hiểu rõ hơn về ngày Tam Nương hay Ly sào. Đây là blog kỹ thuật nên mình xin phép không dẫn link hay nói sâu hơn :]

  • Xem Ngày Đẹp: mỗi ngày dương lịch được thêm một sự kiện [full day] có tiêu đề là Xem ngày, và mục mô tả [description] là thông tin về ngày đó [sao xấu, sao tốt, giờ xuất hành,…].

Câu hỏi bây giờ là làm thế nào để tạo ra các sự kiện cho 4 bộ lịch này. Đây chính là lúc Google App Script [GAS] thể hiện được khả năng thần thánh của mình. Chúng ta hãy cùng bỏ thời gian tìm hiểu một chút về GAS.

III. GAS là gì?

GAS là ngôn ngữ scripting dựa trên JavaScript cho phép người dùng thao tác với các sản phẩm của gói dịch vụ G Suite như Docs, Sheets hay Forms. Một số việc chúng ta có thể làm được với GAS như:

  • Thêm menu, dialog hay sidebar vào Google Doc, Sheet và Form.

  • Viết function cho Google Spreadsheet.

  • Tạo các ứng dụng web độc lập hay ứng dụng web nhúng trong Google Sites.

  • Giao tiếp với các dịch vụ khác của Google như AdSense, Analytics, Calendar, Drive, Gmail và Maps.

  • Xây dựng các add-on mở rộng cho Google Docs, Sheets, Forms và đưa chúng lên Add-on store.

  • Chuyển một ứng dụng Android thành add-on Android có thể trao đổi dữ liệu với Google Doc hay Google Spreadsheet của người dùng trên thiết bị di động.

Những điều GAS làm được quả thật rất thú vị. Vậy bạn cần những gì để có thể sử dụng được GAS. Rất đơn giản, bạn chỉ cần một chút kiến thức lập trình cơ bản về JavaScript là có thể viết được GAS. Editor và môi trường chạy tất cả đã có Google lo :D. Google cũng cung cấp bộ tài liệu hướng dẫn khá chi tiết về GAS trên trang web của họ. Bạn có thể truy cập theo đường dẫn này.

IV. Thực thi nhiệm vụ

Sau khi đã có những kiến thức cơ bản về GAS, giờ thì chúng ta hãy quay lại với mục tiêu ban đầu tạo ra 4 bộ lịch về ngày âm của mình.

1. Tìm nguồn dữ liệu:

Theo mình, đây có lẽ là công đoạn mất công nhất. Mình phải vào Google tìm các trang web về ngày đẹp trên mạng. Để được lựa chọn, trang web phải thoả mãn hai tiêu chí sau:

  • Thứ nhất, hỗ trợ tra cứu thông tin của từng ngày qua phương thức GET.
  • Thứ hai, thông tin cung cấp phải đầy đủ, chi tiết và chính xác.

Sau một buổi sáng đỏ mắt tìm kiếm cuối cùng mình cũng đã tìm được một trang web đáp ứng được hai tiêu chí [Cũng vì lý do đây là một blog về kỹ thuật, chúng ta hãy tạm gọi là www.trang-web-ma-ai-cung-biet-la-gi-day.com].

2. Thao tác với Google Spreadsheet

Thực ra, mình không tạo Google Spreadsheet này cũng không sao vì dữ liệu lấy từ trang web www.trang-web-ma-ai-cung-biet-la-gi-day.com có thể lưu trực tiếp vào Google Calendar. Tuy nhiên, để phòng lỡ mai này trang web không còn hoạt động, mình vẫn còn nơi lưu trữ thông tin mà xem lại :].

Bước 1: Để tạo được Google Spreadsheet thì điều đầu tiên là phải có một tài khoản Google. Bạn có thể sử dụng tài khoản hiện tại của bạn hoặc tạo một tài khoản mới tại đây.

Bước 2: Bạn truy cập vào đường dẫn //docs.google.com/spreadsheets, chọn Blank và nhập tên cho Google Spreadsheet [ví dụ XemNgayDep].

Bước 3: Tạo GAS project to Google Spreadsheet vừa tạo bằng cách truy cập Tools -> Script editor...

Bước 4: Bạn hãy xoá hàm myFunction[] mặc định và thêm vào hàm createYearSheet[] như sau.

function createYearSheet[] {
  var ss = SpreadsheetApp.openById["Google-Sheet-ID"];
  var startYear = 2017;
  var endYear = 2027;
  for [var i = startYear; i 

Chủ Đề