Google Таблицы - Создайте SKU, который автоматизирует контент в отдельные столбцы

Я хотел бы создать столбец (SKU) в моих таблицах CSV Google, чтобы при вводе данных вручную в каждую ячейку он автоматически заполнял содержимое в 3 других столбцах (заголовок, цвет, размер).

Я создал пример CSV с выделенными необходимыми столбцами.

Column B - Product title Column I - Colour Column K - Size Column N - SKU

Пример ввода артикула (вводится вручную в столбец N)

L24-1-000 C-2-150

Разбивка значений, присвоенных каждому разделу:

L24 = Lightweight trainers S24 = Sandals

1 = Blue 2 = Red

000 = 0 150 = 1.5

Вывод (автоматически в столбцах B, I и K)

'Lightweight trainers', 'Blue', '0'

'Sandals', 'Red', '1.5'

Ссылка на CSV

https://docs.google.com/spreadsheets/d/1E6NypRcWk4kR7WGsyEzt7Uuja8dU7SaszT9lvJPpHcg/edit?usp=sharing


person Tom    schedule 21.01.2021    source источник
comment
У вас есть раздел поиска, в котором вы определили все эти разделы и их аналоги?   -  person JvdV    schedule 21.01.2021
comment
На данный момент у меня есть только примеры, но они выделены на второй вкладке в электронной таблице.   -  person Tom    schedule 21.01.2021


Ответы (2)


Пожалуйста, попробуйте это:

B1: =arrayformula(IF(A1:A="Handle","Title",IF(INDEX(SPLIT(N1:N, "-"),,1)="L32","Lightweight Trainers", IF(INDEX(SPLIT(N1:N, "-"),,1)="S24","Sandals", "Boots"))))

I1: =arrayformula(IF(A1:A="Handle","Option1 Value",IF(LEN(INDEX(SPLIT(N1:N, "-"),,2))>1,"Multicoloured",IF(INDEX(SPLIT(N1:N, "-"),,2)=1,"Blue",IF(INDEX(SPLIT(N1:N, "-"),,2)=2,"Red",IF(INDEX(SPLIT(N1:N, "-"),,2)="C","Cream",))))))

K1: =arrayformula(IF(A1:A="Handle","Option2 Value",MID(N1:N,LEN(N1:N) - 2,3)))

person Boris Baublys    schedule 21.01.2021
comment
Это отлично работает для столбцов B и I, спасибо! Однако насчет столбца K я не уверен. - person Tom; 21.01.2021
comment
Обновляю формулу в К1. - person Boris Baublys; 21.01.2021
comment
Я правильно понимаю, вы хотите вывести 000, 100, 150, 200, 250 вместо 0, 1, 1.5, 2, 2.5? - person Boris Baublys; 21.01.2021
comment
У вас все правильно, спасибо. - person Tom; 21.01.2021
comment
Я исправил формулу для K1. Теперь отображаются 000, 100, 150 и т. Д. - person Boris Baublys; 21.01.2021
comment
Спасибо. Есть ли способ редактировать коды цветов и коды заголовков во второй вкладке? Или мне придется обновлять формулы каждый раз, когда я хочу добавить новый цвет или заголовок? - person Tom; 21.01.2021
comment
Позвольте нам продолжить это обсуждение в чате. - person Boris Baublys; 21.01.2021

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

В этом случае вам нужно открыть скрипт приложений, нажав Tools > Script editor, и вы увидите редактор скриптов. Он основан на JavaScript и позволяет создавать, открывать и изменять таблицы Google. файлы с помощью службы под названием Spreadsheet Service.

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

function onEdit(e) {
 
 const sheetName = 'abc' // name of your main sheet
 const col = SpreadsheetApp.getActive().getRange('N:N').getColumn() // sku column
 
// call the function that updates the columns only in the sku column has been updated
 if ( 
   e.source.getSheetName() == sheetName &&
   e.range.columnStart == col &&
   e.range.columnEnd == col)
 {
   main(sheetName) // update function
 }
}
 
 
function main(sheetName){
 // sku
 var ss = SpreadsheetApp.getActive().getSheetByName(sheetName)
 var sku = ss.getRange('N2:N').getValues().filter(String) // N: column ok sku
 var last_row = sku.length+1
  // Title
 title = [...sku]
 title.forEach(title_func)
 ss.getRange('I2:I'+last_row).setValues(title) 
 
 // Color
 color = [...sku]
 color.forEach(color_func)
 ss.getRange('K2:K'+last_row).setValues(color)
 
 // Size
 size = [...sku]
 size.forEach(size_func)
 ss.getRange('M2:M'+last_row).setNumberFormat('@').setValues(size)
}

function title_func(item, index, arr){
 const code = item[0].split('-')[0]
 var titles = {
   'L32':'Lightweight Trainers',
   'S24':'Sandals',
   'T19':'Boots',
   'T1':'Test' 
 }
 arr[index] = [titles[code]]
}

function color_func(item, index, arr){
 const code = item[0].split('-')[1]
 var colors = {
   '1':'Blue',
   '2':'Red',
   '1M':'Multicoloured',
   'C':'Cream',
   'O':'Orange',
   'T':'Test'
 }
 arr[index] = [colors[code]]
}

function size_func(item, index, arr){
 const code = item[0].split('-')[2]
 arr[index] = [code]
}

Ссылка

person fullfine    schedule 22.01.2021