我有一个google表格,里面有一些产品和SKU的列表
数据如下:
title | sku | image | category | price
prod1 | p1-type | 1.jpg | cat1 | 1 USD
prod2 | p2-type | 2.jpg | cat2 | 2 USD
prod3 | p3-type | 3.jpg | cat2 | 5 USD
我希望其中的每一行都是重复的,第一列设置为null, SKU值添加"_2"
。所以数据如下:
title | sku | image | category | price
prod1 | p1-type | 1.jpg | cat1 | 1 USD
| p1-type_2| 1.jpg | cat1 | 1 USD
prod2 | p2-type | 2.jpg | cat2 | 2 USD
| p2-type_2| 2.jpg | cat2 | 2 USD
prod3 | p3-type | 3.jpg | cat2 | 5 USD
| p3-type_2| 3.jpg | cat2 | 5 USD
我尝试了下面的应用程序脚本,但是我不能改变值只是在重复的行。如果我改变任何东西,它会在所有行中改变。
function autoDup() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var data = sheet.getDataRange().getValues();
var newData = [];
for(var n in data){
if(n == 0){
newData.push(data[n]); //Skip first row
} else {
newData.push(data[n]);
//set data in first column to null
data[n][0] = ""; //This however set the value in prev row to empty aswell.
newData.push(data[n]);
}
}
sheet.getRange(1,1,newData.length,newData[0].length).setValues(newerData);
}
function funkycopy() {
const ss = SpreadsheetApp.getActive();
const sh = ss.getSheetByName('Sheet0');
const vs = sh.getRange(2,1,sh.getLastRow() - 1,sh.getLastColumn()).getValues();
const oA = [];
vs.forEach(r => {
let c = r.slice();
c[0] = '';
c[1] = c[1] + '_2';
oA.push(r);
oA.push(c);
});
sh.getRange(2,1,sh.getLastRow() - 1,sh.getLastColumn()).clearContent();
sh.getRange(2,1,oA.length,oA[0].length).setValues(oA);
}
箭头符号
我想这个可以。
function fixRange(){
const ss = SpreadsheetApp.getActiveSpreadsheet();
const wSh = ss.getActiveSheet();
var oldValues = wSh.getRange("A2:E" + wSh.getLastRow()).getValues();
var newValues = [];
for(var i=0;i<oldValues.length;i++){
if(oldValues[i][0]!=''){
newValues.push(oldValues[i]);
newValues.push(['',oldValues[i][1] + '_2',oldValues[i][2],oldValues[i][3],oldValues[i][4]]);
}
}
wSh.getRange(2,1,newValues.length,5).setValues(newValues);
}