gpt4 book ai didi

google-apps-script - 方法 "moveActiveSheet"在 Google Apps 脚本 (JavaScript) 中无法按预期工作

转载 作者:行者123 更新时间:2023-12-03 01:12:00 31 4
gpt4 key购买 nike

我正在使用 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中工作表数据的顺序不对应。

为什么这不起作用?

最佳答案

几天前我遇到了同样的问题,我找到了一种方法让它可以使用此代码:

在此示例中,profSheets 是按我想要的方式排序的工作表名称数组。

  var pos = ss.getNumSheets();
for(var s=0 ; s < profSheets.length ; s++){
var sh = ss.setActiveSheet(ss.getSheetByName(profSheets[s]));
SpreadsheetApp.flush();
Utilities.sleep(200);
ss.moveActiveSheet(pos);
SpreadsheetApp.flush();
Utilities.sleep(200);
}

我将应位于第一个位置的工作表放置到最后一个位置,然后将下一个工作表放置到最后一个位置,依此类推,直到列表中的姓氏。最后,第一个实际上是第一位的。 (我希望这是可以理解的;-)

关于google-apps-script - 方法 "moveActiveSheet"在 Google Apps 脚本 (JavaScript) 中无法按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36667862/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com