Опираясь на ответ, данный Тиммером , я построил функцию, которая разбивает значения и публикует их в разные столбцы на втором листе.
Здесь вы go:
function split_values(){
var ss = SpreadsheetApp.getActiveSpreadsheet()
var sheet = ss.getSheetByName("Original_Data"); //Your original Sheet Name
var sheet2 = ss.getSheetByName("Product_Measurement"); //Your modified Sheet Name
var cellRange = sheet.getDataRange();
var cellValues = sheet.getDataRange().getValues(); //All values from original sheet.
var arrayItems = [];
var array_to_print = [];
cellValues.forEach(function(row, index) {
//Uncomment the below line if in sheet 1 we have header row that needs to be ignored.
//if (index !== 0) {
var cell = sheet.getRange(index+1, 2)
if(cell.getValue() != "Success"){ //Check if we have already parsed this row
cell.setValue("Success") //If not, parse it and set status as Success.
var split_item = row[0].split(/item_meta: /g);
for(var i=1;i<split_item.length;i++){
var item = split_item[i].split(/, 'Total Area/)[0].split(/, 'Total Area/)[0].replace(/'/g,'"')+ '}';
item = JSON.parse(item);
arrayItems.push(item); //Add all the split prdoducts to an Array.
//} Uncomment for header.
}}
});
//Add only required details to the array that needs to be put in different columns.
for (var i = 0; i < arrayItems.length ; i++) {
array_to_print.push([arrayItems[i].Brand,arrayItems[i].Series,arrayItems[i].Model,arrayItems[i]['Length (mm)'],arrayItems[i]['Width (mm)'],"Success"])
}
//Print the array in the Modified sheet.
if(array_to_print.length>0){
sheet2.getRange(sheet2.getLastRow()+1, 1,array_to_print.length,6).setValues(array_to_print);
}
}
В листе я также добавил несколько пунктов меню и создал третий лист для сдвига элементов успеха. Вы можете запустить функции из пункта меню «Функции скрипта Google».
Надеюсь, это вам поможет!