【问题标题】:In Google Apps Script Is there a way to reorder sheets/tabs in standalone projects?在 Google Apps 脚本中有没有办法在独立项目中重新排序工作表/选项卡?
【发布时间】:2021-09-27 10:01:52
【问题描述】:

我正在开发一个 Google Apps 脚本,该脚本从远程源提取 API 数据,然后将其写入 Google 表格电子表格中的各个选项卡。 Apps Script 项目没有绑定到电子表格,所以我们使用这段代码来获取特定的电子表格。

let ss = SpreadsheetApp.openById(sheetId)

我想确保此电子表格中的所有选项卡都按正确的从左到右顺序排列。有没有办法在独立的 GAS 项目中做到这一点?

我知道moveActiveSheet()这个函数可以移动活动工作表,但是由于这是一个独立的项目,我不相信我可以得到活动工作表,因为我没有加载初始工作表:

var ss = SpreadsheetApp.getActiveSpreadsheet();

正确吗?有没有办法在独立的 GAS 项目中使用 moveActiveSheet?

【问题讨论】:

标签: google-apps-script google-sheets


【解决方案1】:

补充 MattKing 已经很好的答案。

如果您的工作表标签被命名为日期(例如 2018 年 12 月2019 年 1 月2018 年 3 月)并且想要根据在日期,添加此功能。 (这在某些电子表格中可能会派上用场)

function dateCompare(a, b) {
  var dateA = new Date(a);
  var dateB = new Date(b);
  if (dateA.getTime() < dateB.getTime())
    return -1;
  else if (dateA.getTime() > dateB.getTime())
    return 1;
  return 0;
}

并将其传递给sort 函数。

sheetnames.sort(dateCompare);

默认排序:

自定义日期排序:

【讨论】:

  • 谢谢!完全有道理,而且很有可能这是用例!我还在学习中......
  • 没问题@MattKing,您的答案已经实际有效,但是由于 OP 无法提供工作表名称的示例值,因此它们可能是日期,因此我提供了而不是修改您的答案一个选项,其中 OP 只会复制粘贴这个选项,并且应该对选项卡进行排序,以防万一名称是日期。
【解决方案2】:

我对编码有点陌生,所以可能有一种更简单的方法可以做到这一点。但我刚刚运行了这个,它在这个 sample sheet i created for this question 上工作。

function sheetOrder() {
  var ss = SpreadsheetApp.openById('1-4cztjNX7QlFCFFDoxk5PYm36Tx37jtlAiMbH6w2ztE');
  var sheetnames = new Array();
  ss.getSheets().forEach(function (each) { sheetnames.push(each.getName()) });
  sheetnames.sort();
  for (let i = 0; i < sheetnames.length; i++) {
    ss.setActiveSheet(ss.getSheetByName(sheetnames[i]));
    ss.moveActiveSheet(i + 1);
  }
}

【讨论】:

  • 谢谢,这回答了我的问题,并向我展示了如何在独立项目中使用 moveActiveSheet。
猜你喜欢
  • 1970-01-01
  • 2019-09-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-01
  • 2021-05-24
  • 2010-09-19
相关资源
最近更新 更多