2 Вопрос: Загрузка на другой лист с условиями

вопрос создан в Wed, May 8, 2019 12:00 AM

Мне нужна помощь с моим проектом. Конечная цель игры состоит в том, чтобы пользователь выбрал ячейки в строке, а затем использовал кнопку для загрузки этих данных на другой лист. При загрузке я хочу сопоставить определенную ячейку и заполнить определенные пустые ячейки в этой строке. Если совпадение не найдено, мне нужно создать новую запись.

Идея состоит в том, что группа использует несколько листов, каждый лист имеет одинаковые категории, но на каждом листе заполняются только определенные ячейки. Поэтому мы хотим объединить все данные на одном листе, чтобы вам не нужно было смотреть на кучу разных листов, чтобы получить все данные. Например, идентификатор продукта 123456 присутствует в главной записи, поэтому, когда пользователь загружает данные с этим идентификатором продукта, он добавляет информацию, такую ​​как вес, рост и т. Д., В соответствующие ячейки в этой строке. Если пользователь загружает идентификатор продукта 654321, а его нет в мастере, он создает новую строку с выбранными данными и помещает в соответствующие ячейки.

Итак, сейчас у меня есть загрузка всего на мастер-лист без проверки идентификатора продукта. Каждый раз, когда он создает новую запись каждый раз. Мне нужно, чтобы он проверил данные определенной ячейки и, если они присутствуют в основной записи, не добавляйте данные в новую строку, вместо этого добавьте данные в эту строку в соответствующей ячейке.

Пока все довольно просто:

function uploadData(){
 var css = SpreadsheetApp.getActiveSpreadsheet(); //setup current spreadsheet
 var csheet = css.getSheetByName("Sheet1") //setup current sheet
 var cdata = csheet.getActiveRange().getValues(); //get selected data values
 var sRows = csheet.getActiveRange().getLastColumn(); //get the value of the last column selected

 var mss = SpreadsheetApp.openById('1N5Orl2fQvmFmK63_y78V2k7jzBUYOjDxhixMSOCU7jI'); //open mastersheet for adding data
 var msheet = mss.getSheets()[0]; //get the sheet
 var mfindnextrow = msheet.getRange('A:A').getValues(); //get the values

 //this next code i found online, this allows me to insert new data on a new row without any data present
 var maxIndex = mfindnextrow.reduce(function(maxIndex, row, index) {
 return row[0] === "" ? maxIndex : index;
  }, 0); 

 //start looping through the row 
 cdata.forEach(function(row){
 msheet.setActiveRange(msheet.getRange(maxIndex + 2, 1, 1, sRows)).setValues(cdata); //put the data into the mastersheet
  });
};    

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

    
0
2 ответа                              2                         

Попробуйте это:

function moveSelectedData(){
  var css=SpreadsheetApp.getActive();
  var csheet=css.getSheetByName("Sheet1"); 
  var cdata=csheet.getActiveRange().getValues();
  var mss = SpreadsheetApp.openById('ssid');
  var msheet = mss.getSheets()[0];//first sheet on the left
  msheet.getRange(msheet.getLastRow()+1,1,cdata.length,cdata[0].length).setValues(cdata);
}
    
0
2019-05-08 17: 01: 42Z
  1. Спасибо! Я получил это немного по-другому: var sRows = csheet.getActiveRange (). GetLastColumn (); //получить значение последнего выбранного столбца, теперь мне нужно сопоставить определенную ячейку и добавить данные в строку, если она есть, а если нет, создать новую запись
    2019-05-08 17: 19: 30Z

Проблема в индексах msheet.getRange(maxIndex + 2, 1, 1, 1)

Последние два - размер диапазона. Использование 1,1 ограничивает диапазон до 1 строки x 1 столбца = 1 ячейка.

    
0
2019-05-08 17: 14: 32Z
  1. Да, это была моя начальная проблема! Но я решил эту проблему следующим образом: var sRows = csheet.getActiveRange (). GetLastColumn (); //получаем значение последнего выбранного столбца и используя sRows: msheet.getRange (maxIndex + 2, 1, 1, sRows). Теперь мне нужно сопоставить определенную ячейку и добавить информацию, если она есть, а если нет, создать новую запись (как у меня сейчас)
    2019-05-08 17: 20: 20Z
  2. @ dukereuchre Вопросы на этом сайте должны быть конкретными и ограничиваться одним вопросом. Я предлагаю вам опубликовать дополнительный вопрос.
    2019-05-08 17: 22: 57Z
  3. хорошо, я опубликую новый! Спасибо!
    2019-05-08 17: 36: 54Z
  4. Рубен, я сделал новое сообщение, но все еще довольно потерян, я разместил здесь: stackoverflow.com/questions/56046504/… , и я также сделал сообщение Reddit в GoogleAppScript, но нет ответов пока нет ... может быть, это более подробно: reddit.com/r/GoogleAppsScript/comments/bm9jto/… если у вас есть время, я действительно могу использовать руку.
    2019-05-08 20: 03: 50Z
источник размещен Вот