是否可以使用脚本来搜索两个电子表格之间的重复项,并将数据从一张工作表的行追加到另一张工作表

时间:2019-04-10 15:37:54

标签: google-apps-script google-sheets scripting

我正在为我的老板准备一份清单,希望能帮助您找到一个可以简化这一工作的脚本。我有两个电子表格,一个电子表格包含我在库存中实际盘点的所有零件号和零件说明,另一个是零件分销商的数据库。老板告诉我,我需要把价格放在商店库存中的价格上,这些价格会在分销商表上列出。我想做的是获取一个脚本来比较两张纸,并在找到匹配的部件号时,将价格从分销商数据库追加到商店库存中。

1 个答案:

答案 0 :(得分:0)

您可以使用下面的代码比较零件编号,并从同一电子表格的 2个标签中的产品获取价格。此可以修改以使用2个不同的电子表格。最好先创建包含一些数据的测试电子表格并进行测试,然后再应用实际数据。

复制代码,在电子表格中打开脚本编辑器,粘贴并保存。如代码中所述,相应地插入工作表和相应的列名。 A,B等不是列名。 “价格”,“零件编号”等是示例列名称。在菜单中,点击运行功能>运行> onOpen 。它会要求认证,给。重新加载电子表格。它在菜单栏中应该有一个自定义菜单项。点击获取价格以执行脚本。

function onOpen() {
  var ui = SpreadsheetApp.getUi();
  // Or DocumentApp or FormApp.
  ui.createMenu('Custom Menu')
      .addItem('Get Prices', 'getPrices')
      .addToUi();
}

function getPrices() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var inv = ss.getSheetByName('inventory sheet name here');
  var dist = ss.getSheetByName('distributor sheet name here');

  var invv = inv.getDataRange().getValues();
  var distv = dist.getDataRange().getValues();

  var inv_price_col = invv[0].indexOf('put inventory sheet price column name here');
  var dist_price_col = distv[0].indexOf('put distributor sheet price column name here');
  var inv_part_col = invv[0].indexOf('put inventory sheet part number column name here');
  var dist_part_col = distv[0].indexOf('put distributor sheet part number column name here');

  var ds = {};
  for (var i = 0, max = distv.length; i < max; i++) {
    ds[distv[i][dist_part_col]] = distv[i][dist_price_col];
  }
  for (var i = 0, max = invv.length; i < max; i++) {
    invv[i][inv_price_col] = ds[invv[i][inv_part_col]] || '';
  }

  inv.getDataRange().setValues(invv);
}