Google 表格 - 创建 SKU,将内容自动放入单独的列中

Google Sheets - Create SKU that automates content into separate columns

我想在我的 Google 工作表 CSV 中创建一个列 (SKU),当在每个单元格中手动输入数据时,它会自动填写其他 3 个列(标题、颜色、尺码).

我创建了一个 CSV 示例,其中突出显示了必要的列。

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

示例 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'

Link 到 CSV

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

请试试这个:

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)))

我想向您提出一个替代解决方案来解决您的问题。您可以使用 Google Apps Script 修改和更新您的电子表格。通过此提案,您可以轻松地为 titlescolors 添加新代码,以及只能使用 Apps 脚本才能使用的不同新功能。

在这种情况下,您需要点击 Tools > Script editor 打开 Apps 脚本,您将看到脚本编辑器。它基于 JavaScript and it allows you to create, access, and modify Google Sheets files with a service called 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]
}

参考