Есть ли способ вернуть значение в ячейку при вводе кода? - PullRequest
0 голосов
/ 17 января 2020

Я ищу, чтобы настроить лист продукта, который содержит штрих-коды, связанные с названием продукта. У меня есть все мои продукты, введенные в столбце A, и я введу продукты, соответствующие штрих-коду в столбце B

. На другом листе, который я использую в качестве инвентаря, я хотел бы иметь возможность сканировать штрих-код в столбце a но верните название продукта.

Я нашел обходной путь с формулой, но это прерывает некоторые из скриптов приложений Google, которые я уже запустил на листе, поэтому искал бы скрипт приложений Google

Код, который я ищу, читал бы что-то вроде; onEdit (), когда штрих-код сканируется / вводится в столбец листа 1 a, он просматривает столбец листа 2 b и возвращает соответствующее значение в этой строке из столбца листа 2 a в столбец листа 1 a.

Я доверяю этому имеет смысл, я только спрашиваю, знает ли кто-нибудь быстрый ответ на этот вопрос, пожалуйста?

1 Ответ

0 голосов
/ 17 января 2020

Вам нужно будет использовать Установленные триггеры для достижения своей цели, потому что Простой триггер onEdit не будет работать из-за его Ограничений , которые не Позволяет устанавливать значения в листах, как вы хотите.

Выполнения сценариев и запросы API не приводят к запуску триггеров. Например, вызов Range.setValue () для редактирования ячейки не приводит к запуску триггера onEdit электронной таблицы.

Учитывая, что вы уже решили эту часть для передачи значений штрих-кода на лист, затем используйте этот код:

function getItemName(e) {
  // Get the two sheets
  var sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets();
  var sheet1 = sheets[0];
  var sheet2 = sheets[1];
  // Get the row and col where the event was triggered
  var range = e.range;
  var col = range.getColumn();
  var row =  range.getRow();
  // If it was in col 1 (A) and row 1, then do something
  if(col === 1 && row === 1){
    // Get the items at the second sheet 
    var items = sheet2.getRange(2, 1, sheet2.getLastRow() - 1, 2).getValues();
    // iterate over them
    for(var i = 0; i < items.length ; i++){
      // if the code is found, set it on the first sheet and exit the loop
      if(items[i][0] === range.getValues()[0][0]){
        sheet1.getRange("B1").setValues([[items[i][1]]]);
        return
      } 
    }
    // if no item found, print this message
    sheet1.getRange("B1").setValues([["No item found"]]);
  }
}

Теперь для настройки устанавливаемого триггера сделайте следующее:

1) Go для вашего проекта скрипта приложений

2) Нажмите Правка-> Триггеры текущего проекта

3) Нажмите «+ Добавить триггер»

4) Выберите:

  • Выберите, какую функцию запустить -> getItemName

  • Выберите источник события-> Из электронной таблицы

  • Выберите тип события -> При редактировании

5) Нажмите Сохранить

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...