あなたはスクリプトから用紙選択を検出することはできませんが、スプレッドシートでアクティブシートを選択する方法を変更することができます。 サイドバーを使用すると、特に多くのシートがある場合は、通常の選択モードよりも使いやすくなります。
以下のコードは、私がたくさん使っているサイドバーツールの簡略版です。私は不要な項目をすべて削除しました(少なくとも私はそう願っています!)、あなたのコードを統合して現在の日付にジャンプします。
それは私がそれをたくさん使用しますが、私はそれがこの簡単なスクリプトで非常に有用ではありません認めるはるかに大きなスクリプトの一部ですので、それは私がそれを削除するにはあまりにも怠惰だった... jqueryのを使用しています:)
全体のコードはかなり長いですが、理解するのは非常に簡単です。 this public copyのコピーから開始することもできます。
code.gs
function onOpen() {
SpreadsheetApp.getUi()
.createMenu("Authorize")
.addItem('Authorize script', 'authorize')
.addToUi();
showSidebar();
}
function authorize(){
showSidebar();
}
function showSidebar() {
var ui = HtmlService.createTemplateFromFile('Sidebar')
.evaluate()
.setSandboxMode(HtmlService.SandboxMode.IFRAME)
.setTitle('Page selection');
SpreadsheetApp.getUi().showSidebar(ui);
}
function createList(){
var ssProfs_envois = SpreadsheetApp.getActiveSpreadsheet();
var list = [];
var sh, sheetName;
for(var s=0;s<ssProfs_envois.getNumSheets();s++){
sh = ssProfs_envois.getSheets()[s];
sheetName = sh.getName();
list.push(sheetName);
}
var message = '';
var color;
message+= '<table style="border-collapse:collapse;font-family:arial,sans;font-size:9pt;" border = 1 >';
message+='<tr valign="top" cellpadding=5>'
for(var n=0;n<list.length;n++){
color="#000"
message+='<tr><td align="center"> '+(n+1)+' </td><td>'+
'<input type="button" id="button'+n+'" value="'+list[n]+'" style="color:'+color+'; width:200px;font-size:10pt;white-space:normal;" onclick="selectSheet(\''+n+'\')"/></td></tr>';
}
message+='</table>';
return message;
}
function showSheetGS(sheetNumber){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[sheetNumber].activate();
jumpToDate(sheet);
}
function jumpToDate(sheet) {
var range = sheet.getRange("A1:A");
var values = range.getValues();
var day = 24*3600*1000;
var today = parseInt((new Date().setHours(0,0,0,0))/day);
var ssdate;
for (var i=0; i<values.length; i++) {
try {
ssdate = values[i][0].getTime()/day;
}
catch(e) {
}
if (ssdate && Math.floor(ssdate) == today) {
sheet.setActiveRange(range.offset(i,0,1,1));
break;
}
}
}
Sidebar.html
<?!= HtmlService.createHtmlOutputFromFile('Stylesheet').getContent(); ?>
<!-- Below is the HTML code that defines the sidebar element structure. -->
<div class="sidebar branding-below">
<!-- The div-table class is used to make a group of divs behave like a table. -->
<h3>Available tabs,<br><span style="color:#070"> Green typeface = </span>sheet already selected</h3>
<div id="sidebarList">
<br><br><br>...wait a moment,<br>list is being created.
<p>If nothing happens then please authorize the script using the menu.</p>
</div>
<!-- Enter sidebar bottom-branding below. -->
<div class="sidebar bottom">
<img alt="Add-on logo" class="logo" width="25"
src="http://insas.cluster006.ovh.net/serge/apps-script_2x.png">
<span class="gray branding-text">Sheet Select tool<br>        © SG 2017</span>
<?!= HtmlService.createHtmlOutputFromFile('SidebarJavaScript').getContent(); ?>
SidebarJavaScript.html
<script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/jquery-ui.min.js"></script>
<script>
/**
* Run initializations on sidebar load.
*/
populateEncodeLocal();
function populateEncodeLocal(){
//console.log('populateEncode');
google.script.run.withSuccessHandler(populateList).createList();
}
function selectSheet(sheetNumber){
console.log(sheetNumber);
google.script.run.withSuccessHandler(showSheet(sheetNumber)).showSheetGS(sheetNumber);
}
function showSheet(n){
console.log("showSheet"+n);
$('#button'+n).css('font-size','14pt').css('color','#070');
}
function populateList(data){
//console.log(data);
$('#sidebarList').html(data);
}
</script>
Stylesheet.html
<!-- This CSS package applies Google styling; it should always be included. -->
<link rel="stylesheet" href="https://ssl.gstatic.com/docs/script/css/add-ons.css">
<link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/themes/smoothness/jquery-ui.css">
<style>
html, body {
max-width: 100%;
overflow-x: hidden;
}
#sidebarList {
width:270px;
height:600px;
overflow:auto;
}
input[type="button"] {
height: 23px;
width: 270px;
padding-left: 8px;
line-height: 24px;
}
label {
font-weight: bold;
}
.branding-below {
bottom: 3px;
top: 0px;
padding-left:0px;
}
.branding-text {
left: 7px;
position: relative;
top: 3px;
}
.logo {
vertical-align: middle;
}
.width-100 {
width: 100%;
box-sizing: border-box;
-webkit-box-sizing : border-box;
-moz-box-sizing : border-box;
}
#sidebar-value-block,
#dialog-elements {
background-color: #eee;
border-color: #eee;
border-width: 5px;
border-style: solid;
}
#sidebar-button-bar,
#dialog-button-bar {
margin-bottom: 10px;
}
.div-table{
display:table;
width:280px;
height:500px;
background-color:#eee;
border:1px solid #666666;*/
border-spacing:2px;
font-size:8,5pt;
}
.div-table-row{
display:table-row;
width:auto;
clear:both;
}
.div-table-td, .div-table-th {
display:table-cell;
width:auto;
background-color:rgb(230, 230, 230);
padding-left:4px;
padding-right:4px;
}
.div-table-th {
/*float:left;*/
font-weight: bold;
}
.div-table-td {
/*float:right;*/
}
div.ui-datepicker{
padding:0px;
font-size:90%;
width: 250px;
heigth: 90px;
}
th {
border-bottom: 0px solid #acacac;
font-weight: normal;
padding: 1px 1px 0;
text-align: left;
}
td {
border-bottom: 0px solid #ebebeb;
padding: 1px 0;
}
}
</style>
この場合「大」とはどういう意味ですか?また、ドメイン内のビジネス/教育用のGoogleアカウントを使用していますか?または通常のGmailアカウントですか? –