2017-11-11 17 views
0

私は仕事のために作成している非常に大きなGoogleシート文書を持っています。別のHTMLファイルからサイドバーを作成する短いスクリプトを書いています。次のようにスクリプトは次のとおりです。サイドバーからGoogleシートの特定の行にリンクする方法

function onOpen() { 
    SpreadsheetApp.getUi() 
    .createMenu('MaintainRegistry') 
    .addItem('GenerateContractTemplate', 'generateContractTemplate') 
    .addToUi(); 
    SpreadsheetApp.getUi() 
.createMenu('Sidebar').addItem('Open', 'openSidebar').addToUi(); 
    SpreadsheetApp.getUi() 
.createMenu('Sidebar').addItem('Open', 'openSidebar').addToUi(); 
} 

機能は次のとおりです。

function openSidebar() { 
var html = HtmlService.createHtmlOutputFromFile('index'); 
SpreadsheetApp.getUi().showSidebar(html); 
} 

とシンプルなHTMLは次のとおりです。

<!DOCTYPE html> 

<head> 
<link rel="stylesheet" 
href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0- 
alpha.6/css/bootstrap.min.css" integrity="sha384- 
rwoIResjU2yc3z8GV/NPeZWAv56rSmLldC3R/AZzGRnGxQQKnKkoFVhFQhNUwEyJ" 
crossorigin="anonymous"> 


<style type = "text/css"> 

button { 
width: 150px; 
margin: 0 auto; 
} 

#header { 
background-color: rgb(47,129,183); 
margin-bottom: 20px; 
padding: 5px; 
color: white; 
text-align: center; 
} 



</style> 

</head> 



<body> 

<div id="header"> 
<h1> Index </h1> 
</div> 

<div class="text-center"> 

<p> 
<button type="button" class="btn btn-primary">Hotel name</button> 
</p> 


<p> 
<button type="button" class="btn btn-primary">Periods</button> 
</p> 

<p> 
<button type="button" class="btn btn-primary">Contract template</button> 
</p> 

<p> 
<button type="button" class="btn btn-primary">Non renewals</button> 
</p> 

</div> 

</body> 

</html> 

基本的に、これは単純ですサイドバーと私はボタンをしたいユーザーをスプレッドシートの特定の場所に移動させます。 60以上の列がありますので、ユーザーが「ホテル名」をクリックすると、たとえば列AEなどにそれらを導きます。

どうすればこのことができますか?リンクの中で何を参照すればいいのかわからないし、明らかに新しいページを開くことも望ましくない。右の列にまっすぐスキップする。

答えて

0

これらをgsファイルに追加する。配置する位置のシート名と行と列を変更します。

function hotel(){ 
var ss=SpreadsheetApp.getActiveSpreadsheet() 
var s=ss.getSheetByName("Sheet1") 
var row=s.getActiveCell().getRow() 
var column=12 
s.getRange(row, column).activate() 
} 
function periods(){ 
var ss=SpreadsheetApp.getActiveSpreadsheet() 
var s=ss.getSheetByName("Sheet1") 
var row=s.getActiveCell().getRow() 
var column=13 
s.getRange(row, column).activate() 
} 
function contracttemplate(){ 
var ss=SpreadsheetApp.getActiveSpreadsheet() 
var s=ss.getSheetByName("Sheet1") 
var row=s.getActiveCell().getRow() 
var column=14 
s.getRange(row, column).activate() 
} 
function nonrenewals(){ 
var ss=SpreadsheetApp.getActiveSpreadsheet() 
var s=ss.getSheetByName("Sheet1") 
var row=s.getActiveCell().getRow() 
var column=15 
s.getRange(row, column).activate() 
} 

jqueryへの参照を追加しました。ボタンをユニークなIDに変更し、スクリプトを追加してボタンのクリックを処理し、新しい機能を呼び出しました。

<!DOCTYPE html> 
<html> 
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"> 
</script> 
<head> 
<link rel="stylesheet" 
href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0- 
alpha.6/css/bootstrap.min.css" integrity="sha384- 
rwoIResjU2yc3z8GV/NPeZWAv56rSmLldC3R/AZzGRnGxQQKnKkoFVhFQhNUwEyJ" 
crossorigin="anonymous"> 

<style type = "text/css"> 
button { 
width: 150px; 
margin: 0 auto; 
} 
#header { 
background-color: rgb(47,129,183); 
margin-bottom: 20px; 
padding: 5px; 
color: white; 
text-align: center; 
} 
</style> 
</head> 
<body> 
<div id="header"> 
<h1> Index </h1> 
</div> 
<div class="text-center"> 
<p> 
<input id="Button1" button type="button" class="btn btn-primary" 
value="Hotel name"> 
</p> 
<p> 
<input id="Button2" button type="button" class="btn btn-primary" 
value="Periods"> 
</p> 
<p> 
<input id="Button3" button type="button" class="btn btn-primary" 
value="Contract template"> 
</p> 
<p> 
<input id="Button4" button type="button" class="btn btn-primary" value="Non 
renewals"> 
</p> 
</div> 
</body> 
    <script> 
$("#Button1").on('click',function(){ 
    google.script.run.hotel() 
    google.script.host.editor.focus() 
}); 
    $("#Button2").on('click',function(){ 
    google.script.run.periods() 
    google.script.host.editor.focus() 
}); 
$("#Button3").on('click',function(){ 
    google.script.run.contracttemplate() 
    google.script.host.editor.focus() 
}); 
    $("#Button4").on('click',function(){ 
    google.script.run. nonrenewals() 
    google.script.host.editor.focus() 
}); 
    </script> 
</html> 
+0

これはすばらしいです!本当にありがとう:)私が作っていたほんの少しの改正 - ユーザがすでに入っている行を参照できる方法はありますか?たとえば、ユーザーが行450にいる場合、ボタンをクリックすると、関連する列にそれらを送信する必要があります。しかし、私は実際にスプレッドシートのトップに戻すことを望んでいませんが、これは少し生産的ではないようです。あなたの助けをもう一度ありがとう! – DaveB1

+0

上記のスクリプトをアクティブな行に変更しました。これで問題が解決した場合は、回答の左側にあるチェックマークをクリックして回答を承認してください。ありがとう。 –

+0

素晴らしい!とてもうれしい – DaveB1

関連する問題