Google Sheets - 创建将内容自动化到单独列的 SKU

问题描述

我想在我的 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'

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",1)="S24","Sandals","Boots"))))

I1:=arrayformula(IF(A1:A="Handle","Option1 Value",IF(LEN(INDEX(SPLIT(N1:N,2))>1,"Multicoloured",2)=1,"Blue",2)=2,"Red",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,允许您使用名为 Spreadsheet Service

的服务创建、访问和修改 Google 表格文件

在我随附的代码中,有一个名为 [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,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,arr){
 const code = item[0].split('-')[2]
 arr[index] = [code]
}

参考