Kiến thức cơ bản về Apps Script với Google Trang tính #1: Macro và hàm tuỳ chỉnh

1. Chào mừng bạn đến với Apps Script

Apps Script là gì?

Apps Script là một nền tảng phát triển ứng dụng nhanh chóng, giúp bạn có thể tự động hoá, tuỳ chỉnh và mở rộng trải nghiệm Google Workspace. Với Apps Script, bạn có thể tiết kiệm thời gian và công sức bằng cách đơn giản hoá những công việc phức tạp hoặc tốn nhiều thời gian trong Google Workspace.

Các tính năng của Apps Script bao gồm:

  • Các dịch vụ tích hợp của Apps Script cho phép bạn đọc, cập nhật và thao tác với dữ liệu ứng dụng Google Workspace bằng tập lệnh.
  • Bạn có thể tạo tập lệnh bằng trình chỉnh sửa mã trong trình duyệt của Apps Script mà không cần cài đặt hoặc chạy phần mềm phát triển mã.
  • Bạn có thể thiết kế giao diện người dùng cho các trình chỉnh sửa của Google Workspace để cho phép bạn kích hoạt tập lệnh ngay từ các trình chỉnh sửa đó bằng cách sử dụng các mục trong trình đơn, hộp thoại và thanh bên.

Danh sách phát Lớp học lập trình về kiến thức cơ bản về Apps Script với Google Trang tính này hướng dẫn những kiến thức cơ bản về Apps Script và cách sử dụng Apps Script để cải thiện trải nghiệm của bạn trên Google Trang tính. Lớp học lập trình này tập trung vào việc dạy kiến thức cơ bản về Apps Script.

Dịch vụ Bảng tính

Bạn có thể sử dụng Apps Script để mở rộng Google Trang tính nhằm tiết kiệm thời gian và công sức. Apps Script cung cấp Dịch vụ bảng tính cho phép các tập lệnh tương tác với tệp Google Trang tính và dữ liệu chứa trong đó. Bạn có thể sử dụng dịch vụ này để tự động hoá các tác vụ bảng tính phổ biến sau đây:

  • Tạo hoặc sửa đổi bảng tính.
  • Đọc và cập nhật dữ liệu, công thức và định dạng của ô.
  • Tạo nút và trình đơn tuỳ chỉnh.
  • Nhập và xuất dữ liệu từ các ứng dụng khác của Google hoặc các nguồn bên thứ ba.
  • Chia sẻ và kiểm soát quyền truy cập vào bảng tính.

Kiến thức bạn sẽ học được

Danh sách phát này bao gồm tất cả các chủ đề bạn cần để bắt đầu sử dụng Apps Script với Google Trang tính:

  1. Macro và hàm tuỳ chỉnh
  2. Bảng tính, Trang tính và Dải ô
  3. Làm việc với dữ liệu
  4. Định dạng dữ liệu
  5. Lập biểu đồ và trình bày dữ liệu trong Trang trình bày

Các lớp học lập trình trong danh sách phát này được thiết kế để đọc theo thứ tự, vì vậy, hãy bắt đầu với lớp học lập trình này và hoàn thành theo trình tự để có trải nghiệm học tập tốt nhất.

Chuyển sang phần tiếp theo để tìm hiểu thêm về nội dung của lớp học lập trình này.

2. Giới thiệu

Chào mừng bạn đến với lớp học lập trình đầu tiên trong danh sách phát này. Trong lớp học lập trình này, bạn sẽ tìm hiểu kiến thức cơ bản về cách sử dụng Apps Script với Google Trang tính. Cụ thể, lớp học lập trình này tập trung vào 2 khái niệm chính: macrohàm tuỳ chỉnh.

Macro là một chuỗi các thao tác được ghi lại trong Google Trang tính. Sau khi ghi, bạn có thể kích hoạt một macro để lặp lại các thao tác đó sau này bằng một mục trong trình đơn hoặc phím tắt. Bạn có thể tạo và cập nhật macro của riêng mình trong cả Google Trang tính và trình chỉnh sửa mã Apps Script.

Trong trình soạn thảo mã Apps Script, bạn cũng có thể tạo hàm tuỳ chỉnh. Tương tự như các hàm tích hợp mà Trang tính cung cấp (chẳng hạn như SUM hoặc AVERAGE), bạn có thể dùng Apps Script để viết các hàm tuỳ chỉnh của riêng mình cho các thao tác đơn giản và chuyên biệt (chẳng hạn như chuyển đổi hoặc nối chuỗi). Sau khi tạo, bạn có thể gọi các hàm này trong Trang tính như cách gọi một hàm tích hợp sẵn. Bạn cũng có thể dùng hàm tuỳ chỉnh trong công thức ô mà bạn viết, kết hợp hàm tuỳ chỉnh với các hàm khác khi cần.

Hãy đọc phần bên dưới để tìm hiểu những khái niệm và yêu cầu liên quan đến lớp học lập trình này.

Kiến thức bạn sẽ học được

  • Cách tạo tập lệnh cho Google Trang tính.
  • Cách sử dụng trình chỉnh sửa Apps Script.
  • Cách tạo và cập nhật macro.
  • Cách tạo hàm tuỳ chỉnh đầu tiên trong Trang tính.

Bạn cần có

Bạn đã hoàn tất phần giới thiệu. Hãy chuyển đến phần tiếp theo để bắt đầu làm việc với macro.

3. Tạo macro trong Trang tính

Thông thường, khi làm việc trong bảng tính, bạn có thể lặp lại các thao tác (sao chép giá trị ô, định dạng, tạo công thức, v.v.). Điều này có thể gây nhàm chán và dẫn đến sai sót. Để tự động hoá các thao tác lặp lại, Google Trang tính cung cấp macro. Macro cho phép bạn "ghi lại" một loạt thao tác trong một trang tính. Khi có một macro đã ghi, bạn có thể lặp lại các thao tác tương tự ở nơi khác trong bảng tính chỉ bằng một lần nhấn phím nóng.

Trong phần này, bạn sẽ tìm hiểu cách tạo một macro trong Trang tính. Trong phần tiếp theo, bạn sẽ thấy cách tạo macro bằng Apps Script.

Trước khi bắt đầu

Trước khi tiếp tục, bạn cần có một bảng tính chứa một số dữ liệu. Chúng tôi đã cung cấp một trang tính cho bạn: nhấp vào đường liên kết này để sao chép trang dữ liệu rồi nhấp vào Tạo bản sao.

5b8aded1bb349ecf.png

Một bản sao của bảng tính mẫu để bạn sử dụng sẽ được đặt trong thư mục Google Drive của bạn và có tên là "Bản sao của 10 bộ phim có doanh thu cao nhất (2018)".

Tạo macro

Giờ đây, khi đã có một bảng tính để làm việc, bạn có thể ghi lại một macro trong Google Trang tính. Trong ví dụ này, bạn sẽ tạo một macro định dạng hàng tiêu đề cho dữ liệu của mình. Chỉ cần thực hiện theo các bước sau:

  1. Nhấp vào ô A1 để đặt con trỏ vào hàng. Đây là hàng tiêu đề.
  2. Trong trình đơn, hãy chọn Tiện ích > Macro > Ghi macro.

Sau khi bạn bắt đầu ghi, Google Trang tính sẽ ghi nhớ mọi thao tác bạn thực hiện trong bảng tính: đánh dấu ô, thêm dữ liệu, chuyển sang các trang tính khác, định dạng, v.v. Những thao tác này sẽ trở thành "kịch bản" được lặp lại sau khi bạn lưu và kích hoạt macro sau này.

  1. Trong hộp thoại Macro, hãy chọn Tham chiếu tương đối.

c59f2f12317352d2.gif

  1. Chọn hàng 1.

1d782ee30c66a02b.gif

  1. Đổi màu Fill Color (Tô màu) của hàng trên cùng từ màu trắng sang dark magenta 3 (đỏ tươi đậm 3).

f7e7abaf76e338c7.png

  1. Thay đổi Màu văn bản của hàng trên cùng từ màu đen thành trắng.

d5e630acbe83148.png

  1. Để in đậm văn bản, hãy nhấn tổ hợp phím Ctrl+B (hoặc Cmd+B trên macOS).
  2. Để cố định hàng trên cùng, hãy chọn Xem > Cố định > 1 hàng.

97cb244ffebe8953.png

  1. Nhấp vào Lưu trong hộp thoại macro. Một hộp thoại mới sẽ yêu cầu bạn đặt tên cho macro. Nhập tên "Tiêu đề" rồi nhấp vào Lưu.

b4610a54340da518.gif

Bằng cách sử dụng giao diện người dùng của Trang tính, bạn đã tạo một macro chuyên dùng để định dạng tiêu đề.

4ed7fbed18ea3681.png

Kích hoạt macro

Bạn có thể áp dụng macro mới trong Trang tính bằng cách làm theo hướng dẫn sau:

  1. Để tạo một trang tính, hãy nhấp vào biểu tượng Thêm trang tính 9c9b0c19bf317e7f.png.

927c012b4e11475b.png

  1. Trong trang tính mới, hãy thêm một số văn bản vào A1:C2. Bạn có thể tham khảo các ví dụ về thông tin đầu vào bên dưới:

c3aadaef52a609bf.png

  1. Đánh dấu hàng đầu tiên.

cfe36fcf833d0bd7.gif

  1. Để áp dụng macro cho vùng đã chọn, hãy nhấp vào Tiện ích> Macro> Tiêu đề.
  2. Uỷ quyền cho macro bằng cách làm theo hướng dẫn trên màn hình.
  1. Lặp lại Bước 4 để chạy lại macro (việc uỷ quyền sẽ dừng lần thực thi đầu tiên).

Chúc mừng bạn đã tìm hiểu được cách áp dụng macro trong Trang tính. Bảng tính của bạn sẽ có dạng như sau:

7c7130a4a697bd92.png

Macro giúp bạn tạo bảng tính một cách hiệu quả và trong phần tiếp theo của lớp học lập trình này, bạn sẽ tìm hiểu cách làm cho macro của mình trở nên mạnh mẽ hơn nữa. Bí quyết là: khi ghi macro, bạn thực sự đang viết mã Apps Script. Trong hậu trường, Sheets sẽ tạo mã tương ứng với các thao tác của macro. Trong phần tiếp theo, bạn sẽ tìm hiểu cách sửa đổi mã trực tiếp bằng trình chỉnh sửa trong trình duyệt của Apps Script.

4. Macro trong trình chỉnh sửa tập lệnh

Khi bạn tạo một macro, Google Trang tính sẽ lưu các thao tác của bạn dưới dạng một hàm Apps Script. Khi bạn kích hoạt macro, Google Trang tính sẽ gọi hàm Apps Script để áp dụng các thao tác đó theo cùng một thứ tự.

Trình chỉnh sửa tập lệnh

Sau khi tạo macro, bạn có thể xem mã của macro đó. Để xem tập lệnh macro, hãy nhấp vào Tiện ích > Apps Script để mở trình chỉnh sửa mã trên trình duyệt cho Apps Script.

Trình soạn thảo tập lệnh cho phép bạn viết mã trong Apps Script và chạy các tập lệnh đó trên máy chủ của Google.

Phân tích macros.gs

Xem lại tập lệnh hiện tại. Trang tính đã tạo tệp tập lệnh macros.gs khi bạn ghi macro Header, đồng thời điền vào tệp đó một hàm Apps Script tương ứng có tên là Header. Khi bạn kích hoạt macro Header, Trang tính sẽ chạy hàm này.

Hãy xem hình ảnh bên dưới để làm quen với cấu trúc của hàm macro trong Apps Script. Nếu bạn ghi lại các bước theo một thứ tự khác hoặc nhấp vào bảng tính trong khi ghi, thì mã của bạn có thể hơi khác so với mã này.

5d653a69a0897adf.png

Dòng đầu tiên là một chú thích ảnh hưởng đến việc uỷ quyền:

/** @OnlyCurrentDoc */

Hầu hết các tập lệnh đều yêu cầu người dùng cấp một số quyền trước khi có thể chạy. Những quyền này kiểm soát những việc mà người dùng cho phép tập lệnh thực hiện. Khi chú thích @OnlyCurrentDoc xuất hiện trong một dự án tập lệnh, Apps Script chỉ yêu cầu quyền truy cập và cập nhật bảng tính hiện tại. Nếu không có chú thích này, Apps Script sẽ yêu cầu quyền truy cập và cập nhật tất cả bảng tính của người dùng. Bạn nên thêm chú thích này khi chỉ làm việc với một tệp duy nhất. Trình ghi macro sẽ tự động thêm nhận xét này cho bạn.

Để hiểu cách Apps Script biểu thị các chỉ dẫn của macro, bạn có thể xem hàm:

function Header(){
  var spreadsheet = SpreadsheetApp.getActive();
  var sheet = spreadsheet.getActiveSheet();
  sheet.getRange(
    spreadsheet.getCurrentCell().getRow(),
    1, 1, sheet.getMaxColumns()).activate();
  spreadsheet.getActiveRangeList().setBackground('#4c1130')
  .setFontColor('#ffffff')
  .setFontWeight('bold');
  spreadsheet.getActiveSheet().setFrozenRows(1);
};

Mã này chạy khi bạn kích hoạt macro Header. Sau function, nhãn Header() xác định tên và các tham số của hàm. Nhận thấy rằng Header() không yêu cầu tham số nào vì các hàm macro trong Apps Script không cần dữ liệu đầu vào. Dấu ngoặc nhọn luôn bao quanh phần nội dung của một hàm trong Apps Script.

Các lớp học lập trình sau này trong danh sách phát này sẽ giải thích các lớp và khái niệm liên quan đến việc tạo macro. Hiện tại, bạn có thể xem các nội dung mô tả mã sau đây để nắm được thông tin tổng quan về các thành phần của mã và vai trò của chúng trong việc tạo macro. Hãy xem xét dòng đầu tiên:

var spreadsheet = SpreadsheetApp.getActive();

Ở đây, getActive() trả về một đối tượng đại diện cho tệp bảng tính đang hoạt động hiện tại trong Trang tính và đặt đối tượng đó thành biến mới spreadsheet.

var sheet = spreadsheet.getActiveSheet();
sheet.getRange(
    spreadsheet.getCurrentCell().getRow(),
    1, 1, sheet.getMaxColumns()).activate();

Các dòng này tương ứng với hành động nhấp vào hàng đầu tiên để làm nổi bật hàng đó. Đây được gọi là kích hoạt. Dòng đầu tiên lưu trữ trang tính hiện tại trong biến sheet, trong khi dòng thứ hai lấy toàn bộ hàng đầu tiên bằng phương thức getRange() rồi gọi activate() để kích hoạt hàng đó. Hàng đầu tiên được chỉ định bằng cách sử dụng số hàng và cột cụ thể. Lệnh gọi spreadsheet.getCurrentCell().getRow() trả về số hàng hiện tại, trong khi sheet.getMaxColumns() trả về số cột tối đa trong trang tính.

spreadsheet.getActiveRangeList().setBackground('#4c1130')
.setFontColor('#ffffff')
.setFontWeight('bold');

Đoạn mã này sẽ phức tạp hơn. Để gọi các phương thức một cách hiệu quả bằng spreadsheet, mã sẽ xếp 3 phương thức lên getActiveRangeList() để ngăn mã gọi phương thức spreadsheet này nhiều lần một cách dư thừa. Khi viết mã nhiều hơn bằng Apps Script, bạn sẽ quen thuộc hơn với quy ước gọi nhiều phương thức trên một lớp (còn gọi là chuỗi phương thức). Hiện tại, bạn có thể đọc phần sau để biết nội dung giải thích ngắn gọn về từng phương thức trong khối mã:

  • getActiveRangeList() trả về RangeList đang hoạt động hiện tại trong spreadsheet. Trong trường hợp này, đó chỉ đơn giản là hàng đầu tiên mà dòng trước đó đã kích hoạt.
  • Cả phương thức setBackground(color)setFontColor(color) đều thay đổi các thuộc tính màu của các ô trong dải ô đang hoạt động.
  • setFontWeight(fontWeight) điều chỉnh độ đậm của phông chữ cho các ô trong phạm vi hoạt động.

Cuối cùng, dòng cuối cùng sẽ cố định hàng đầu tiên của macro:

spreadsheet.getActiveSheet().setFrozenRows(1);

Đó là tập lệnh bạn đã tạo khi ghi lại macro. Đừng lo lắng về bất kỳ thuật ngữ hoặc phương pháp nào mà bạn chưa biết đến ở trên. Phần mô tả này nhằm giúp bạn suy nghĩ về một số ý tưởng mà Apps Script tập trung vào trong một hàm macro điển hình, cũng như các chủ đề mà các lớp học lập trình sau này sẽ đi sâu vào.

Phần tiếp theo tập trung vào việc thao tác mã của hàm Header() để cho thấy cách bạn có thể dùng trình chỉnh tập tập lệnh để cá nhân hoá thêm các macro.

Tuỳ chỉnh macro bằng Apps Script

Trình chỉnh sửa Apps Script sẽ cho thấy macro mà bạn đã tạo trước đó trong Google Trang tính. Bằng cách điều chỉnh nội dung của nội dung hàm, bạn có thể tuỳ chỉnh thêm các hướng dẫn của macro để thực hiện các hành động khác hoặc bổ sung. Các bài tập sau đây minh hoạ nhiều cách để thao tác với macro bằng trình chỉnh sửa tập lệnh.

Thay đổi các ô bị ảnh hưởng

Giả sử bạn muốn sửa đổi macro để macro chỉ ảnh hưởng đến 10 cột đầu tiên của hàng đầu tiên thay vì toàn bộ hàng. Bạn có thể xoá macro đó rồi ghi lại. Tuy nhiên, bằng cách sử dụng trình chỉnh sửa Apps Script, bạn có thể thực hiện những thay đổi đó trực tiếp. Sau đây là một cách thực hiện:

  1. Trong trình chỉnh sửa tập lệnh, hãy thay thế sheet.getMaxColumns() bằng 10. Thao tác chỉnh sửa này sẽ thay đổi dải ô mà macro ảnh hưởng trong bảng tính.
/** @OnlyCurrentDoc */

function Header(){
  var spreadsheet = SpreadsheetApp.getActive();
  var sheet = spreadsheet.getActiveSheet();
  sheet.getRange(
    spreadsheet.getCurrentCell().getRow(),
    1, 1, 10).activate();
    /* sheet.getMaxColumns() replaced with 10.*/
  spreadsheet.getActiveRangeList().setBackground('#4c1130')
  .setFontColor('#ffffff')
  .setFontWeight('bold');
  spreadsheet.getActiveSheet().setFrozenRows(1);
}
  1. Để lưu kịch bản, hãy nhấp vào biểu tượng Lưu lưu.
  2. Để đổi tên dự án, hãy nhập "Macros and Custom Functions" (Macro và hàm tuỳ chỉnh) làm tên dự án mới rồi nhấp vào Rename (Đổi tên).
  3. Để tạo một trang tính, trong Trang tính, hãy nhấp vào biểu tượng Thêm trang tính 9c9b0c19bf317e7f.png.

927c012b4e11475b.png

  1. Trong trình chỉnh sửa tập lệnh, trong danh sách hàm, hãy chọn Header rồi nhấp vào Chạy.

Trong trang tính mới, bạn sẽ thấy kết quả sau:

8a58ba02535b2b9c.png

Bằng cách sửa đổi dải ô đang hoạt động hoặc dải ô mục tiêu, macro của bạn hiện chỉ ảnh hưởng đến một phần của hàng đầu tiên. Nhiều phương thức Apps Script lấy một dải ô hoặc ký hiệu A1 làm tham số để chỉ định những ô cần thao tác.

Tiếp theo, hãy tìm hiểu về cách tuỳ chỉnh màu sắc của macro.

Thay đổi màu sắc của macro

Để giúp bạn thiết kế bảng phối màu cho các macro hoặc những phần tử khác trong Trang tính, Apps Script có thể sửa đổi màu nền hoặc màu văn bản của một dải ô. Hãy làm theo hướng dẫn sau để tìm hiểu cách tuỳ chỉnh màu sắc của macro.

Các hướng dẫn này tập trung vào việc thay đổi màu nền của macro:

  1. Trong Trang tính, hãy chuyển về trang tính chứa dữ liệu gốc (Trang tính 1).
  2. Nhấp vào hàng đầu tiên để đánh dấu hàng đó.
  3. Trong trình chỉnh sửa tập lệnh, hãy thay thế màu nền #4c1130 bằng #afeeee. Những giá trị này thể hiện các màu sắc khác nhau bằng cách sử dụng ký hiệu bộ ba thập lục phân.
/** @OnlyCurrentDoc */

function Header(){
  var spreadsheet = SpreadsheetApp.getActive();
  var sheet = spreadsheet.getActiveSheet();
  sheet.getRange(
    spreadsheet.getCurrentCell().getRow(),
    1, 1, 10).activate();
  spreadsheet.getActiveRangeList().setBackground('#afeeee')
    /* #4c1130 replaced with #afeeee.*/
  .setFontColor('#ffffff')
  .setFontWeight('bold');
  spreadsheet.getActiveSheet().setFrozenRows(1);
}
  1. Để lưu kịch bản, hãy nhấp vào biểu tượng Lưu lưu.
  2. Trong danh sách hàm, hãy chọn Header rồi nhấp vào Run (Chạy).

Trong Trang tính, màu nền của 10 cột đầu tiên trong hàng đầu tiên sẽ thay đổi thành màu xanh ngọc lục bảo tuỳ chỉnh:

bbd26f7c8e35039.png

Bằng cách chuyển đổi ký hiệu màu thập lục phân trong các tham số của setBackground(color) từ #4c1130 (magenta đậm 3) thành #afeeee (ngọc lam nhạt, một lựa chọn không có trong trình đơn màu mặc định của Trang tính), bạn sẽ thay đổi thuộc tính màu của màu nền trong macro.

Giờ đây, bạn đã sửa đổi tập hợp màu nền bằng macro. Nếu bạn cũng muốn thay đổi màu văn bản, hãy thay đổi mã màu thứ hai.

  1. Trong Trang tính, hãy nhấp vào hàng đầu tiên để đảm bảo hàng đó vẫn được đánh dấu.
  2. Trong trình chỉnh sửa tập lệnh, hãy thay thế màu phông chữ #ffffff bằng #191970. Điều này khiến macro đặt màu phông chữ là xanh dương đậm.
/** @OnlyCurrentDoc */

function Header(){
  var spreadsheet = SpreadsheetApp.getActive();
  var sheet = spreadsheet.getActiveSheet();
  sheet.getRange(
    spreadsheet.getCurrentCell().getRow(),
    1, 1, 10).activate();
  spreadsheet.getActiveRangeList().setBackground('#afeeee')
  .setFontColor('#191970')/* #ffffff replaced with #191970.*/
  .setFontWeight('bold');
  spreadsheet.getActiveSheet().setFrozenRows(1);
}
  1. Để lưu kịch bản, hãy nhấp vào biểu tượng Lưu lưu.
  2. Trong danh sách hàm, hãy chọn Header rồi nhấp vào Run (Chạy).

Quay lại Trang tính để xem màu văn bản của hàng tiêu đề hiện là màu xanh dương đậm.

2eaf2fb4879e1b36.png

Bây giờ, bạn đã thấy cách macro thực sự là các thao tác trên Trang tính được ghi lại dưới dạng mã Apps Script. Trong phần tiếp theo, bạn có thể xem một cách khác mà Apps Script có thể giúp bạn làm việc với Google Trang tính: hàm tuỳ chỉnh.

5. Viết tập lệnh đầu tiên: Hàm tuỳ chỉnh

Giống như hầu hết các ứng dụng bảng tính, Google Trang tính có một số hàm công thức tích hợp sẵn, chẳng hạn như =SUM(), giúp bạn tính toán nhanh dữ liệu trên bảng tính. Hàm tuỳ chỉnh chỉ là những hàm mà bạn chỉ định bằng Apps Script. Sau khi xác định một hàm tuỳ chỉnh, bạn có thể sử dụng hàm đó ở bất kỳ vị trí nào trong bảng tính, giống như một hàm tích hợp sẵn.

Phần này hướng dẫn bạn cách tạo một hàm tuỳ chỉnh trong Apps Script để thực hiện việc chuyển đổi tiền tệ.

Tạo tệp tập lệnh

Sử dụng cùng một bảng tính và dự án tập lệnh trong phần Macro, hãy làm theo các hướng dẫn sau để tìm hiểu cách tạo một tập lệnh mới (bạn có thể dùng tập lệnh này để tạo hàm tuỳ chỉnh đầu tiên):

  1. Để tạo một tệp Apps Script, hãy quay lại trình chỉnh sửa tập lệnh.
  2. Bên cạnh Tệp, hãy nhấp vào biểu tượng Thêm tệp thêm tệp > Tập lệnh.
  3. Đặt tên cho tệp kịch bản mới là customFunctions rồi nhấn Enter. (Apps Script sẽ tự động thêm đuôi .gs vào tên tệp tập lệnh.)

Một thẻ mới có tên là customFunctions.gs sẽ xuất hiện trong trình chỉnh sửa.

Giờ đây, bạn có thể điền mã vào tập lệnh mà bạn đã tạo riêng cho các hàm tuỳ chỉnh.

Chuyển đổi USD sang CHF

Giả sử bạn muốn sửa đổi dữ liệu cho "10 bộ phim có doanh thu cao nhất năm 2018" để không chỉ hiển thị giá trị tổng doanh thu trên toàn thế giới bằng đô la Mỹ mà còn bằng franc Thuỵ Sĩ. Bạn có thể dễ dàng làm việc đó bằng các hàm tuỳ chỉnh. Bài tập sau đây minh hoạ cách tạo một hàm tuỳ chỉnh để chuyển đổi giá trị bằng đô la sang giá trị bằng franc theo cách tính toán.

Trước khi bạn có thể viết hàm tuỳ chỉnh đầu tiên, hãy sửa đổi tập dữ liệu để hàm này minh hoạ đầu ra phù hợp. Để thực hiện việc này:

  1. Trong Trang tính, hãy nhấp chuột phải vào cột H.
  2. Trong trình đơn xuất hiện, hãy nhấp vào Chèn 1 ô bên phải.

trình đơn cho thấy lựa chọn Chèn 1 bên phải

  1. Gắn nhãn cột "Worldwide_Gross (Swiss francs)" trong ô I1.

Giờ đây, bạn đã có một cột có thể lưu trữ kết quả của hàm chuyển đổi tuỳ chỉnh. Tiếp theo, bạn có thể dùng trình chỉnh sửa tập lệnh để tạo hàm tuỳ chỉnh đầu tiên.

  1. Trong customFunctions.gs, hãy thay thế mã cho myFunction() bằng mã sau:
/**
 * Converts US dollars to Swiss francs.
 *
 * @param {number} dollars The total number of dollars.
 * @return {number} swissFrancs The converted total of Swiss francs.
 * @customfunction
 */
function USDTOCHF(dollars){
  var swissFrancs = dollars * .99; 
  return swissFrancs;
}

Đây là mã sẽ chuyển đổi đô la Mỹ sang franc Thuỵ Sĩ. Hãy thử làm theo hướng dẫn bên dưới để xem cách chạy một hàm tuỳ chỉnh trong trang tính.

  1. Để lưu kịch bản, hãy nhấp vào biểu tượng Lưu lưu.
  2. Trong Trang tính, hãy chọn ô I2.
  3. Trong thanh hàm, hãy nhập =USDTOCHF(H2).

Cách áp dụng công thức cho các ô còn lại trong cột:

  1. Di chuyển con trỏ đến góc dưới cùng bên phải của ô I2 rồi chọn hộp nhỏ màu xanh dương (con trỏ sẽ biến thành 9c9b0c19bf317e7f.png khi trỏ vào hộp màu xanh dương).
  2. Kéo hộp màu xanh dương xuống dưới để làm nổi bật dải ô I3:I11.

3cf46560d6cea0de.gif

Giờ đây, cột I liệt kê giá trị quy đổi từ đô la Mỹ sang franc Thuỵ Sĩ của các giá trị trong cột H.

7fc06b3d7e3e2a9.png

Xin chúc mừng, bạn đã tạo hàm tuỳ chỉnh đầu tiên. Phần tiếp theo sẽ giải thích mã tạo nên USDTOCHF().

Phân tích USDTOCHF()

Các nhận xét ban đầu nêu chi tiết mục đích của mã:

/**
 * Converts US dollars to Swiss francs.
 *
 * @param {number} dollars The total number of dollars.
 * @return {number} swissFrancs The provided value in Swiss francs.
 * @customfunction
 */

Các khối nhận xét như thế này thường được dùng trong lập trình để giải thích chức năng của các hàm.

Trong chú thích này, bạn có thể xác định 2 phần: phần mô tả hàm (để chuyển đổi đô la sang franc) và chú thích mô tả các tham số và kiểu dữ liệu trả về của hàm.

Với các chú giải, Apps Script sử dụng JSDoc để giúp bạn ghi lại và tạo gợi ý tự động hoàn thành cho mã của mình. Bạn có thể đọc bên dưới để biết cách từng chú thích được dùng trong USDTOCHF() giúp bạn phát triển Apps Script:

  • @param: Bạn có thể dùng chú giải @param để mô tả từng tham số được truyền vào hàm.
  • @return: Bạn có thể sử dụng chú giải @return để mô tả những gì hàm trả về.
  • @customfunction: Bạn nên luôn thêm @customfunction vào phần bình luận tài liệu của mọi hàm tuỳ chỉnh. Chú thích này thông báo cho Trang tính biết rằng bạn muốn tự động hoàn thành hàm tuỳ chỉnh của mình giống như cách Trang tính tự động hoàn thành các hàm tích hợp sẵn khi bạn nhập tên hàm vào một ô như minh hoạ bên dưới:

d8680ab6efae97ac.gif

Lưu ý rằng văn bản xuất hiện trong cửa sổ bật lên tự động hoàn thành hoàn toàn khớp với văn bản mô tả mà bạn đặt trong khối nhận xét. Bạn có thể giúp người dùng dễ dàng sử dụng các hàm tuỳ chỉnh bằng cách đảm bảo nội dung mô tả bạn tạo được viết rõ ràng và đầy đủ.

Tiếp theo, hãy tập trung vào mã trong hàm USDTOCHF():

function USDTOCHF(dollars){
  var swissFrancs = dollars * .99; 
  return swissFrancs;
}

Như đã đề cập trước đó, USDTOCHF() lấy biến số đô la, nhân với một tỷ giá hối đoái cố định và trả về một giá trị được chuyển đổi sang franc Thuỵ Sĩ trong biến số swissFrancs. Tham số đầu vào là giá trị có trong ô được chỉ định khi thêm hàm tuỳ chỉnh vào một ô. Trong ví dụ này, số tiền nhập vào bằng đô la đến từ cột H. Giá trị đầu ra swissFrancs được đặt trong ô của hàm (cột I trong ví dụ này).

Hàm tuỳ chỉnh có thể hoạt động với các giá trị số hoặc chuỗi, như bạn sẽ thấy trong phần tiếp theo.

Nối tiền tố chuỗi

Giả sử bạn muốn đầu ra dạng số của hàm USDTOCHF() có thêm tiền tố CHF của đồng franc Thuỵ Sĩ. Bạn có thể thực hiện việc đó bằng Apps Script bằng cách sử dụng toán tử nối (+), như minh hoạ trong hướng dẫn sau:

  1. Trong trình chỉnh sửa tập lệnh, hãy cập nhật chú thích @return để trả về chuỗi thay vì số.
  2. Thay đổi return swissFrancs thành return 'CHF' + swissFrancs.

Toán tử + sẽ thêm chuỗi CHF vào đầu giá trị có trong swissFrancs. Mã của bạn bây giờ sẽ có dạng như sau:

/**
 * Converts US dollars to Swiss francs.
 *
 * @param {number} dollars The total number of dollars.
 * @return {string} swissFrancs The provided value in Swiss francs.
 * @customfunction
 */
function USDTOCHF(dollars){
  var swissFrancs = dollars * .99;
  return 'CHF' + swissFrancs;
}
  1. Để lưu kịch bản, hãy nhấp vào biểu tượng Lưu lưu.

Chuỗi đồng franc Thuỵ Sĩ hiện đứng trước các giá trị của cột I:

20e4bfb7f0a994ea.png

Giờ đây, hàm tuỳ chỉnh của bạn không chỉ chuyển đổi đô la Mỹ sang franc Thuỵ Sĩ mà còn xuất đơn vị tiền tệ kèm theo tiền tố chuỗi.

Nâng cao: Tìm nạp dữ liệu bên ngoài

Đây là một khởi đầu tốt cho một hàm tuỳ chỉnh cơ bản, nhưng ví dụ này giả định rằng tỷ giá hối đoái từ đô la sang franc Thuỵ Sĩ là không đổi. Giả sử thay vào đó, bạn muốn sử dụng tỷ giá hối đoái hiện tại, vậy thì mỗi khi trang tính được tải lại, các giá trị sẽ được tính toán lại để thể hiện tỷ giá quy đổi hiện tại? Để làm việc đó, bạn cần có cách để biết tỷ giá hối đoái hiện tại. Đó không phải là thông tin có sẵn trong Google Trang tính, nhưng may mắn là bạn có thể dùng Apps Script để lấy thông tin đó.

Bạn có thể sử dụng mã như bên dưới để biết tỷ giá chuyển đổi hiện tại từ franc Thuỵ Sĩ sang đô la Mỹ:

function USDTOCHF(dollars){
  // Gets a cache that is common to all users of the script.
  var cache = CacheService.getScriptCache();

  // Accesses the memory location (rates.CHF) of the script cache.
  var rate = cache.get('rates.CHF');

  // If a cache miss occurs, the program fetches the current
  // CHF rate from an API and stores the rate in the cache
  // for later convenience.
  if (!rate) {
    var response =
UrlFetchApp.fetch('https://api.exchangeratesapi.io/latest?base=USD');
    var result = JSON.parse(response.getContentText());
    rate = result.rates.CHF;
    cache.put('rates.CHF', rate);
  }
  // Converts dollars to CHF according to the latest rate.
  var swissFrancs = dollars * rate;
  // Returns the CHF value.
  return 'CHF' + swissFrancs;
}

Đoạn mã này tìm nạp tỷ giá hối đoái hiện tại từ một máy chủ thông tin tài chính bằng cách sử dụng API tỷ giá hối đoái của bên thứ ba. Việc này được thực hiện bằng các dịch vụ Apps Script như UrlFetchAppCacheService. Những khái niệm nâng cao đó nằm ngoài phạm vi của lớp học lập trình cụ thể này, nhưng bạn có thể bắt đầu thấy tính linh hoạt của Apps Script trong việc tự động hoá các tác vụ phức tạp trong Google Trang tính.

Nguyên tắc về hàm tuỳ chỉnh

Chúc mừng bạn đã hoàn thành các bài tập về hàm tuỳ chỉnh. Khi sử dụng hàm tuỳ chỉnh trong các dự án, bạn cần hiểu rằng các hàm này có một số hạn chế nhất định. Danh sách sau đây tóm tắt các giới hạn được nêu chi tiết trong hướng dẫn Hàm tuỳ chỉnh trong Google Trang tính:

  • Không tạo các hàm tuỳ chỉnh yêu cầu người dùng uỷ quyền. Thay vào đó, hãy tạo các hàm tuỳ chỉnh để thực hiện những tác vụ đơn giản hơn, chẳng hạn như tính toán dữ liệu mẫu, chỉnh sửa văn bản, v.v. Truy cập vào phần Sử dụng các dịch vụ của Apps Script.
  • Đừng đặt tên cho hàm tuỳ chỉnh giống với một hàm tích hợp sẵn khác hoặc kết thúc tên bằng dấu gạch dưới. Xem Nguyên tắc đặt tên.
  • Không truyền đối số biến cho các hàm tuỳ chỉnh. Bạn chỉ có thể truyền các giá trị xác định (cố định) đến các hàm tuỳ chỉnh dưới dạng đối số. Việc truyền đối số biến, chẳng hạn như kết quả của =RAND(), sẽ làm hỏng hàm tuỳ chỉnh. Xem Nguyên tắc về đối số.
  • Đừng tạo các hàm mất hơn 30 giây để hoàn thành. Nếu mất nhiều thời gian hơn, lỗi sẽ xảy ra, vì vậy hãy giữ cho mã hàm đơn giản và có phạm vi hạn chế. Tốt nhất là bạn nên giữ cho các phép tính được thực hiện trong hàm tuỳ chỉnh càng đơn giản càng tốt. Xem Nguyên tắc về giá trị trả về.

Giờ đây, bạn có thể cải thiện bảng tính bằng cách sử dụng trình chỉnh sửa tập lệnh để làm việc với macro và tạo hàm tuỳ chỉnh. Trong phần tiếp theo, bạn có thể xem lại những gì mình đã học và những việc bạn có thể làm tiếp theo để cải thiện kỹ năng viết kịch bản.

6. Kết luận

Bạn đã hoàn thành lớp học lập trình đầu tiên trong khoá học Kiến thức cơ bản về Apps Script với Google Trang tính. Bằng cách tạo và chỉnh sửa macro cũng như hàm tuỳ chỉnh trong Trang tính, bạn đã tìm hiểu các khái niệm cơ bản về Apps Script. Bạn có thể mở rộng kiến thức về Apps Script trong lớp học lập trình tiếp theo.

Bạn có thấy lớp học lập trình này hữu ích không?

Không

Nội dung đã đề cập

  • Các khái niệm cơ bản về Apps Script.
  • Cách thao tác trong trình chỉnh sửa tập lệnh.
  • Cách tạo và cập nhật macro trong Trang tính.
  • Cách tạo hàm tuỳ chỉnh cho Google Trang tính.

Bước tiếp theo

Lớp học lập trình tiếp theo trong danh sách phát này sẽ giới thiệu các lớp và thuật ngữ cốt lõi của Dịch vụ bảng tính của Apps Script. Dịch vụ này cho phép bạn kiểm soát chính xác các giá trị và cách trình bày dữ liệu trong Google Trang tính bằng Apps Script.

Tìm lớp học lập trình tiếp theo tại Bảng tính, Trang tính và Dải ô.