2016-09-29 5 views
1

Я хочу, чтобы моя таблица открывалась на определенном листе. Я пробовал следующее, но он все еще просто открывает первый лист.Как перейти непосредственно к определенному листу при открытии электронной таблицы google?

function setActiveSheetToday(){ 
    var date = new Date(); 
    var sheet = getSheetByDate(date); //custom function that returns sheet object 
    var SS = sheet.getParent(); 
    SS.setActiveSheet(sheet); 
} 

Затем я создаю триггер onOpen.

ScriptApp.newTrigger('setActiveSheetToday').forSpreadsheet(SS_ID).onOpen().create(); 

Когда я открываю электронную таблицу, она по-прежнему открывается на первом листе. Какие-либо предложения?

EDIT

Я думаю, что я нашел причину, почему она не работает здесь: https://developers.google.com/apps-script/guides/bound#special_methods

Так что, видимо, работает только для ограниченных скриптов ..

+1

Нет метода с именем 'getSheetByDate()' –

ответ

0

Вы проверили объект, ваш лист?

Вы можете попробовать эту функцию для простого тестирования:

function onOpen() { 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var sheet = ss.getSheetByName('Sheet1'); 
    ss.setActiveSheet(sheet); 
} 

грима листа под названием «Лист1», перейти на любой другой лист и перезагрузите страницу.

для вашего кода я предлагаю тест:

Logger.log(sheet.getName()); 
+0

Функция 'getSheetByDate()' работает, это не проблема. Я думаю, вы предполагаете, что я использую скрипт, связанный с электронной таблицей, это не тот случай, я использую независимый файл сценария. Вот почему я использую 'forSpreadsheet (SS_ID) .onOpen()'. – lonewolf

1

Вы можете сделать страницу, которую вы хотите открыть на первом листе. Просто добавьте SS.moveActiveSheet(1); в вашу setActiveSheetToday() функцию.

В качестве альтернативы, активация листа из связанного скрипта изменяет фокус так, как вы хотите. Выполнение его из отдельного файла сценария не появляется.

+0

Перемещение листа на первое место на самом деле не является жизнеспособным вариантом в моем проекте. Есть ли способ связать скрипт с электронной таблицей с кодом? В противном случае мне придется вручную добавить скрипт в каждую таблицу. – lonewolf

+0

Если вы копируете электронную таблицу со связанным скриптом, тогда связанный скрипт будет копироваться вместе с ней, но я не уверен в возможности изменить ее из сценария, работающего в другом месте. Это было бы немного неуклюже, но вы могли бы иметь электронную таблицу с функцией 'onOpen()', которая активирует лист, названный в скрытом листе, а затем строит все, что вы делаете на копии этой электронной таблицы, и напишите имя листа для открытия в соответствующем месте. Было бы намного проще просто переместить лист на передний план, хотя - что такое порядок листов, влияющий на то, что вы не хотите этого делать? – dmusgrave