如果数组中不存在实际的选项卡命名,我将尝试删除所有选项卡。
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表格脚本中以编程方式完成此过程?
答案 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
}
}
}