回答:
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が表示されます。このメニューには1つの項目があります:シートに移動...
このメニュー項目は、現在のスプレッドシート内のすべてのシートの名前のリストを含むパネルを開きます。見た目は似ていませんが、シート名の1つをクリックすると、そのシートが前面に表示されます。
gid=7
。
gid=7
、左から8番目のシートになります。
gid
。位置が変化すると、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など)のセルを強調表示して、ボタンをクリックします。少し間接的ですが、ボタンをクリックしても強調表示されたセルからフォーカスが削除されないため機能します。