我是新的应用程序脚本,需要移动订单信息从一个工作表到另一个表格,跟踪我们的库存号码。下面是我制作的可编辑示例表的链接:
https://docs.google.com/spreadsheets/d/19IwogRMmc7R-MPtPPjFizyt4WAe7FIbOjhVBxfkO4II/edit?usp=sharing
在下面的注释中:“我在两个工作表上添加了某种颜色,以显示前后。源表上的第2-7行将转移到目标表上的第3-8行。目标是将源表上的第8-10行转换为目标表上的第9-11行,并在相应的项目名称下填充每个列下的订单#。”
我尝试过使用查询函数,但我的问题是我们有包含多个项的“包”。本质上,我需要目标表自动添加源表中的信息,然后根据项目名称将订单#添加到相应的列中,如果是包,则需要将订单#添加到所有三个项列中。我猜脚本中会有一系列"if“语句,但我无法理解的部分是自动将信息传递到目标表和在目标表中生成新行。
谢谢您事先提供的任何帮助,如果有更简单的方法来做,除了应用程序脚本,请随时让我知道!再次感谢!
发布于 2020-01-19 21:38:43
向库存单提交订单
我稍微修改了您的表单,添加了一个名为Ordered的列,该列在提交项时指示是的。我还把你的Item1,Item2和Item3换成了袜子,鞋子和裤子,这与你的库存表一致。没有什么特别复杂的,它只是将数据加载到一行数组中,并附加到库存表中,并将有序列标记为Yes。如果客户没有购买完整的包裹,则功能检查袜子、鞋子和裤子栏,看看哪些不是空白的,哪些不是空白的,发送到库存表中,其中包含订单列中的编号,并放在库存单上的相应列中。
function submitOrders() {
var ss=SpreadsheetApp.getActive();
var sh=ss.getSheetByName('Orders');
var ish=ss.getSheetByName('Inventory');
var idx={hr:1,sr:2,hA:[],lc:9};
idx.hA=sh.getRange(idx.hr,1,1,idx.lc).getValues()[0];
idx.hA.forEach(function(e,i){idx[e.trim()]=i;})
var oA=sh.getRange(idx.sr,1,sh.getLastRow()-idx.sr+1,idx.lc).getValues();
oA.forEach(function(r,i){
if(r[idx.Ordered]!='Yes') {
if(r[idx.Complete]=='Yes') {
var row=[r[idx.SalesPerson],r[idx.CustomerName],r[idx.Date],r[idx.Orders],r[idx.Complete],r[idx.Orders],r[idx.Orders],r[idx.Orders]];
ish.appendRow(row);
sh.getRange(i+idx.sr, idx.Ordered+1).setValue('Yes');
}else{
var row=[r[idx.SalesPerson],r[idx.CustomerName],r[idx.Date],r[idx.Orders],r[idx.Complete],(r[idx.Socks])?r[idx.Orders]:'',(r[idx.Shoes])?r[idx.Orders]:'',(r[idx.Pants])?r[idx.Orders]:''];
ish.appendRow(row);
sh.getRange(i+idx.sr, idx.Ordered+1).setValue('Yes');
}
}
});
}运行脚本之前的工作表:
命令:

盘存:

运行脚本后的工作表:
命令:

盘存:

https://stackoverflow.com/questions/59806045
复制相似问题