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 修改和更新您的电子表格。通过此提案,您可以轻松地为 titles 和 colors 添加新代码,以及只能使用 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]
}
参考
我想在我的 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 修改和更新您的电子表格。通过此提案,您可以轻松地为 titles 和 colors 添加新代码,以及只能使用 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]
}