复制Google工作表中的每一行,复制数据集中的第一列为空



我有一个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);
}

最新更新