У меня есть книга Google Sheets с несколькими листами, названными по дате. Я пытаюсь использовать скрипт Служб Google, чтобы: 1) переупорядочить эти листы в обратном хронологическом порядке, и 2) затем переместить все листы с датами в будущем в конец рабочей книги, поэтому первый лист всегда будет с самым последнимпрошлая дата.
Шаг 1 отлично работает со следующим кодом:
function sortGoogleSheets() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
// Store all the worksheets in this array
var sheetNameArray = [];
var sheets = ss.getSheets();
for (var i = 0; i < sheets.length; i++) {
sheetNameArray.push(sheets[i].getName());
}
sheetNameArray.sort().reverse();
// Reorder the sheets.
for( var j = 0; j < sheets.length; j++ ) {
ss.setActiveSheet(ss.getSheetByName(sheetNameArray[j]));
ss.moveActiveSheet(j + 1);
}
}
Но шаг 2 не работает, чтобы затем переместить листы с будущей датой в конец. Ошибка не генерируется, но порядок листов не изменяется. «FutureSheetIDs» - это именованный диапазон из одного столбца, содержащий идентификаторы листов (например, 938739529, 532578283 и т. Д.) Листов с датами> сегодня, т. Е. Для перемещения в конец рабочей книги.
function resortFutureSheets() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var pos = ss.getNumSheets();
var FutureSheets = ss.getRangeByName("FutureSheetIDs");
for(var s=0 ; s < FutureSheets.length ; s++){
var sh = ss.setActiveSheet(ss.getSheetByID(FutureSheets[s]));
SpreadsheetApp.flush();
Utilities.sleep(200);
ss.moveActiveSheet(pos);
SpreadsheetApp.flush();
Utilities.sleep(200);
}
}
Любое руководство о том, почему шаг 2 не работает, как ожидалось, будет высоко ценится. Спасибо!