【问题标题】:Google Script to Create Tab Names Based on List基于列表创建选项卡名称的 Google 脚本
【发布时间】:2021-12-23 21:25:56
【问题描述】:

我对 Google Apps 脚本非常陌生,但我正在努力创建一个电子表格函数,该函数将根据名称列表(在单元格 C6:C 中)创建新选项卡。某些单元格中可能没有值,因此希望将这些单元格排除在创建新选项卡之外。

该功能按计划工作,但在运行脚本后,新选项卡在列表中的名称后以 (1)、(2)、(3)、... 等命名。例如,如果列表中的第一个名称是“第一个选项卡”,则在我当前的脚本运行后,新选项卡将被命名为“第一个选项卡 (1)”。

我不确定是什么导致选项卡名称中的数字,所以任何帮助将不胜感激!

作为参考,单元格 B4 包含列表中应从中创建新选项卡的名称数

'''

function createProjectTabs() {

var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];
var range = ss.getRange("C6:C");
var values = range.getValues().filter(String);
var total = ss.getRange('B4').getValue();

for(var k=0; k < total; k++){
  try{
    
    var tabName = range[k][0];
      ss.insertSheet(tabName);}
  catch(err){
    
    tabName = values [k][0]+ " " + k;
    ss.insertSheet(tabName);}
  }
  }

【问题讨论】:

  • 很有可能添加了(1)(2) 等,因为已经有一个带有“tabName”的工作表。你想如何处理这种情况?

标签: javascript google-apps-script google-sheets


【解决方案1】:
function createNonDuplicateProjectTabs() {
  var ss = SpreadsheetApp.getActive();
  const shts = ss.getSheets().map(s => s.getName());
  var sh = ss.getSheets()[0];
  var vs = ss.getRange(6,3,sh.getLastRow()-5,1).getValues().flat();
  vs.forEach(n => {
    if(!~shts.indexOf(n)) {
      ss.insertSheet(n)
    }
  });
}

【讨论】:

    猜你喜欢
    • 2023-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-08
    • 2018-10-16
    • 2016-03-03
    相关资源
    最近更新 更多