Kiến thức cơ bản về Apps Script với Google Trang tính số 1: Macro và amp; Chức năng tùy 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, cho phép bạn tự động hóa, tùy 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 hóa công việc phức tạp hoặc phức tạp 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 các 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—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 Google Workspace, cho phép bạn kích hoạt tập lệnh ngay từ những trình chỉnh sửa đó bằng cách sử dụng mục trong trình đơn, hộp thoại và thanh bên.

Danh sách phát Lớp học cơ bản về Apps Script có trong Google Trang tính này hướng dẫn các kiến thức cơ bản về Apps Script và cách sử dụng tập lệnh này để 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 giảng dạy những kiến thức cơ bản về Apps Script.

Dịch vụ bảng tính

Bạn có thể dùng Apps Script để mở rộng Google Trang tính để 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 tập lệnh tương tác với tệp của bạn trên Google Trang tính cũng như dữ liệu chứa trong đó. Bạn có thể sử dụng dịch vụ này để tự động hóa những thao tác phổ biến sau đây trong bảng tính:

  • 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 ô.
  • Tạo các nút và trình đơn tùy chỉnh.
  • Nhập và xuất dữ liệu từ các ứng dụng khác của Google hoặc của 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ả chủ đề bạn cần để bắt đầu sử dụng Apps Script bằng Google Trang tính:

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

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

Hãy 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 của 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 những thông tin 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 hai khái niệm chính: macrohàm tùy chỉnh.

Macro là một loạt hành động được ghi lại trong Google Trang tính. Sau khi ghi lại, bạn có thể kích hoạ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 chỉnh sửa mã của Apps Script, bạn cũng có thể tạo hàm tùy chỉnh. Tương tự như các hàm tích hợp sẵn Trang tính (chẳng hạn như SUM hoặc AVERAGE), bạn có thể dùng Apps Script để viết các hàm tùy chỉnh của riêng mình cho các thao tác đơn giản và phù hợp (chẳng hạn như lượt 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 giống như một hàm tích hợp sẵn. Bạn cũng có thể sử dụng các hàm tùy chỉnh trong công thức ô mà bạn viết, kết hợp các hàm đó với các hàm khác khi cần.

Hãy đọc phần bên dưới để tìm hiểu khái niệm và yêu cầu của 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 di chuyển trong trình chỉnh sửa Apps Script.
  • Cách tạo và cập nhật macro.
  • Cách tạo hàm tùy chỉnh đầu tiên cho Trang tính.

Bạn cần có

Bạn đã hoàn tất phần giới thiệu. 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ể tham gia vào một vòng lặp các hành động lặp lại — sao chép các giá trị ô, định dạng, tạo công thức, v.v. — việc này có thể làm nhàm chán và dẫn đến sai lầm. Để tự động hóa các hành động lặp lại, Google Trang tính cung cấp macro. Macro cho phép bạn "ghi lại\39; một loạt các hành động trong một trang tính. Với 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 bằng cách nhấn một phím tắt đơn giản.

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

Trước khi bắt đầu

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

5b8aded1bb349ecf.png

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

Tạo macro

Bây giờ, bạn đã có một bảng tính để làm việc, bạn có thể ghi lại 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 đề của bạn.
  2. Trong trình đơn, hãy chọn Tiện ích > Macro > Ghi macro.

Sau khi bạn bắt đầu ghi lại, 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 trang tính khác, định dạng, v.v. Những hành động này sẽ trở thành "tập lệnh#39"; sẽ được lặp lại sau khi bạn lưu và kích hoạt macro sau đó.

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

c59f2f12317352d2.gif

  1. Chọn hàng 1.

1d782ee30c66a02b.gif

  1. Chỉnh màu lại cho màu trên cùng của hàng Xếp màu từ màu trắng sang màu đỏ tía 3.

f7e7abaf76e338c7.png

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

d5e630acbe83148.png

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

97cb244ffebe8953.png

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

b4610a54340da518.gif

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

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 các 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. Vui lòng làm theo các ví dụ dưới đây:

c3aadaef52a609bf.png

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

{4}e36fcf833d0bd7.gif

  1. Để áp dụng macro cho khu vực đã chọn, hãy nhấp vào Tiện ích> Macro> Tiêu đề.
  2. Cấp phép 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 (khi bạn cho phép macro sẽ thực thi lần đầu tiên).

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

7c7130a4a697bd92.png

Macro cho phé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 mạnh mẽ hơn nữa. Đây là bí mật: khi bạn ghi macro, những gì bạn thực sự làm là viết mã Apps Script. Phía sau hệ thống, Trang tính tạo thành mã khớp với hành động 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 macro, Google Trang tính sẽ lưu hành động của bạn dưới dạng 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 hành động đó theo cùng một thứ tự.

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

Giờ bạn đã 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ình duyệt cho Apps Script.

Trình chỉnh sửa 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 các máy chủ của Google.

Bản phân tích về macro.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 lại macro Header, sau đó điền tệp này bằng 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 thứ tự khác hoặc nhấp xung quanh bảng tính trong khi ghi, mã của bạn có thể khác một chút.

5d653a69a0897adf.png

Dòng đầu tiên là nhận xét về chú thích ảnh hưởng đến việc ủy 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 họ có thể chạy. Các quyền này kiểm soát những việc mà người dùng đang cho phép thực hiện tập lệnh. Khi nhận xét @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ó nhận xét 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. Tốt nhất là bạn nên thêm chú thích này khi bạn chỉ làm việc với một tệp. Trình ghi macro sẽ tự động thêm nhận xét này cho bạn.

Để hiểu cách Apps Script đại diện cho hướng dẫn macro của bạn, 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 sẽ chạy khi bạn kích hoạt macro Header. Sau function, nhãn Header() xác định tên của hàm và các thông số của hàm. Nhận thấy rằng Header() không yêu cầu tham số 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 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 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 qua phần mô tả mã sau để biết các thành phần chung và vai trò của các thành phần đó trong việc tạo macro. Hãy cân nhắc dòng đầu tiên:

var spreadsheet = SpreadsheetApp.getActive();

Trong trường hợp nà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();

Những dòng này tương ứng với hành động nhấp vào hàng đầu tiên để đánh dấu hàng. Hành động nà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 nhận được toàn bộ hàng đầu tiên bằng cách sử dụng phương thức getRange(), sau đó gọi activate() để kích hoạt trang tính đó. Hàng đầu tiên được chỉ định bằ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 phức tạp hơn. Để gọi các phương thức bằng spreadsheet một cách hiệu quả, mã sẽ xếp chồng 3 phương thức vào getActiveRangeList() để ngăn mã này gọi không liên tục trên phương thức spreadsheet này nhiều lần. Khi mã hóa nhiều hơn bằng Apps Script, bạn sẽ quen thuộc với quy ước gọi nhiều phương thức này trên một lớp (còn được gọi là chuỗi phương thức). Hiện tại, bạn có thể đọc nội dung sau để giải thích ngắn gọn về từng phương thức trong khối mã:

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

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

spreadsheet.getActiveSheet().setFrozenRows(1);

Và đó 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 lạ nào được đề cập ở 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 chức năng macro thông thường và các chủ đề trong tương lai mà các lớp học lập trình nghiên cứu sâu hơn.

Phần tiếp theo tập trung vào việc thao tác mã của hàm Header() để trình bày cách sử dụng trình chỉnh sửa tập lệnh để cá nhân hóa macro hơn nữa.

Tùy chỉnh macro bằng Apps Script

Trình chỉnh sửa Apps Script hiển thị macro bạn đã tạo trước đây trong Google Trang tính. Bằng cách điều chỉnh nội dung của phần nội dung hàm, bạn có thể tuỳ chỉnh thêm hướng dẫn của macro để thực hiện các thao tác khác nhau hoặc thao tác khác. Các bài tập sau đây minh họa các cách khác nhau để thao tác 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 của mình để 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ể xóa macro và ghi lại macro. Tuy nhiên, bạn có thể thực hiện các thay đổi trực tiếp bằng cách sử dụng trình chỉnh sửa Apps Script. Dưới đây là một cách thực hiện:

  1. Trong trình chỉnh sửa tập lệnh, thay thế sheet.getMaxColumns() bằng 10. Chỉnh sửa này thay đổi phạm vi của ô ảnh hưởng đến macro 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 tập lệnh, hãy nhấp vào Lưu pha bảo vệ khung thành.
  2. Để đổi tên dự án của bạn, hãy nhập "Macro và Hàm tùy chỉnh" làm tên dự án mới và nhấp vào Đổ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, từ 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 phạm vi mục tiêu hoặc đang hoạt động, 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 sẽ lấy một ký hiệu dải ô hoặc ký hiệu A1 làm tham số để chỉ định những ô nào cần thực hiện.

Tiếp theo, hãy tìm hiểu về cách tùy chỉnh màu macro.

Thay đổi màu của macro

Để giúp bạn thiết kế bảng phối màu hoặc các phần tử khác trong Trang tính, Apps Script có thể sửa đổi dải màu hoặc màu văn bản của dải ô. Thực hiện qua các hướng dẫn sau để tìm hiểu cách bạn có thể tùy chỉnh màu của macro.

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

  1. Trong Trang tính, hãy quay lại 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.
  3. Trong trình chỉnh sửa tập lệnh, thay thế màu nền #4c1130 bằng #afeeee. Những giá trị này đại diện cho các màu khác nhau bằng cách sử dụng ký hiệu bộ ba giá trị 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 tập lệnh, hãy nhấp vào Lưu pha bảo vệ khung thành.
  2. Từ danh sách hàm, hãy chọn Header rồi nhấp vào Chạy.

Trong Trang tính, màu nền của 10 cột đầu tiên trong hàng đầu tiên được tô màu lại thành màu xanh ngọc tùy chỉnh:

bbd26f7c8e35039.png

Bằng cách chuyển ký hiệu màu hex trong các thông số của setBackground(color) từ #4c1130 (màu đỏ tía 3) thành #afeeee (màu ngọc lam nhạt, một tùy chọn không thể truy cập trong Trang tính\39; trình đơn màu mặc định), bạn thay đổi thuộc tính màu sắc của màu nền macro.

Bạn hiện đã sửa đổi màu nền do macro của mình đặt. 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, 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à màu xanh hải quâ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')
  .setFontColor('#191970')/* #ffffff replaced with #191970.*/
  .setFontWeight('bold');
  spreadsheet.getActiveSheet().setFrozenRows(1);
}
  1. Để lưu tập lệnh, hãy nhấp vào Lưu pha bảo vệ khung thành.
  2. Từ danh sách hàm, hãy chọn Header rồi nhấp vào 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 hải quân.

2eaf2fb4879e1b36.png

Bây giờ, bạn đã thấy các macro thực sự được ghi lại là hành động trên Trang tính 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 tùy chỉnh.

5. Viết mã cho tập lệnh đầu tiên của bạn: Hàm tùy 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 như =SUM() cho phép tính toán nhanh trên dữ liệu bảng tính. Hàm tùy chỉnh chỉ là các hàm mà bạn chỉ định bằng Apps Script. Khi bạn đã xác định một hàm tùy chỉnh, bạn có thể sử dụng hàm đó ở bất cứ đâu trong bảng tính của mì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 tùy chỉnh trong Apps Script để thực hiện quy trình quy đổi tiền tệ.

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

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

  1. Để tạo 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 một tệp > Tập lệnh.
  3. Đặt tên cho tệp tập lệnh mới là customFunctions rồi nhấn phím Enter. (Ứng dụng Apps Script tự động thêm một tiện ích .gs vào tên tệp tập lệnh.)

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

Bây giờ bạn đã tạo một tập lệnh cụ thể cho các hàm tùy chỉnh, bạn có thể điền tập lệnh đó bằng mã.

Chuyển đổi đô la Mỹ sang franc Thụy Sĩ

Giả sử bạn muốn sửa đổi dữ liệu cho "10 phim có doanh thu cao nhất năm 2018#39"; không chỉ để hiển thị tổng giá trị trên toàn thế giới bằng đô la Mỹ, mà còn bằng đồng Franc Thụy Sĩ. Với các hàm tùy chỉnh, bạn có thể làm việc đó dễ dàng. Bài tập sau đây minh họa cách tạo hàm tùy chỉnh để chuyển đổi toán học các giá trị đô la thành giá trị franc.

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

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

fc1421cb1c456e52.gif

  1. Gắn nhãn cột "Worldwide_Total (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 tùy chỉnh lượt chuyển đổi. Tiếp theo, bạn có thể sử dụng trình chỉnh sửa tập lệnh để tạo hàm tùy chỉnh đầu tiên.

  1. Trong customFunctions.gs, hãy thay 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 đồng Franc Thụy Sĩ. Hãy thử hướng dẫn bên dưới và xem cách bạn có thể chạy hàm tùy chỉnh trong trang tính.

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

Để áp dụng công thức cho phần còn lại của các ô trong cột:

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

3cf46560d6cea0de.gif

Giờ đây, Cột I liệt kê các lượt chuyển đổi đô la Mỹ trên Thụy Sĩ theo giá trị đô la Mỹ trên Cột H.

7fc06b3d7e3e2a9.png

Xin chúc mừng! Bạn đã tạo được hàm tùy chỉnh đầu tiên. Phần tiếp theo giải thích mã bao gồm USDTOCHF().

Bản phân tích về USDTOCHF()

Những 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 bình luận như thế này thường được dùng để lập trình nhằm giải thích chức năng của chúng.

Trong nhận xét này, bạn có thể xác định hai phần: mô tả hàm (để chuyển đổi đô la sang đồng franc) và chú thích mô tả tham số và loại trả về của hàm.

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

  • @param: Bạn có thể dùng chú thích @param để mô tả từng tham số được chuyển vào hàm đó.
  • @return: Bạn có thể dùng chú thích @return để mô tả giá trị mà hàm trả về.
  • @customfunction: Bạn phải luôn thêm @customfunction trong nhận xét tài liệu bất kỳ của hàm tùy chỉnh. Chú thích này thông báo cho Trang tính tính năng tự động hoàn thành hàm tùy chỉnh của bạn giống như 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ư 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 khớp chính xác với văn bản mô tả bạn đã đặt trong khối nhận xét. Bạn có thể dùng các hàm tùy chỉnh để dễ dàng hơn bằng cách đảm bảo rằng những nội dung mô tả mà bạn tạo đều được viết chính xác 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 đô la biến số, nhân giá trị đó với tỷ giá hối đoái cố định và trả về giá trị được chuyển đổi thành đồng Franc Thụy Sĩ trong biến số swissFrancs. Tham số đầu vào là giá trị có trong ô được chỉ định khi thêm hàm tùy chỉnh vào một ô. Trong ví dụ này, số tiền đầu vào được nhập 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 tùy 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.

Ghép một tiền tố chuỗi

Giả sử bạn muốn lấy kết quả bằng số của hàm USDTOCHF() bao gồm tiền tố tiếng Pháp Thụy Sĩ CHF. Bạn có thể thực hiện điều đó bằng Apps Script bằng cách dùng toán tử nối (+), như 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ẽ nối chuỗi CHF vào mặt trước của giá trị chứa 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 tập lệnh, hãy nhấp vào Lưu pha bảo vệ khung thành.

Chuỗi tiếng Pháp Thụy Sĩ giờ đây thêm tiền tố các giá trị của cột I:

20e4bfb7f0a994ea.png

Hàm tùy chỉnh của bạn hiện không chỉ chuyển đổi đô la Mỹ sang đồng Franc Thụy Sĩ mà còn đầu ra đơn vị tiền tệ có 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 chức năng tùy chỉnh cơ bản, nhưng ví dụ này giả định tỷ giá hối đoái của đồng đô la Mỹ sang franc Thụy Sĩ là không đổi. Giả sử bạn muốn sử dụng tỷ giá hối đoái hiện tại, vì vậy, bất cứ khi nào trang tính được tải lại, các giá trị sẽ được tính lại để thể hiện lượt chuyển đổi hiện tại? Để làm được điều đó, bạn cần có phương tiện để khám phá 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 thay, bạn có thể sử dụng Apps Script để tải tệp này.

Bạn có thể sử dụng mã như bên dưới để nhận tỷ giá chuyển đổi hiện tại của đồng Franc Thụy 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;
}

Mã này tìm nạp tỷ giá hối đoái hiện tại từ máy chủ thông tin tài chính bằng API tỷ giá hối đoái của bên thứ ba. Bạn có thể thực hiện việc này bằng cách sử dụ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 để tự động hóa các thao tác phức tạp trong Google Trang tính.

Nguyên tắc về hàm tùy chỉnh

Chúc mừng bạn đã hoàn thành bài tập cho các hàm tùy chỉnh. Khi sử dụng các hàm tùy chỉnh trong các dự án của mình, bạn cần hiểu rằng chúng 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 nêu chi tiết trong hướng dẫn về Hàm tùy chỉnh trong Google Trang tính:

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

Giờ đây, bạn có thể cải thiện bảng tính của mì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 các hàm tùy chỉnh. Trong phần tiếp theo, bạn có thể xem lại những gì bạn đã học và những gì bạn có thể làm tiếp theo để cải thiện kỹ năng viết của mình.

6. Kết luận

Bạn đã hoàn thành lớp học lập trình đầu tiên về 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 Trang tính và các hàm tùy chỉnh, bạn đã tìm hiểu được các khái niệm cơ bản về Apps Script. Bạn có thể mở rộng thêm 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

Những điều chúng tôi đã đề 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 Trang tính.
  • Cách tạo hàm tùy 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 trình bày các lớp và thuật ngữ chính của dịch vụ Bảng tính Apps Script. Dịch vụ này cho phép bạn kiểm soát tốt 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à Phạm vi.