【发布时间】:2019-12-11 17:54:21
【问题描述】:
我有一个 Google 表格工作簿,其中有多个按日期命名的工作表。我正在尝试使用 Google Apps 脚本来 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' 是一个单列命名范围,其中包含日期 > 今天的工作表的工作表 ID(例如 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 步不能按预期工作的指导将不胜感激。谢谢!
【问题讨论】:
-
究竟什么“不起作用”?脚本失败并出现错误,如屏幕顶部的红色条所示?脚本运行良好,一些工作表移动,但并非所有工作表都按预期移动?
-
抱歉,不,没有生成错误并且脚本完成,但它对工作表的顺序没有影响 - 没有按预期移动
标签: google-apps-script google-sheets