Google表格脚本编辑器-如果在数组中找不到标签名称,则可以删除多个标签

时间:2019-04-10 18:23:42

标签: google-apps-script google-sheets

如果数组中不存在实际的选项卡命名,我将尝试删除所有选项卡。

Sample data - May
Sample Data - April

我提供了两个样本来说明每月如何获取原始数据。在我的代码中,我有API拉动过程,该过程每月自动执行一次。我在下面的代码在这里获取了这些原始数据,并根据“供应商”列将其拆分为单独的标签:

function SpreadProduct() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = SpreadsheetApp.getActiveSheet();
  var values = sheet.getDataRange().getValues();
  // remove header row values from array
  values.shift();

  // data structure
  var ds = {};
  values.forEach(function(row) {
    var ven = row.shift(); // 1st col
    var product = row.shift(); // 2nd col

    ds[ven] = ds[ven] || {};
    ds[ven][product] = ds[ven][product] || [];
    // set value on ds

    ds[ven][product] = [parseInt(row[0]), parseInt(row[1])];
  });
  Logger.log(ds);
  // result object, for each vendor create array of rows
  // { A: [ row, row... ]... }
  var rs = {};
  Object.keys(ds).forEach(function(v) {
    rs[v] = rs[v] || [];
    Object.keys(ds[v]).forEach(function(p) {
      if (ds[v][p]) {
        rs[v].push([p, ds[v][p][0], ds[v][p][1]]);
      } else {
        rs[v].push([p, 0, 0]);
      }
    });
  });
  Logger.log(rs);
  // write rows
  Object.keys(rs).forEach(function(v) {
    var headers = [[v, 'Product'].join(' '), 'Sales', 'leftover'];
    // insert headers into rows for writing
    rs[v].unshift(headers);
    try {
      ss.insertSheet(headers[0]);
    } catch (e) {}
    var sh = ss.getSheetByName(headers[0]);
    sh.clear();
    sh.getRange(1, 1, rs[v].length, 3).setValues(rs[v]);
  });
}

Google表格表格是上述代码的结果。

现在我m trying to delete the tab if the following month doesn没有上个月的卖家。

例如,“四月”在供应商栏中没有“苹果”,而“三月”具有“苹果”。

因此,当我计算4月的表格时,“ Apple”标签被删除了

是否可以在Google表格脚本中以编程方式完成此过程?

1 个答案:

答案 0 :(得分:0)

尝试一下:

function delTabs() {
  var ss=SpreadsheetApp.getActive();
  var shts=ss.getSheets();
  var kA=['Sheet118','Sheet119','Sheet120','Sheet121','Sheet122','Sheet123'];
  for(var i=0;i<kA.length;i++) {
    if(kA.indexOf(shts[i].getName())==-1) {
      ss.deleteSheet(shts[i]);//if not in array
    }
  }
}