Hướng dẫn Tạo Bảng Chú Thích trong Google Sheets

Video google sheet table of contents

Chào mừng bạn đến với bài viết hướng dẫn về cách tạo bảng chú thích động trong Google Sheets. Trong bài viết này, chúng ta sẽ học cách tạo động một bảng chú thích mới bằng cách sử dụng một đoạn mã. Nếu bạn đã sẵn sàng, hãy bắt đầu!

Lấy Tên Các Trang Tính Của Bạn

Chúng ta sẽ sử dụng trình chỉnh sửa mã để làm việc này. Nếu bạn không quen với trình chỉnh sửa mã, hãy xem hướng dẫn của chúng tôi về cách tự động hóa các hộp kiểm trước khi tiếp tục. Nếu không, hãy mở trình chỉnh sửa bằng cách điều hướng đến “Công cụ” và chọn “Trình chỉnh sửa mã”.

Thay thế chức năng giả tạo bằng một chức năng mới, hãy gọi nó là “generateTableOfContents()”. Đối với hầu hết các đoạn mã bạn sẽ viết cho một trang tính Google, bạn sẽ phải khai báo trang tính bạn đang sử dụng. Vì trình chỉnh sửa mã dựa trên Google Apps Script, chúng ta có thể sử dụng tất cả các thư viện tích hợp. Sau đây là mã của bạn sẽ trông như thế này:

function generateTableOfContents() {
  var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
}

Để lấy trang tính trong trang tính, chúng ta sẽ sử dụng một hàm được gọi là “getSheets()”. Sau khi chúng ta có nó, chúng ta sẽ cần lặp qua từng trang tính để lấy tên trang tính. Chúng ta cũng muốn lưu trữ những tên này ở một nơi nào đó, vì vậy chúng ta sẽ tạo một mảng rỗng và gọi nó là “sheet_names”.

function generateTableOfContents() {
  var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  var sheets = spreadsheet.getSheets();
  var sheet_names = [];
  for (i=0; i<sheets.length; i++){
    sheet_names.push([sheets[i].getName()]);
  }
}

Ở đây, chúng tôi sử dụng vòng lặp for để lặp qua các đối tượng trang tính mà chúng tôi đã thu được từ hàm “getSheets()”. Bạn không bắt buộc phải sử dụng vòng lặp for, đó chỉ là phương pháp ưa thích của tôi khi viết mã mới từ đầu. Hãy sử dụng phương pháp vòng lặp mà bạn thích ở đây, vì không có nhiều khác biệt giữa các loại vòng lặp khác nhau.

Bây giờ bạn đã có các tên của các trang tính của bạn, đến lúc tạo các liên kết mà bạn sẽ cần cho bảng chú thích của bạn. Để xác định tên trang tính của bạn, đặt “console.log(sheet_names)” ngay sau dấu ngoặc nhọn đóng của vòng lặp “for” và chạy mã lệnh.

Tạo Các Liên Kết

Để tạo ra các liên kết sẽ đưa người dùng của bạn đến từng trang tính / tab cụ thể, chúng ta sẽ tạo một công thức “=HYPERLINK()” và điền vào URL và văn bản / nhãn hiển thị. Mỗi URL của trang tính Google bắt đầu bằng “docs.google.com/spreadsheets/d/”, tiếp theo là ID của trang tính, sau đó là “/edit”. Nếu bạn có nhiều tab, bạn sẽ nhận thấy rằng cũng có một “gid” được gắn vào cuối URL, đó là ID của trang tính của bạn. Tương tự như việc thu thập tên trang tính trước đó, chúng ta sẽ làm điều tương tự để lấy ID của trang tính.

Điều đầu tiên bạn cần làm là lấy ID của trang tính của bạn. Cách đơn giản nhất là sao chép URL và trích xuất nó từ đó. Vì chúng tôi đang viết mã để làm điều đó, chúng tôi sẽ làm cho nó dễ tái sử dụng hơn cho các trang tính khác của bạn. Để làm điều này, chúng tôi sẽ sử dụng hàm “getId()”, có sẵn ở mức độ trang tính. Hãy tạo một biến mới gọi là “url” và gán cho nó URL tiêu chuẩn của một trang tính Google.

var url = 'https://docs.google.com/spreadsheets/d/' + spreadsheet.getId() + '/edit'

Đặt biến này ngay sau nơi chúng tôi đã sử dụng “getSheets()” và trên nơi chúng tôi đã lặp qua các trang tính. Chúng tôi sẽ sử dụng biến “url” này trong vòng lặp của chúng tôi để có thể thêm liên kết vào bảng chứa tên trang tính của chúng tôi.

Sau khi bạn đã thiết lập URL của trang tính của mình, hãy đi vào bảng của bạn và thêm một biến mới gọi là “sheet_url”. Chúng ta sẽ sử dụng URL và nối với tham số “#gid” (giúp xác định một trang cụ thể) và trích xuất ID trang tính bằng cách sử dụng hàm “getSheetId()”, có sẵn ở mức độ trang tính. Mã của bạn sẽ trông như thế này:

function generateTableOfContents() {
  ...
  var sheets = spreadsheet.getSheets();
  var url = 'https://docs.google.com/spreadsheets/d/' + spreadsheet.getId() + '/edit'
  var sheet_names = []
  for (i=0; i<sheets.length; i++){
    var sheet_url = url + '#gid=' + sheets[i].getSheetId();
    sheet_names.push([sheets[i].getName()]);
  }
}

Bây giờ bạn đã cấu hình URL của trang tính, đến lúc nối nó với công thức “=HYPERLINK()”. Công thức này xem xét một URL và một nhãn (label). Khi bạn làm điều này trong mã, hãy chắc chắn sử dụng dấu ngoặc kép chính xác. Công thức trong trang tính Google đòi hỏi dấu ngoặc kép, vì vậy bạn sẽ cần sử dụng dấu ngoặc đơn cho tất cả các chuỗi trong mã thực tế của bạn. Biến “hyperlink” của bạn sẽ trông như thế này:

var hyperlink = '=HYPERLINK("' + sheet_url + '", "Go to tab")'

Trong quá trình đó, hãy làm sạch mã của chúng ta một chút bằng cách khai báo một biến cho “sheet_name” và sử dụng nó trong “Array.push()”. Vòng lặp của bạn sẽ trông như sau:

...
for (i=0; i<sheets.length; i++){
  var sheet_name = sheets[i].getName();
  var sheet_url = url + '#gid=' + sheets[i].getSheetId();
  var hyperlink = '=HYPERLINK("' + sheet_url + '", "Go to tab")'
  sheet_names.push([sheet_name, hyperlink]);
}
...

Điều này làm cho “sheet_names” trở thành một mảng lồng nhau, trong đó mỗi vị trí chứa một mảng bên trong. Dữ liệu sẽ trông gần như như sau sau khi nó được thực thi:

[
  ["tên trang tính 1", "liên kết 1"],
  ["tên trang tính 2", "liên kết 2"],
  ["tên trang tính 3", "liên kết 3"]
]

Điều này giải quyết các liên kết. Bây giờ bạn có các tên trang tính và liên kết cho mỗi trang tính bạn cần cho bảng chú thích của mình. Bước tiếp theo là chèn chúng vào trang tính / tab TOC của bạn.

Cập Nhật Trang Tính TOC Của Bạn

Để chèn dữ liệu vào một trang tính, chúng ta cần xác định nơi để đặt dữ liệu. Nếu bạn chưa có một trang tính TOC, hãy tạo một trang tính mới. Chúng ta sẽ đặt tên “TOC” cho trang tính này. Chúng tôi sẽ đặt tên cho mã của bạn để nó chỉ đến trang tính này bằng cách sử dụng hàm “getSheetByName()”.

var destination_sheet = spreadsheet.getSheetByName("TOC")

Sau đó, chúng tôi cần chỉ định mã của mình đến ô A1, điều này chúng ta có thể làm bằng cách sử dụng hàm “getRange()”. Trong hàm này, chúng ta sẽ chuyển 4 tham số – bắt đầu từ hàng, bắt đầu từ cột, số hàng và số cột. Vì chúng ta muốn bắt đầu từ A1, chúng ta sẽ đặt hai tham số đầu tiên thành 1. Số hàng sẽ phụ thuộc vào số dữ liệu chúng ta có trong mảng “sheet_names” của chúng ta và số cột sẽ là số giá trị chúng ta có trong mảng lồng nhau (có thể là 2 – một cho tên trang tính và một cho liên kết).

var destination_range = destination_sheet.getRange(1, 1, sheet_names.length, sheet_names[0].length)

Lưu ý rằng đối với số cột, chúng tôi nói “sheet_names[0].length” – điều này thực sự chỉ đang xem một trong các vị trí của mảng “sheet_names”, vị trí đầu tiên trong trường hợp này (vì mảng bắt đầu từ 0), và đếm số giá trị trong phần đó. Hình dung trước đó là một cách tuyệt vời để xem điều này và cách nó hoạt động.

Để chèn những gì chúng ta đã tạo cho “sheet_names”, chúng ta chỉ cần gọi “setValues()” trên “destination_range”. Như thế này:

destination_range.setValues(sheet_names);

Bạn muốn đặt đoạn mã mới này ở cuối hàm “generateTableOfContents()”, sau vòng lặp. Khi bạn đã ghép nó lại, nó sẽ trông như sau:

function generateTableOfContents() {
  var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  var sheets = spreadsheet.getSheets();
  var url = 'https://docs.google.com/spreadsheets/d/' + spreadsheet.getId() + '/edit'
  var sheet_names = []
  for (i=0; i<sheets.length; i++){
    var sheet_name = sheets[i].getName();
    var sheet_url = url + '#gid=' + sheets[i].getSheetId();
    var hyperlink = '=HYPERLINK("' + sheet_url + '", "Go to tab")'
    sheet_names.push([sheet_name, hyperlink]);
  }
  var destination_sheet = spreadsheet.getSheetByName("TOC")
  var destination_range = destination_sheet.getRange(1, 1, sheet_names.length, sheet_names[0].length)
  destination_range.setValues(sheet_names);
}

Tạo TOC thông qua Trang Tính

Chạy dưới dạng Macro

Để sử dụng chức năng của chúng tôi như một macro, chúng ta cần nhập nó vào thanh công cụ. Để làm điều này, hãy nhấp vào tùy chọn “Công cụ” trên thanh menu của bạn, mở tùy chọn “Macros”, sau đó chọn “Nhập” trong danh sách tùy chọn.

Khi cửa sổ nhập xuất hiện, bạn sẽ thấy chức năng của mình là một tùy chọn. Nhấp vào nút “Thêm chức năng” để nhập chức năng vào. Bạn sẽ thấy nút trở thành dấu chấm khi hoàn thành.

Sau đó, hãy đóng cửa sổ nhập và mở lại danh sách macro của bạn – bạn sẽ thấy chức năng chúng ta vừa thêm đã là một tùy chọn. Bằng cách nhấp vào nó, mã sẽ được thực thi ngay lập tức. Bạn biết nó đang chạy khi một banner cảnh báo nhỏ xuất hiện, nói “Chạy mã”, và nó cập nhật để nói “Mã đã hoàn thành” khi hoàn thành.

Gán Hình Ảnh

Một cách tương tác hơn để chạy mã là chèn một hình ảnh và gán cho nó chức năng. Phương pháp này thân thiện hơn, vì bạn đặt nút trên trang tính và cho phép mọi người nhấp chuột thay vì đi qua thanh công cụ.

Để chèn hình ảnh, hãy nhấp vào tùy chọn “Chèn” trong thanh menu, di chuột qua tùy chọn “Hình ảnh”, sau đó chọn “Hình ảnh trên các ô”. Hãy đảm bảo chọn tùy chọn “Hình ảnh trên các ô”. Nếu bạn chọn “Hình ảnh trong ô”, bạn sẽ không thể gán một đoạn mã cho nó.

Nếu bạn có một hình ảnh sẵn sàng, hãy chọn nó. Nếu không, chúng ta hãy chỉ tìm kiếm một biểu tượng làm mới từ Google tìm kiếm hình ảnh. Cửa sổ chèn hình ảnh sẽ đề xuất tùy chọn này nếu bạn nhấp vào tab “Tìm kiếm hình ảnh trên Google”.

Sau khi bạn đã chèn hình ảnh, hãy nhấp vào hình ảnh đó để chọn nó. Tìm 3 dấu chấm ở phía trên cùng bên phải của hình ảnh. Khi bạn nhấp vào các dấu chấm này, một menu sẽ hiển thị cho bạn tùy chọn “Gán một đoạn mã”.

Trong cửa sổ gắn kết hiện ra, hãy chỉ đơn giản nhập tên của hàm bạn muốn chạy khi ai đó nhấp vào hình ảnh này. Trong trường hợp của chúng ta, nó sẽ là “generateTableOfContents”.

Bây giờ khi bạn đã cấu hình tất cả mọi thứ, đoạn mã sẽ chạy mỗi khi ai đó nhấp vào hình ảnh. Để hiển thị lại các dấu chấm hoặc để điều chỉnh kích thước hình ảnh, nhấp chuột phải vào hình ảnh và bạn sẽ thấy các tùy chọn.

Sau vài chỉnh sửa kích thước hình ảnh, một số điều chỉnh vị trí và thêm một số văn bản như hướng dẫn, bạn có thể làm cho nó thực sự dễ hiểu cho bất kỳ ai. Tôi đã đặt nút của mình bên cạnh danh sách và đã đặt hướng dẫn bên phải của nó. Đây là cách tôi đã tạo một trong số riêng tôi:

tocImageButtonDemo

Bây giờ, bạn có một cách dễ dàng để tạo và cập nhật bảng chú thích cho bất kỳ trang tính nào bạn muốn. Mọi thứ bạn cần là đoạn mã “generateTableOfContents()” và một trang tính / tab TOC được tạo trong trang tính bạn muốn thêm nó. Trong hướng dẫn tiếp theo của chúng tôi về bảng chú thích, chúng tôi sẽ đào sâu vào việc tự động hóa trải nghiệm để không cần bất kỳ nhấp chuột thủ công nào để duy trì nó.

Tìm kiếm các hướng dẫn kỹ thuật và mẹo trên Crawlan.com.

Related posts