Есть ли скрипт, который я могу использовать для поиска дубликатов между двумя электронными таблицами и добавления данных из строки на одном листе к другому - PullRequest
0 голосов
/ 10 апреля 2019

Я готовлю инвентарь для своего работодателя и хотел бы помочь найти сценарий, который может сделать это намного проще. У меня есть две таблицы: одна содержит все номера деталей и описания предметов для предметов, которые я физически пересчитал в инвентаре, а другая представляет собой базу данных от дистрибьютора деталей. Босс только что сказал мне, что мне нужно указать цены на товары в инвентаре магазина, а цены указаны на листе дистрибьютора. Я хотел бы получить скрипт для сравнения двух листов и, когда он найдет соответствующий номер детали, добавить цену из базы данных дистрибьютора в инвентарь магазина.

1 Ответ

0 голосов
/ 10 апреля 2019

Вы можете использовать приведенный ниже код для сравнения номеров деталей и получения цен от продуктов, которые находятся внутри 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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...