Tôi có một bảng tính Google phức tạp với nhiều trang tính và mục lục. Có cách nào để tạo liên kết đến tên trang tính để chỉ với một lần nhấp, người ta có thể truy cập trực tiếp vào trang tính không? Đó là: nhấp vào ô "sheet5" chuyển sang sheet5?
Tôi có một bảng tính Google phức tạp với nhiều trang tính và mục lục. Có cách nào để tạo liên kết đến tên trang tính để chỉ với một lần nhấp, người ta có thể truy cập trực tiếp vào trang tính không? Đó là: nhấp vào ô "sheet5" chuyển sang sheet5?
Câu trả lời:
Khi bạn chuyển sang một trang tính khác trong Bảng tính Google, hãy chú ý đến URL trong thanh địa chỉ của trình duyệt. Ở cuối URL, bạn sẽ thấy một cái gì đó như:
#gid=0
Số này thay đổi khi bạn chuyển đổi trang tính và chỉ định trang tính nào sẽ hiển thị. Sao chép toàn bộ URL và tạo một siêu liên kết đến nó với công thức này:
=hyperlink("https://docs.google.com/spreadsheet/ccc?key=0AsaQpHJE_LShcDJ0dWNudHFZWVJqS1dvb3FLWkVrS0E#gid=0", "LINK TEXT")
Tôi đã suy nghĩ về câu hỏi này rất nhiều kể từ lần đầu tiên tôi viết câu trả lời này và tôi đã đưa ra một giải pháp liên quan đến một kịch bản.
Với sự mở bảng tính, nhấp vào Công cụ trình đơn, sau đó biên tập Script ... . Dán tất cả mã này vào trình chỉnh sửa:
function onOpen(event) {
var ss = event.source;
var menuEntries = [];
menuEntries.push({name: "Go to sheet...", functionName: "showGoToSheet"});
ss.addMenu("Tasks", menuEntries);
}
function showGoToSheet() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var allsheets = ss.getSheets();
var app = UiApp.createApplication();
app.setTitle("Go to sheet...").setWidth(800).setHeight(600);
var table = app.createFlexTable();
table.setCellPadding(5).setCellSpacing(0);
var goToSheetClick = app.createServerHandler('handleGoToSheetClick');
var widgets = [];
for (var i = 0; i < allsheets.length; i++) {
var sheet_name = allsheets[i].getName();
widgets[i] = app.createHTML(sheet_name).setId(sheet_name).addClickHandler(goToSheetClick);
table.setWidget(i, 1, widgets[i])
}
var panel = app.createSimplePanel();
panel.add(table);
app.add(panel);
ss.show(app);
}
function handleGoToSheetClick(e) {
var sheet_name = e.parameter.source;
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName(sheet_name);
sheet.activate();
var app = UiApp.getActiveApplication();
app.close();
return app;
}
Lưu tập lệnh, sau đó làm mới bảng tính. Sau một hoặc hai giây, một menu mới, Nhiệm vụ , sẽ xuất hiện sau Trợ giúp . Có một mục trong menu này: Chuyển đến trang tính ...
Mục menu này sẽ mở một bảng điều khiển với danh sách tên của tất cả các trang tính trong bảng tính hiện tại. Nó không giống như vậy, nhưng nếu bạn nhấp vào một trong các tên trang tính, trang tính đó sẽ xuất hiện ở phía trước.
Để trả lời cho một câu hỏi khác, tập lệnh này đã được cải thiện để bao gồm chế độ xem và nút có thể cuộn.
gid=7
.
gid=7
thì nó sẽ là trang thứ tám từ bên trái.
gid
Sheet5 là gì , chỉ bằng tay. Nếu vị trí của nó thay đổi, nó sẽ gid
thay đổi và bạn không còn có thể liên kết với nó một cách đáng tin cậy nữa.
Cách tốt nhất để làm điều này theo kinh nghiệm của tôi là buộc một chức năng vào một nút / hình ảnh. Hạn chế duy nhất là bạn không thể truyền tham số cùng với tập lệnh được gán cho nút. Do đó, bạn sẽ cần tạo một hàm cụ thể cho từng điều hướng nhưng chúng có thể gọi là một tệp trong một tập lệnh.
Các bước:
Tạo một hình ảnh (Chèn -> hình ảnh) và định kiểu nó theo sở thích của bạn
Tạo một chức năng tùy chỉnh với các mục sau:
function showSheetByName(Name) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName(Name);
SpreadsheetApp.setActiveSheet(sheet);
}
và sau đó là một chức năng cụ thể cho nút của bạn
function showSheet5() {
showSheetByName("Sheet5");
}
Cuối cùng gán chức năng này cho nút của bạn
Assign Script...
showSheet5
Bây giờ bạn có thể nhấp vào nút của mình và điều hướng đến "Trang tính 5". Điều này cũng có thể được sửa đổi để đi đến một khu vực cụ thể của tờ.
var sheet = ss.getSheetByName(ss.getActiveCell().getValue());
- sau đó bạn có thể đặt "nút" trên một vị trí cố định trên màn hình và gắn nhãn "Chuyển đến trang tính trong ô hiện tại" và gán cho nó "showSheetByName" (hiện không cần tham số). Để sử dụng, chỉ cần tô sáng ô bằng tên trang tính (ví dụ Trang tính 5) và nhấp vào nút. Đó là một chút gián tiếp nhưng hoạt động vì nhấp vào nút không xóa tiêu điểm khỏi ô được tô sáng.