【发布时间】:2016-04-16 18:13:24
【问题描述】:
我正在使用 Google Apps 脚本编写脚本。
目标:允许用户按每张工作表名称中的日期对 Google 电子表格中的工作表/标签进行排序。
function sorter() {
var sp = SpreadsheetApp.getActiveSpreadsheet();
var sheets = sp.getSheets();
var sheet_metadata = get_and_sort_sheet_metadata(sheets)
for( var j = 0; j < sheet_metadata.length; j++ ) {
sp.setActiveSheet(sp.getSheetByName(sheet_metadata[j].name));
sp.moveActiveSheet(j + 1);
}
}
这是 sheet_metadata 内容的示例:
[{date=false, name=A, index=1}, {date=false, name=B, index=2}, {date=1.391058E12, name=ARCHIVE: xname0 name: 1/30/2014 ID:145952, index=8}, {date=1.42173E12, name=ARCHIVE: zname1 name: 1/20/2015 ID:1459527232, index=7}, {date=1.4543892E12, name=ARCHIVE: wname3 name: 2/2/2016 ID:145952723299, index=6}, {date=1.4544756E12, name=ARCHIVE: dname4 name: 2/3/2016 ID:145952723266, index=5}, {date=1.454562E12, name=ARCHIVE: qname5 name: 2/4/2016 ID:1459500, index=4}, {date=1.4546484E12, name=ARCHIVE: qname6 name: 2/5/2016 ID:1459500, index=3}]
日期值是 .getTime() 的结果。名称是工作表的名称。索引是工作表的原始索引。此数组中对象的顺序是工作表的顺序。
sheet_metadata 中的对象总是按正确的顺序排列。但是,for 循环(见上文)未能以正确的顺序放置工作表。
换句话说,工作表最终的顺序与 sheet_metadata 中工作表数据的顺序不对应。
为什么这不起作用?
【问题讨论】:
标签: google-apps-script google-sheets