如何使用Apps脚本自动将信息的行和单元格从一张纸移动到另一张纸?

问题描述 投票:0回答:1

我是Apps脚本的新手,需要将订单信息从一张纸移动到另一张跟踪我们的库存编号的纸。这是我制作的可编辑示例工作表的链接:

https://docs.google.com/spreadsheets/d/19IwogRMmc7R-MPtPPjFizyt4WAe7FIbOjhVBxfkO4II/edit?usp=sharing

来自下面的评论:“我在两个工作表上都添加了某种颜色以显示前后。源工作表上的第2-7行将转移到目标工作表上的第3-8行。目标是获得第8行源工作表上的第10行到目标工作表上的第9-11行,并在每列对应的项目名称下填充订单号。“

我曾尝试使用Query函数,但我的问题是我们有包含多个项目的“包装”。本质上,我需要目标表自动从源表中添加信息,然后根据商品名称将订单数添加到相应的列中,如果是包装,则需要在所有三个商品列中添加订单数。我猜想脚本中会出现一系列“ if”语句,但是我无法弄清楚的部分是信息自动传输到目标表并在目标表中创建新行。

非常感谢您提供的任何帮助,如果除了应用程序脚本之外还有其他更简便的方法,请随时告诉我!再次感谢!

excel google-apps-script google-sheets
1个回答
0
投票

将订单提交到库存表

我通过添加一列名为Ordered的列对您的表单进行了一些修改,该列在提交项目后表示是。我还将您的Item1,Item2和Item3更改为与您的库存表相符的袜子,鞋子和裤子。没什么真正复杂的,它只是将数据加载到行数组中并追加到“库存”工作表中,并将“已订购”列标记为“是”。如果客户不购买完整包装,则此功能将检查袜子的鞋子和裤子列,以查看哪些不空白,哪些不空白的订单编号已发送到库存表,并放在相应的列中在库存表上。

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');
      }
    }
  });
}

运行脚本之前的工作表:

订单:enter image description here

库存:enter image description here

运行脚本后的清单:

订单:enter image description here

库存:enter image description here

Sheet appendRow()

© www.soinside.com 2019 - 2024. All rights reserved.