如何解决使用Google脚本移动新添加的列
我有一个脚本,可以每天从生产线添加新数据。但是,由于它只是附加数据,因此格式并不是我们需要的呈现方式。
我们需要的格式是: 订单号-日期-行-优先级
我们导入的格式为: 日期-行-优先级-订单号
这是我们每天用来添加数据的脚本:
function CopySchedule() {
var Production = SpreadsheetApp.openById("ProductionID"); //Production Schedule
var ScheduleSheet = Production.getSheets()[0]; //Production Schedule Sheet 1
var startRow = 2;
var startCol = 1;
var numRows = 1000;
var numCol = 25;
var ScheduleData = ScheduleSheet.getRange(startRow,startCol,numRows,numCol); //Get info from Production Schedule
var Schedule = ScheduleData.getValues(); // Get Values
var MySchedule = SpreadsheetApp.getActiveSpreadsheet(); //Current Spreadsheet
var MySheet = MySchedule.getSheets()[5]; //Current Sheet on Spreadsheet
var now = new Date(); //Today's date
var today = Utilities.formatDate(now,"EST","M-dd-yy"); //Reformat today date
for (var x = 0; x < 1000; x++)
{
if (Schedule[x][0] == today) //if date is today
{
MySheet.appendRow(Schedule[x]); //add row from schedule to bottom of current sheet
}
}
}
This is how we want the Data to be presented
This is how it is added into the sheet
因为我们每天要处理的订单数量不是固定的,所以宏还不够。#除非有一种方法可以让宏仅选择新的每日数据。
解决方法
问题陈述:
您需要按所需顺序存储值。根据提供的屏幕截图,正确的顺序应为:
[Schedule[x][3],Schedule[x][0],Schedule[x][1],Schedule[x][2]]
解决方案:
有两种方法可以完成此操作。一种方法是使用appendRow()
,这是不推荐使用的方法,尤其是在数据集变大时;第二种方法是使用setValues()
,这种方法效率更高。
第一个具有appendRow()的解决方案:
function CopySchedule() {
var Production = SpreadsheetApp.openById("ProductionID"); //Production Schedule
var ScheduleSheet = Production.getSheets()[0]; //Production Schedule Sheet 1
var startRow = 2;
var startCol = 1;
var numRows = 1000;
var numCol = 25;
var ScheduleData = ScheduleSheet.getRange(startRow,startCol,numRows,numCol); //Get info from Production Schedule
var Schedule = ScheduleData.getValues(); // Get Values
var MySchedule = SpreadsheetApp.getActiveSpreadsheet(); //Current Spreadsheet
var MySheet = MySchedule.getSheets()[5]; //Current Sheet on Spreadsheet
var now = new Date(); //Today's date
var today = Utilities.formatDate(now,"EST","M-dd-yy"); //Reformat today date
for (var x = 0; x < 1000; x++)
{
if (Schedule[x][0] == today) //if date is today
{
MySheet.appendRow([Schedule[x][3],Schedule[x][2]]);
}
}
}
使用setValues()的第二个解决方案-推荐:
function CopySchedule() {
var Production = SpreadsheetApp.openById("ProductionID"); //Production Schedule
var ScheduleSheet = Production.getSheets()[0]; //Production Schedule Sheet 1
var startRow = 2;
var startCol = 1;
var numRows = 1000;
var numCol = 25;
var ScheduleData = ScheduleSheet.getRange(startRow,"M-dd-yy"); //Reformat today date
data = [];
for (var x = 0; x < 1000; x++)
{
if (Schedule[x][0] == today) //if date is today
{
data.push([Schedule[x][3],Schedule[x][2]]);
}
}
MySheet.getRange(MySheet.getLastRow()+1,1,data.length,data[0].length).setValues(data);
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。