Javascript Google应用程序脚本将多个工作表合并到一个主工作表中
我有一个小的销售团队(5人,但人数正在增加),负责将销售记录到工作簿中的多个工作表中。我想运行一个脚本,将所有这些工作表合并到一个脚本中,如果可能的话,每天都要运行一个脚本 因此,这些阶段将以每天为基础 1) 从Master Daily中删除所有记录(这是为了说明单个销售表中以前数据的任何更改) 2) 循环浏览所有工作表并添加数据 共有6列,它们的顺序相同,但包含不同的数据 编辑打开,直到赏金授予 代码尝试:Javascript Google应用程序脚本将多个工作表合并到一个主工作表中,javascript,google-apps-script,google-sheets,Javascript,Google Apps Script,Google Sheets,我有一个小的销售团队(5人,但人数正在增加),负责将销售记录到工作簿中的多个工作表中。我想运行一个脚本,将所有这些工作表合并到一个脚本中,如果可能的话,每天都要运行一个脚本 因此,这些阶段将以每天为基础 1) 从Master Daily中删除所有记录(这是为了说明单个销售表中以前数据的任何更改) 2) 循环浏览所有工作表并添加数据 共有6列,它们的顺序相同,但包含不同的数据 编辑打开,直到赏金授予 代码尝试: function merge() { var v, arr,
function merge() {
var v, arr,
ss = SpreadsheetApp.getActive();
ss.getSheets().filter(function(s) {
return s.getName()
.indexOf('Project') > -1
}).forEach(function(s, i) {
v = s.getDataRange()
.getValues()
.filter(function(r) {
return r.toString()
.length > 0
})
arr = (i == 0) ? v : arr.concat(v);
})
ss.getSheetByName('Master')
.getRange(1, 1, arr.length, arr[0].length)
.setValues(arr);
}
任何帮助都将不胜感激
谢谢 尝试SheetGo附加组件,它将有助于在几次单击后完成工作 看看这个:
这些是主要功能 dailysheets.gs:
function archiveDaily() {
const mshsr=4;
const ss=SpreadsheetApp.getActive();
const msh=ss.getSheetByName('Master');
const dss=SpreadsheetApp.openById(getGlobal('MasterSheetsLogId'));//open master archive
const ts=Utilities.formatDate(new Date(), Session.getScriptTimeZone(), "MM/dd/yy HH:mm:ss")
msh.copyTo(dss).setName(ts);//copies current master sheet to master archive not sure if you would want this but I would
if(msh.getLastRow()-mshsr+1>0) {
msh.getRange(mshsr,1,msh.getLastRow()-mshsr+1,msh.getLastColumn()).clearContent();
}
const nA=getGlobal('DailySheetNames').split(',');//sheet name store in Globals sheet as a hash table
const dt=new Date();
const td=new Date(dt.getFullYear(),dt.getMonth(),dt.getDate()).valueOf();//start of day
const to=new Date(dt.getFullYear(),dt.getMonth(),dt.getDate()+1).valueOf();//end of day
const dshsr=4;
nA.forEach(function(name,i){
let dsh=ss.getSheetByName(name);
let drg=dsh.getRange(dshsr,1,dsh.getLastRow()-dshsr+1,dsh.getLastColumn());
let v=drg.getDisplayValues();
let mv=[[dsh.getName(),'','','','','','','','','','','','','','','','']];//Display Sheetname on top of every group
v.forEach(function(r,i){
let idt=new Date(r[0]).valueOf();
//Select rows that fall between midnights
if(idt>td && idt<to) {
mv.push(r);
}
});
msh.getRange(msh.getLastRow()+1,1,mv.length,mv[0].length).setValues(mv);//Put each sheets data into master sheet
});
}
function createDailyTrigger() {
var ss=SpreadsheetApp.getActive();
//This line keeps you from creating more than one trigger
if(!isTrigger('archiveDaily')) {
ScriptApp.newTrigger('archiveDaily').timeBased().everyDays(1).atHour(23).create();
}
}
其中一张图纸的图像:
其中一个数据表的csv:
1234567891011121314151617
012345678910111213141516
HDR1HDR2HDR3HDR4HDR5HDR6HDR7HDR8HDR9HDR10HDR11HDR12HDR13HDR14HDR15HDR16HDR17
Mon Feb 10 2020 06:00:00 GMT-0700 (Mountain Standard Time)12345678910111213141516
Mon Feb 10 2020 06:20:00 GMT-0700 (Mountain Standard Time)234567891011121314151617
Mon Feb 10 2020 06:40:00 GMT-0700 (Mountain Standard Time)3456789101112131415161718
Mon Feb 10 2020 07:00:00 GMT-0700 (Mountain Standard Time)45678910111213141516171819
Mon Feb 10 2020 07:20:00 GMT-0700 (Mountain Standard Time)567891011121314151617181920
Mon Feb 10 2020 07:40:00 GMT-0700 (Mountain Standard Time)6789101112131415161718192021
Mon Feb 10 2020 08:00:00 GMT-0700 (Mountain Standard Time)78910111213141516171819202122
Mon Feb 10 2020 08:20:00 GMT-0700 (Mountain Standard Time)891011121314151617181920212223
Mon Feb 10 2020 08:40:00 GMT-0700 (Mountain Standard Time)9101112131415161718192021222324
Mon Feb 10 2020 09:00:00 GMT-0700 (Mountain Standard Time)10111213141516171819202122232425
Mon Feb 10 2020 09:20:00 GMT-0700 (Mountain Standard Time)11121314151617181920212223242526
Mon Feb 10 2020 09:40:00 GMT-0700 (Mountain Standard Time)12131415161718192021222324252627
Mon Feb 10 2020 10:00:00 GMT-0700 (Mountain Standard Time)13141516171819202122232425262728
Mon Feb 10 2020 10:20:00 GMT-0700 (Mountain Standard Time)14151617181920212223242526272829
Mon Feb 10 2020 10:40:00 GMT-0700 (Mountain Standard Time)15161718192021222324252627282930
Mon Feb 10 2020 11:00:00 GMT-0700 (Mountain Standard Time)16171819202122232425262728293031
Mon Feb 10 2020 11:20:00 GMT-0700 (Mountain Standard Time)17181920212223242526272829303132
Mon Feb 10 2020 11:40:00 GMT-0700 (Mountain Standard Time)18192021222324252627282930313233
母版纸的图像:
母版页的csv:
1234567891011121314151617
012345678910111213141516
HDR1HDR2HDR3HDR4HDR5HDR6HDR7HDR8HDR9HDR10HDR11HDR12HDR13HDR14HDR15HDR16HDR17
Adam
Mon Feb 10 2020 06:00:00 GMT-0700 (Mountain Standard Time)12345678910111213141516
Mon Feb 10 2020 06:20:00 GMT-0700 (Mountain Standard Time)234567891011121314151617
Mon Feb 10 2020 06:40:00 GMT-0700 (Mountain Standard Time)3456789101112131415161718
Mon Feb 10 2020 07:00:00 GMT-0700 (Mountain Standard Time)45678910111213141516171819
Mon Feb 10 2020 07:20:00 GMT-0700 (Mountain Standard Time)567891011121314151617181920
Mon Feb 10 2020 07:40:00 GMT-0700 (Mountain Standard Time)6789101112131415161718192021
Mon Feb 10 2020 08:00:00 GMT-0700 (Mountain Standard Time)78910111213141516171819202122
Mon Feb 10 2020 08:20:00 GMT-0700 (Mountain Standard Time)891011121314151617181920212223
Mon Feb 10 2020 08:40:00 GMT-0700 (Mountain Standard Time)9101112131415161718192021222324
Mon Feb 10 2020 09:00:00 GMT-0700 (Mountain Standard Time)10111213141516171819202122232425
Mon Feb 10 2020 09:20:00 GMT-0700 (Mountain Standard Time)11121314151617181920212223242526
Mon Feb 10 2020 09:40:00 GMT-0700 (Mountain Standard Time)12131415161718192021222324252627
Mon Feb 10 2020 10:00:00 GMT-0700 (Mountain Standard Time)13141516171819202122232425262728
Mon Feb 10 2020 10:20:00 GMT-0700 (Mountain Standard Time)14151617181920212223242526272829
Mon Feb 10 2020 10:40:00 GMT-0700 (Mountain Standard Time)15161718192021222324252627282930
Mon Feb 10 2020 11:00:00 GMT-0700 (Mountain Standard Time)16171819202122232425262728293031
Mon Feb 10 2020 11:20:00 GMT-0700 (Mountain Standard Time)17181920212223242526272829303132
Mon Feb 10 2020 11:40:00 GMT-0700 (Mountain Standard Time)18192021222324252627282930313233
Bill
Mon Feb 10 2020 06:00:00 GMT-0700 (Mountain Standard Time)12345678910111213141516
Mon Feb 10 2020 06:20:00 GMT-0700 (Mountain Standard Time)234567891011121314151617
Mon Feb 10 2020 06:40:00 GMT-0700 (Mountain Standard Time)3456789101112131415161718
Mon Feb 10 2020 07:00:00 GMT-0700 (Mountain Standard Time)45678910111213141516171819
Mon Feb 10 2020 07:20:00 GMT-0700 (Mountain Standard Time)567891011121314151617181920
Mon Feb 10 2020 07:40:00 GMT-0700 (Mountain Standard Time)6789101112131415161718192021
Mon Feb 10 2020 08:00:00 GMT-0700 (Mountain Standard Time)78910111213141516171819202122
Mon Feb 10 2020 08:20:00 GMT-0700 (Mountain Standard Time)891011121314151617181920212223
Mon Feb 10 2020 08:40:00 GMT-0700 (Mountain Standard Time)9101112131415161718192021222324
Mon Feb 10 2020 09:00:00 GMT-0700 (Mountain Standard Time)10111213141516171819202122232425
Mon Feb 10 2020 09:20:00 GMT-0700 (Mountain Standard Time)11121314151617181920212223242526
Mon Feb 10 2020 09:40:00 GMT-0700 (Mountain Standard Time)12131415161718192021222324252627
Mon Feb 10 2020 10:00:00 GMT-0700 (Mountain Standard Time)13141516171819202122232425262728
Mon Feb 10 2020 10:20:00 GMT-0700 (Mountain Standard Time)14151617181920212223242526272829
Mon Feb 10 2020 10:40:00 GMT-0700 (Mountain Standard Time)15161718192021222324252627282930
Mon Feb 10 2020 11:00:00 GMT-0700 (Mountain Standard Time)16171819202122232425262728293031
Mon Feb 10 2020 11:20:00 GMT-0700 (Mountain Standard Time)17181920212223242526272829303132
Mon Feb 10 2020 11:40:00 GMT-0700 (Mountain Standard Time)18192021222324252627282930313233
Charlie
Mon Feb 10 2020 06:00:00 GMT-0700 (Mountain Standard Time)12345678910111213141516
Mon Feb 10 2020 06:20:00 GMT-0700 (Mountain Standard Time)234567891011121314151617
Mon Feb 10 2020 06:40:00 GMT-0700 (Mountain Standard Time)3456789101112131415161718
Mon Feb 10 2020 07:00:00 GMT-0700 (Mountain Standard Time)45678910111213141516171819
Mon Feb 10 2020 07:20:00 GMT-0700 (Mountain Standard Time)567891011121314151617181920
Mon Feb 10 2020 07:40:00 GMT-0700 (Mountain Standard Time)6789101112131415161718192021
Mon Feb 10 2020 08:00:00 GMT-0700 (Mountain Standard Time)78910111213141516171819202122
Mon Feb 10 2020 08:20:00 GMT-0700 (Mountain Standard Time)891011121314151617181920212223
Mon Feb 10 2020 08:40:00 GMT-0700 (Mountain Standard Time)9101112131415161718192021222324
Mon Feb 10 2020 09:00:00 GMT-0700 (Mountain Standard Time)10111213141516171819202122232425
Mon Feb 10 2020 09:20:00 GMT-0700 (Mountain Standard Time)11121314151617181920212223242526
Mon Feb 10 2020 09:40:00 GMT-0700 (Mountain Standard Time)12131415161718192021222324252627
Mon Feb 10 2020 10:00:00 GMT-0700 (Mountain Standard Time)13141516171819202122232425262728
Mon Feb 10 2020 10:20:00 GMT-0700 (Mountain Standard Time)14151617181920212223242526272829
Mon Feb 10 2020 10:40:00 GMT-0700 (Mountain Standard Time)15161718192021222324252627282930
Mon Feb 10 2020 11:00:00 GMT-0700 (Mountain Standard Time)16171819202122232425262728293031
Mon Feb 10 2020 11:20:00 GMT-0700 (Mountain Standard Time)17181920212223242526272829303132
Mon Feb 10 2020 11:40:00 GMT-0700 (Mountain Standard Time)18192021222324252627282930313233
Don
Mon Feb 10 2020 06:00:00 GMT-0700 (Mountain Standard Time)12345678910111213141516
Mon Feb 10 2020 06:20:00 GMT-0700 (Mountain Standard Time)234567891011121314151617
Mon Feb 10 2020 06:40:00 GMT-0700 (Mountain Standard Time)3456789101112131415161718
Mon Feb 10 2020 07:00:00 GMT-0700 (Mountain Standard Time)45678910111213141516171819
Mon Feb 10 2020 07:20:00 GMT-0700 (Mountain Standard Time)567891011121314151617181920
Mon Feb 10 2020 07:40:00 GMT-0700 (Mountain Standard Time)6789101112131415161718192021
Mon Feb 10 2020 08:00:00 GMT-0700 (Mountain Standard Time)78910111213141516171819202122
Mon Feb 10 2020 08:20:00 GMT-0700 (Mountain Standard Time)891011121314151617181920212223
Mon Feb 10 2020 08:40:00 GMT-0700 (Mountain Standard Time)9101112131415161718192021222324
Mon Feb 10 2020 09:00:00 GMT-0700 (Mountain Standard Time)10111213141516171819202122232425
Mon Feb 10 2020 09:20:00 GMT-0700 (Mountain Standard Time)11121314151617181920212223242526
Mon Feb 10 2020 09:40:00 GMT-0700 (Mountain Standard Time)12131415161718192021222324252627
Mon Feb 10 2020 10:00:00 GMT-0700 (Mountain Standard Time)13141516171819202122232425262728
Mon Feb 10 2020 10:20:00 GMT-0700 (Mountain Standard Time)14151617181920212223242526272829
Mon Feb 10 2020 10:40:00 GMT-0700 (Mountain Standard Time)15161718192021222324252627282930
Mon Feb 10 2020 11:00:00 GMT-0700 (Mountain Standard Time)16171819202122232425262728293031
Mon Feb 10 2020 11:20:00 GMT-0700 (Mountain Standard Time)17181920212223242526272829303132
Mon Feb 10 2020 11:40:00 GMT-0700 (Mountain Standard Time)18192021222324252627282930313233
Earl
Mon Feb 10 2020 06:00:00 GMT-0700 (Mountain Standard Time)12345678910111213141516
Mon Feb 10 2020 06:20:00 GMT-0700 (Mountain Standard Time)234567891011121314151617
Mon Feb 10 2020 06:40:00 GMT-0700 (Mountain Standard Time)3456789101112131415161718
Mon Feb 10 2020 07:00:00 GMT-0700 (Mountain Standard Time)45678910111213141516171819
Mon Feb 10 2020 07:20:00 GMT-0700 (Mountain Standard Time)567891011121314151617181920
Mon Feb 10 2020 07:40:00 GMT-0700 (Mountain Standard Time)6789101112131415161718192021
Mon Feb 10 2020 08:00:00 GMT-0700 (Mountain Standard Time)78910111213141516171819202122
Mon Feb 10 2020 08:20:00 GMT-0700 (Mountain Standard Time)891011121314151617181920212223
Mon Feb 10 2020 08:40:00 GMT-0700 (Mountain Standard Time)9101112131415161718192021222324
Mon Feb 10 2020 09:00:00 GMT-0700 (Mountain Standard Time)10111213141516171819202122232425
Mon Feb 10 2020 09:20:00 GMT-0700 (Mountain Standard Time)11121314151617181920212223242526
Mon Feb 10 2020 09:40:00 GMT-0700 (Mountain Standard Time)12131415161718192021222324252627
Mon Feb 10 2020 10:00:00 GMT-0700 (Mountain Standard Time)13141516171819202122232425262728
Mon Feb 10 2020 10:20:00 GMT-0700 (Mountain Standard Time)14151617181920212223242526272829
Mon Feb 10 2020 10:40:00 GMT-0700 (Mountain Standard Time)15161718192021222324252627282930
Mon Feb 10 2020 11:00:00 GMT-0700 (Mountain Standard Time)16171819202122232425262728293031
Mon Feb 10 2020 11:20:00 GMT-0700 (Mountain Standard Time)17181920212223242526272829303132
Mon Feb 10 2020 11:40:00 GMT-0700 (Mountain Standard Time)18192021222324252627282930313233
Francis
Mon Feb 10 2020 06:00:00 GMT-0700 (Mountain Standard Time)12345678910111213141516
Mon Feb 10 2020 06:20:00 GMT-0700 (Mountain Standard Time)234567891011121314151617
Mon Feb 10 2020 06:40:00 GMT-0700 (Mountain Standard Time)3456789101112131415161718
Mon Feb 10 2020 07:00:00 GMT-0700 (Mountain Standard Time)45678910111213141516171819
Mon Feb 10 2020 07:20:00 GMT-0700 (Mountain Standard Time)567891011121314151617181920
Mon Feb 10 2020 07:40:00 GMT-0700 (Mountain Standard Time)6789101112131415161718192021
Mon Feb 10 2020 08:00:00 GMT-0700 (Mountain Standard Time)78910111213141516171819202122
Mon Feb 10 2020 08:20:00 GMT-0700 (Mountain Standard Time)891011121314151617181920212223
Mon Feb 10 2020 08:40:00 GMT-0700 (Mountain Standard Time)9101112131415161718192021222324
Mon Feb 10 2020 09:00:00 GMT-0700 (Mountain Standard Time)10111213141516171819202122232425
Mon Feb 10 2020 09:20:00 GMT-0700 (Mountain Standard Time)11121314151617181920212223242526
Mon Feb 10 2020 09:40:00 GMT-0700 (Mountain Standard Time)12131415161718192021222324252627
Mon Feb 10 2020 10:00:00 GMT-0700 (Mountain Standard Time)13141516171819202122232425262728
Mon Feb 10 2020 10:20:00 GMT-0700 (Mountain Standard Time)14151617181920212223242526272829
Mon Feb 10 2020 10:40:00 GMT-0700 (Mountain Standard Time)15161718192021222324252627282930
Mon Feb 10 2020 11:00:00 GMT-0700 (Mountain Standard Time)16171819202122232425262728293031
Mon Feb 10 2020 11:20:00 GMT-0700 (Mountain Standard Time)17181920212223242526272829303132
Mon Feb 10 2020 11:40:00 GMT-0700 (Mountain Standard Time)18192021222324252627282930313233
脚本的简化版本:
//@OnlyCurrentDoc
function merge() {
const ss = SpreadsheetApp.getActive();
const arr = ss
.getSheets()
.filter(s => !s.getName().includes('Master'))//exclude Master sheet
.flatMap(s => s.getDataRange().getValues());//map sheet to values and flatten it
ss.getSheetByName('Master')
.getRange(1, 1, arr.length, arr[0].length)
.setValues(arr);
}
修改
- 排除主控图纸而不包括所有项目图纸的步骤
- 使用v8 es6语法和优化
- 以下脚本执行以下操作:
1) 每天存档,而不考虑其他选项卡的命名约定(只有主选项卡需要正确命名)
2) 忽略其他选项卡中的标题行(假定主选项卡具有标题行)
3) 每日触发器
4) 增加了在访问数据之前运行脚本的情况下存档以前主控文件的功能-仅存档1天
EverydayTrigger函数创建每日循环,MergeSheet函数是合并工作表的主脚本。每行脚本的解释都在脚本本身中
function EverydayTrigger() {
ScriptApp.newTrigger("MergeSheets")
.timeBased()
.everyDays(1)
.create();
}
function MergeSheets() {
var app = SpreadsheetApp;
var ss = app.getActiveSpreadsheet();
var data = null;
var RetrieveSheet = null;
var PasteSheet = ss.getSheetByName("Master");
/*
// Use this if you are using the archiving option
var PrevArchSheetName = PasteSheet.getRange(1,1000).getValue();
if(PrevArchSheetName.length > 1){
var PrevArchSheet = ss.getSheetByName(PrevArchSheetName); //Retrieve the stored Archive Sheet's Name
ss.deleteSheet(PrevArchSheet);
}
*/
var sheets = ss.getSheets();//get all sheets regardless of naming conventions (allow you to expand your data source)
/*
//This portion can be used to allow for archiving of the previous day data in case you still need it.
var ArchiveSheet = ss.insertSheet(new Date() + "Master");
PasteSheet.getDataRange().copyTo(ArchiveSheet.getRange(1,1));
PasteSheet.getRange(1,1000).setValue(ArchiveSheet.getName()); // stores the name of the sheet so as to delete it when the script run again
*/
PasteSheet.getRange(2,1,PasteSheet.getLastRow(),PasteSheet.getLastColumn()).clear();//removes all old information
for (var i =0; i<sheets.length; i++){
RetrieveSheet = ss.getSheetByName(sheets[i].getName());
if (RetrieveSheet.getName() != 'Master'){
//data = RetrieveSheet.getDataRange(); //use this if you want the header row for each salesperson
data = RetrieveSheet.getRange(2,1,RetrieveSheet.getLastRow(),RetrieveSheet.getLastColumn()); //presuming you dont want the header rows
data.copyTo(PasteSheet.getRange(parseInt(PasteSheet.getLastRow())+1,1));
}
}
}
函数EverydayTrigger(){
ScriptApp.newTrigger(“合并表单”)
.基于时间的()
.每天(1)
.create();
}
函数MergeSheets(){
var app=电子表格应用程序;
var ss=app.getActiveSpreadsheet();
var数据=null;
var RetrieveSheet=null;
var PasteSheet=ss.getSheetByName(“主”);
/*
//如果要使用存档选项,请使用此选项
var PrevArchSheetName=PasteSheet.getRange(11000.getValue();
如果(PrevArchSheetName.length>1){
var PrevArchSheet=ss.getSheetByName(PrevArchSheetName);//检索存储的存档工作表的名称
ss.deleteSheet(上一页);
}
*/
var sheets=ss.getSheets();//获取所有工作表,而不考虑命名约定(允许您扩展数据源)
/*
//这一部分可用于存档前一天的数据,以防您仍然需要它。
var ArchiveSheet=ss.insertSheet(新日期()+“主日期”);
PasteSheet.getDataRange().copyTo(ArchiveSheet.getRange(1,1));
PasteSheet.getRange(11000).setValue(ArchiveSheet.getName());//存储工作表的名称,以便在脚本再次运行时将其删除
*/
PasteSheet.getRange(2,1,PasteSheet.getLastRow(),PasteSheet.getLastColumn()).clear();//删除所有旧信息
对于(var i=0;我想看看,因为它可能是解决您问题的非脚本解决方案。我确实尝试过将项目添加到我的每个团队工作表中,但结果是主工作表中只返回了一个工作表。每个团队工作表名称中是否都有“项目”?@datanovel what进入“Master Daily”?问题是,你的原始脚本似乎可以很好地工作,似乎非常适合这份工作。它不工作吗?你所要做的就是添加“项目”为了所有团队的名字。由于数据隐私,我对任何附加组件都很谨慎。在GDPR后的世界中,我们必须对我们的数据更加严格。也许这会有帮助,我们会很快进行测试并回复给你。感谢这一点,我相信很多其他人都会受益。我已经在所有脚本中添加了dailysheets.gs错误,在第17行说missing;before statement
我在主要帖子中添加了一个演示页。我试图实现的地方是你在运行V8吗?很抱歉,我再也不关注这些链接了。如果你想发布该页面的csv,那就太好了。非常感谢cooper,我尽了最大的努力让它工作,但这超出了我的能力范围-非常棒的代码片段o它肯定会对其他人有益。谢谢!注意:您需要在测试之前进行测试。
1234567891011121314151617
012345678910111213141516
HDR1HDR2HDR3HDR4HDR5HDR6HDR7HDR8HDR9HDR10HDR11HDR12HDR13HDR14HDR15HDR16HDR17
Adam
Mon Feb 10 2020 06:00:00 GMT-0700 (Mountain Standard Time)12345678910111213141516
Mon Feb 10 2020 06:20:00 GMT-0700 (Mountain Standard Time)234567891011121314151617
Mon Feb 10 2020 06:40:00 GMT-0700 (Mountain Standard Time)3456789101112131415161718
Mon Feb 10 2020 07:00:00 GMT-0700 (Mountain Standard Time)45678910111213141516171819
Mon Feb 10 2020 07:20:00 GMT-0700 (Mountain Standard Time)567891011121314151617181920
Mon Feb 10 2020 07:40:00 GMT-0700 (Mountain Standard Time)6789101112131415161718192021
Mon Feb 10 2020 08:00:00 GMT-0700 (Mountain Standard Time)78910111213141516171819202122
Mon Feb 10 2020 08:20:00 GMT-0700 (Mountain Standard Time)891011121314151617181920212223
Mon Feb 10 2020 08:40:00 GMT-0700 (Mountain Standard Time)9101112131415161718192021222324
Mon Feb 10 2020 09:00:00 GMT-0700 (Mountain Standard Time)10111213141516171819202122232425
Mon Feb 10 2020 09:20:00 GMT-0700 (Mountain Standard Time)11121314151617181920212223242526
Mon Feb 10 2020 09:40:00 GMT-0700 (Mountain Standard Time)12131415161718192021222324252627
Mon Feb 10 2020 10:00:00 GMT-0700 (Mountain Standard Time)13141516171819202122232425262728
Mon Feb 10 2020 10:20:00 GMT-0700 (Mountain Standard Time)14151617181920212223242526272829
Mon Feb 10 2020 10:40:00 GMT-0700 (Mountain Standard Time)15161718192021222324252627282930
Mon Feb 10 2020 11:00:00 GMT-0700 (Mountain Standard Time)16171819202122232425262728293031
Mon Feb 10 2020 11:20:00 GMT-0700 (Mountain Standard Time)17181920212223242526272829303132
Mon Feb 10 2020 11:40:00 GMT-0700 (Mountain Standard Time)18192021222324252627282930313233
Bill
Mon Feb 10 2020 06:00:00 GMT-0700 (Mountain Standard Time)12345678910111213141516
Mon Feb 10 2020 06:20:00 GMT-0700 (Mountain Standard Time)234567891011121314151617
Mon Feb 10 2020 06:40:00 GMT-0700 (Mountain Standard Time)3456789101112131415161718
Mon Feb 10 2020 07:00:00 GMT-0700 (Mountain Standard Time)45678910111213141516171819
Mon Feb 10 2020 07:20:00 GMT-0700 (Mountain Standard Time)567891011121314151617181920
Mon Feb 10 2020 07:40:00 GMT-0700 (Mountain Standard Time)6789101112131415161718192021
Mon Feb 10 2020 08:00:00 GMT-0700 (Mountain Standard Time)78910111213141516171819202122
Mon Feb 10 2020 08:20:00 GMT-0700 (Mountain Standard Time)891011121314151617181920212223
Mon Feb 10 2020 08:40:00 GMT-0700 (Mountain Standard Time)9101112131415161718192021222324
Mon Feb 10 2020 09:00:00 GMT-0700 (Mountain Standard Time)10111213141516171819202122232425
Mon Feb 10 2020 09:20:00 GMT-0700 (Mountain Standard Time)11121314151617181920212223242526
Mon Feb 10 2020 09:40:00 GMT-0700 (Mountain Standard Time)12131415161718192021222324252627
Mon Feb 10 2020 10:00:00 GMT-0700 (Mountain Standard Time)13141516171819202122232425262728
Mon Feb 10 2020 10:20:00 GMT-0700 (Mountain Standard Time)14151617181920212223242526272829
Mon Feb 10 2020 10:40:00 GMT-0700 (Mountain Standard Time)15161718192021222324252627282930
Mon Feb 10 2020 11:00:00 GMT-0700 (Mountain Standard Time)16171819202122232425262728293031
Mon Feb 10 2020 11:20:00 GMT-0700 (Mountain Standard Time)17181920212223242526272829303132
Mon Feb 10 2020 11:40:00 GMT-0700 (Mountain Standard Time)18192021222324252627282930313233
Charlie
Mon Feb 10 2020 06:00:00 GMT-0700 (Mountain Standard Time)12345678910111213141516
Mon Feb 10 2020 06:20:00 GMT-0700 (Mountain Standard Time)234567891011121314151617
Mon Feb 10 2020 06:40:00 GMT-0700 (Mountain Standard Time)3456789101112131415161718
Mon Feb 10 2020 07:00:00 GMT-0700 (Mountain Standard Time)45678910111213141516171819
Mon Feb 10 2020 07:20:00 GMT-0700 (Mountain Standard Time)567891011121314151617181920
Mon Feb 10 2020 07:40:00 GMT-0700 (Mountain Standard Time)6789101112131415161718192021
Mon Feb 10 2020 08:00:00 GMT-0700 (Mountain Standard Time)78910111213141516171819202122
Mon Feb 10 2020 08:20:00 GMT-0700 (Mountain Standard Time)891011121314151617181920212223
Mon Feb 10 2020 08:40:00 GMT-0700 (Mountain Standard Time)9101112131415161718192021222324
Mon Feb 10 2020 09:00:00 GMT-0700 (Mountain Standard Time)10111213141516171819202122232425
Mon Feb 10 2020 09:20:00 GMT-0700 (Mountain Standard Time)11121314151617181920212223242526
Mon Feb 10 2020 09:40:00 GMT-0700 (Mountain Standard Time)12131415161718192021222324252627
Mon Feb 10 2020 10:00:00 GMT-0700 (Mountain Standard Time)13141516171819202122232425262728
Mon Feb 10 2020 10:20:00 GMT-0700 (Mountain Standard Time)14151617181920212223242526272829
Mon Feb 10 2020 10:40:00 GMT-0700 (Mountain Standard Time)15161718192021222324252627282930
Mon Feb 10 2020 11:00:00 GMT-0700 (Mountain Standard Time)16171819202122232425262728293031
Mon Feb 10 2020 11:20:00 GMT-0700 (Mountain Standard Time)17181920212223242526272829303132
Mon Feb 10 2020 11:40:00 GMT-0700 (Mountain Standard Time)18192021222324252627282930313233
Don
Mon Feb 10 2020 06:00:00 GMT-0700 (Mountain Standard Time)12345678910111213141516
Mon Feb 10 2020 06:20:00 GMT-0700 (Mountain Standard Time)234567891011121314151617
Mon Feb 10 2020 06:40:00 GMT-0700 (Mountain Standard Time)3456789101112131415161718
Mon Feb 10 2020 07:00:00 GMT-0700 (Mountain Standard Time)45678910111213141516171819
Mon Feb 10 2020 07:20:00 GMT-0700 (Mountain Standard Time)567891011121314151617181920
Mon Feb 10 2020 07:40:00 GMT-0700 (Mountain Standard Time)6789101112131415161718192021
Mon Feb 10 2020 08:00:00 GMT-0700 (Mountain Standard Time)78910111213141516171819202122
Mon Feb 10 2020 08:20:00 GMT-0700 (Mountain Standard Time)891011121314151617181920212223
Mon Feb 10 2020 08:40:00 GMT-0700 (Mountain Standard Time)9101112131415161718192021222324
Mon Feb 10 2020 09:00:00 GMT-0700 (Mountain Standard Time)10111213141516171819202122232425
Mon Feb 10 2020 09:20:00 GMT-0700 (Mountain Standard Time)11121314151617181920212223242526
Mon Feb 10 2020 09:40:00 GMT-0700 (Mountain Standard Time)12131415161718192021222324252627
Mon Feb 10 2020 10:00:00 GMT-0700 (Mountain Standard Time)13141516171819202122232425262728
Mon Feb 10 2020 10:20:00 GMT-0700 (Mountain Standard Time)14151617181920212223242526272829
Mon Feb 10 2020 10:40:00 GMT-0700 (Mountain Standard Time)15161718192021222324252627282930
Mon Feb 10 2020 11:00:00 GMT-0700 (Mountain Standard Time)16171819202122232425262728293031
Mon Feb 10 2020 11:20:00 GMT-0700 (Mountain Standard Time)17181920212223242526272829303132
Mon Feb 10 2020 11:40:00 GMT-0700 (Mountain Standard Time)18192021222324252627282930313233
Earl
Mon Feb 10 2020 06:00:00 GMT-0700 (Mountain Standard Time)12345678910111213141516
Mon Feb 10 2020 06:20:00 GMT-0700 (Mountain Standard Time)234567891011121314151617
Mon Feb 10 2020 06:40:00 GMT-0700 (Mountain Standard Time)3456789101112131415161718
Mon Feb 10 2020 07:00:00 GMT-0700 (Mountain Standard Time)45678910111213141516171819
Mon Feb 10 2020 07:20:00 GMT-0700 (Mountain Standard Time)567891011121314151617181920
Mon Feb 10 2020 07:40:00 GMT-0700 (Mountain Standard Time)6789101112131415161718192021
Mon Feb 10 2020 08:00:00 GMT-0700 (Mountain Standard Time)78910111213141516171819202122
Mon Feb 10 2020 08:20:00 GMT-0700 (Mountain Standard Time)891011121314151617181920212223
Mon Feb 10 2020 08:40:00 GMT-0700 (Mountain Standard Time)9101112131415161718192021222324
Mon Feb 10 2020 09:00:00 GMT-0700 (Mountain Standard Time)10111213141516171819202122232425
Mon Feb 10 2020 09:20:00 GMT-0700 (Mountain Standard Time)11121314151617181920212223242526
Mon Feb 10 2020 09:40:00 GMT-0700 (Mountain Standard Time)12131415161718192021222324252627
Mon Feb 10 2020 10:00:00 GMT-0700 (Mountain Standard Time)13141516171819202122232425262728
Mon Feb 10 2020 10:20:00 GMT-0700 (Mountain Standard Time)14151617181920212223242526272829
Mon Feb 10 2020 10:40:00 GMT-0700 (Mountain Standard Time)15161718192021222324252627282930
Mon Feb 10 2020 11:00:00 GMT-0700 (Mountain Standard Time)16171819202122232425262728293031
Mon Feb 10 2020 11:20:00 GMT-0700 (Mountain Standard Time)17181920212223242526272829303132
Mon Feb 10 2020 11:40:00 GMT-0700 (Mountain Standard Time)18192021222324252627282930313233
Francis
Mon Feb 10 2020 06:00:00 GMT-0700 (Mountain Standard Time)12345678910111213141516
Mon Feb 10 2020 06:20:00 GMT-0700 (Mountain Standard Time)234567891011121314151617
Mon Feb 10 2020 06:40:00 GMT-0700 (Mountain Standard Time)3456789101112131415161718
Mon Feb 10 2020 07:00:00 GMT-0700 (Mountain Standard Time)45678910111213141516171819
Mon Feb 10 2020 07:20:00 GMT-0700 (Mountain Standard Time)567891011121314151617181920
Mon Feb 10 2020 07:40:00 GMT-0700 (Mountain Standard Time)6789101112131415161718192021
Mon Feb 10 2020 08:00:00 GMT-0700 (Mountain Standard Time)78910111213141516171819202122
Mon Feb 10 2020 08:20:00 GMT-0700 (Mountain Standard Time)891011121314151617181920212223
Mon Feb 10 2020 08:40:00 GMT-0700 (Mountain Standard Time)9101112131415161718192021222324
Mon Feb 10 2020 09:00:00 GMT-0700 (Mountain Standard Time)10111213141516171819202122232425
Mon Feb 10 2020 09:20:00 GMT-0700 (Mountain Standard Time)11121314151617181920212223242526
Mon Feb 10 2020 09:40:00 GMT-0700 (Mountain Standard Time)12131415161718192021222324252627
Mon Feb 10 2020 10:00:00 GMT-0700 (Mountain Standard Time)13141516171819202122232425262728
Mon Feb 10 2020 10:20:00 GMT-0700 (Mountain Standard Time)14151617181920212223242526272829
Mon Feb 10 2020 10:40:00 GMT-0700 (Mountain Standard Time)15161718192021222324252627282930
Mon Feb 10 2020 11:00:00 GMT-0700 (Mountain Standard Time)16171819202122232425262728293031
Mon Feb 10 2020 11:20:00 GMT-0700 (Mountain Standard Time)17181920212223242526272829303132
Mon Feb 10 2020 11:40:00 GMT-0700 (Mountain Standard Time)18192021222324252627282930313233
//@OnlyCurrentDoc
function merge() {
const ss = SpreadsheetApp.getActive();
const arr = ss
.getSheets()
.filter(s => !s.getName().includes('Master'))//exclude Master sheet
.flatMap(s => s.getDataRange().getValues());//map sheet to values and flatten it
ss.getSheetByName('Master')
.getRange(1, 1, arr.length, arr[0].length)
.setValues(arr);
}
function EverydayTrigger() {
ScriptApp.newTrigger("MergeSheets")
.timeBased()
.everyDays(1)
.create();
}
function MergeSheets() {
var app = SpreadsheetApp;
var ss = app.getActiveSpreadsheet();
var data = null;
var RetrieveSheet = null;
var PasteSheet = ss.getSheetByName("Master");
/*
// Use this if you are using the archiving option
var PrevArchSheetName = PasteSheet.getRange(1,1000).getValue();
if(PrevArchSheetName.length > 1){
var PrevArchSheet = ss.getSheetByName(PrevArchSheetName); //Retrieve the stored Archive Sheet's Name
ss.deleteSheet(PrevArchSheet);
}
*/
var sheets = ss.getSheets();//get all sheets regardless of naming conventions (allow you to expand your data source)
/*
//This portion can be used to allow for archiving of the previous day data in case you still need it.
var ArchiveSheet = ss.insertSheet(new Date() + "Master");
PasteSheet.getDataRange().copyTo(ArchiveSheet.getRange(1,1));
PasteSheet.getRange(1,1000).setValue(ArchiveSheet.getName()); // stores the name of the sheet so as to delete it when the script run again
*/
PasteSheet.getRange(2,1,PasteSheet.getLastRow(),PasteSheet.getLastColumn()).clear();//removes all old information
for (var i =0; i<sheets.length; i++){
RetrieveSheet = ss.getSheetByName(sheets[i].getName());
if (RetrieveSheet.getName() != 'Master'){
//data = RetrieveSheet.getDataRange(); //use this if you want the header row for each salesperson
data = RetrieveSheet.getRange(2,1,RetrieveSheet.getLastRow(),RetrieveSheet.getLastColumn()); //presuming you dont want the header rows
data.copyTo(PasteSheet.getRange(parseInt(PasteSheet.getLastRow())+1,1));
}
}
}