많은 시트와 목차가있는 복잡한 Google 스프레드 시트가 있습니다. 클릭 한 번으로 시트로 직접 이동할 수 있도록 시트 이름에 대한 링크를 만드는 방법이 있습니까? 즉, "sheet5"셀을 클릭하면 sheet5로 전환됩니까?
많은 시트와 목차가있는 복잡한 Google 스프레드 시트가 있습니다. 클릭 한 번으로 시트로 직접 이동할 수 있도록 시트 이름에 대한 링크를 만드는 방법이 있습니까? 즉, "sheet5"셀을 클릭하면 sheet5로 전환됩니까?
답변:
Google 스프레드 시트에서 다른 시트로 전환 할 때 브라우저 주소 표시 줄의 URL에주의하십시오. URL 끝에 다음과 같은 내용이 표시됩니다.
#gid=0
이 숫자는 시트를 전환 할 때 변경되며 표시 할 시트를 지정합니다. 전체 URL을 복사하고 다음 공식을 사용하여 하이퍼 링크를 작성하십시오.
=hyperlink("https://docs.google.com/spreadsheet/ccc?key=0AsaQpHJE_LShcDJ0dWNudHFZWVJqS1dvb3FLWkVrS0E#gid=0", "LINK TEXT")
이 답변을 처음 작성한 이후 로이 질문에 대해 많이 생각했으며 스크립트가 포함 된 솔루션을 생각해 냈습니다.
스프레드 시트를 연 상태에서 도구 메뉴를 클릭 한 다음 스크립트 편집기 ... 를 클릭하십시오 . 이 코드를 모두 편집기에 붙여 넣으십시오.
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;
}
스크립트를 저장 한 다음 스프레드 시트를 새로 고치십시오. 1-2 초 후에 새로운 메뉴 인 Tasks 가 Help 뒤에 나타납니다 . 이 메뉴에는 한 가지 항목이 있습니다 : 시트로 이동 ...
이 메뉴 항목은 현재 스프레드 시트의 모든 시트 이름 목록이있는 패널을 엽니 다. 모양이 아니지만 시트 이름 중 하나를 클릭하면 해당 시트가 맨 앞에옵니다.
gid=7
.
gid=7
있으면 왼쪽에서 8 번째 시트 여야합니다.
gid
Sheet5가 무엇인지 수동으로 찾을 수 없다는 것 입니다. 위치가 변경되면 gid
변경되며 더 이상 안정적으로 연결할 수 없습니다.
내 경험 에서이 작업을 수행하는 가장 좋은 방법은 기능을 버튼 / 이미지에 연결하는 것입니다. 유일한 단점은 버튼에 지정된 스크립트와 함께 매개 변수를 전달할 수 없다는 것입니다. 이로 인해 각 탐색에 고유 한 기능을 만들어야하지만 단일 스크립트 파일에서 호출 할 수 있습니다.
단계 :
이미지 (삽입-> 이미지)를 작성하고 원하는대로 스타일을 지정하십시오.
다음을 사용하여 사용자 정의 함수를 작성하십시오.
function showSheetByName(Name) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName(Name);
SpreadsheetApp.setActiveSheet(sheet);
}
그런 다음 버튼과 관련된 기능
function showSheet5() {
showSheetByName("Sheet5");
}
마지막으로이 기능을 버튼에 할당하십시오
Assign Script...
showSheet5
이제 버튼을 클릭하고 "Sheet5"로 이동할 수 있습니다. 시트의 특정 영역으로 이동하도록 수정할 수도 있습니다.
var sheet = ss.getSheetByName(ss.getActiveCell().getValue());
. "버튼"을 화면의 고정 된 위치에 놓을 수 있습니다 "현재 셀에 시트로 이동"레이블을 지정하고 "showSheetByName"(이제 매개 변수가 필요 없음)을 지정하십시오. 사용하려면 시트 이름 (예 : Sheet5)이있는 셀을 강조 표시하고 단추를 클릭하십시오. 약간 간접적이지만 버튼을 클릭해도 강조 표시된 셀에서 포커스가 제거되지 않기 때문에 작동합니다.