Я написал скрипт Google, который помещает листы (т. Е. Вкладки) в таблицу Google в альфа-порядке.
Проблема в том, что горизонтальный список вкладок внизу страницы электронной таблицы не отображается (слева направо) в альфа-порядке.
Вкладка, которая начиналась как «firstSheet», обычно заканчивается после того, как скрипт выполняется где-то посередине «пакета», и оттуда начинается алфавитизация и «оборачивается» до последней вкладки.в альфа-списке как раз перед этим.(Я говорю «в общем», потому что иногда он появляется полностью слева - в зависимости от того, с чего он начинался.)
Я должен также упомянуть, что скрипт связан с электронной таблицей и запускаетсяПользователь как пользовательский элемент меню.
Базовый сценарий, который я использую, поставляется с подсказкой @ Serge-insas ( Метод "moveActiveSheet" не работает должным образом в скрипте Google Apps (JavaScript) ).И единственное реальное изменение, которое я сделал в этом сценарии, - это добавление строки для отображения первой альфа-вкладки в конце процесса.
Я также добавил боковую панель ко всему делу в качестве обходного пути кПроблема «обтекания», упомянутая выше, так как я обнаружил, что есть щелчок правой кнопкой мыши по «Обновить» для боковых панелей, и он перезагружает электронную таблицу, и эта перезагрузка отображает вкладки в правильном порядке альфа слева направо.
Сценарий меню
function onOpen() {
var ui = SpreadsheetApp.getUi();
ui.createMenu('Custom')
.addItem('Sort Sheets', 'sortSheets')
.addToUi();
function
function sortSheets () {
var html = HtmlService.createHtmlOutputFromFile('index')
.setTitle('Read Me')
.setWidth(300);
SpreadsheetApp.getUi()
.showSidebar(html); var ss = SpreadsheetApp.getActive();
var sheets = ss.getSheets();
var firstSheet = sheets[0].getName();
var numSheets = ss.getNumSheets();
var sheetNameArray = [];
for (var i = 0; i < numSheets; i++) {
sheetNameArray.push(sheets[i].getName());
}
var sheetNameArray = sheetNameArray.sort();
for(var s=0 ; s < numSheets ; s++){
ss.setActiveSheet(ss.getSheetByName(sheetNameArray [s]));
SpreadsheetApp.flush();
Utilities.sleep(50);
ss.moveActiveSheet(numSheets);
SpreadsheetApp.flush();
Utilities.sleep(50);
}
ss.setActiveSheet(ss.getSheetByName(firstSheet));
}
html
<!DOCTYPE html>
<html>
<head>
<base target="_top">
</head>
<body>
<center><font color = red>IMPORTANT<br><br>
Once the routine has run (i.e., the tabs stop moving around) and you see the "saved" notification at the top of the page...<br><br>
Right click anywhere in this sidebar. Then select the "reload" menu item to reset sheet tabs in alpha order.</center></font> <br> <br>
</body>
</html>
Итак, мой вопрос: есть ли способ сделать так, чтобы перезагрузка происходила помимо боковой панели?Т.е. есть ли какая-нибудь команда, которую я могу использовать в своем сценарии, вместо того, чтобы использовать довольно запутанный подход боковой панели?Тот факт, что в боковой панели есть функция перезагрузки, дает мне надежду на программный способ ее достижения, хотя, просматривая документацию по Google GAS, я не смог ее найти.