我有一系列数据,例如new_price = [{"a": 1.5}, {"b": 2.1}, {"c": 3.6}]
我有两张包含现有数据的表格,例如:
Sheet A
item old_price
a 1
b 2
c 3.1
Sheet B
item new_price
c 3.6
如果一个项目new_price
(来自数据数组)高于项目old_price
(表A中)20%,我该如何编写代码?或更多,并且该项目尚未在工作表B上,然后将项目复制到工作表B?
输出应为:
Sheet B
item new_price
c 3.6
a 1.5
答案 0 :(得分:0)
试试这个:
function onOpen() {
SpreadsheetApp.getUi().createMenu('MyTools')
.addItem('Update Price Data', 'updatePrice')
.addToUi();
}
function updatePrice(){
var ss1=SpreadsheetApp.getActive();
var sh1=ss1.getSheetByName('Items');
var ss2=SpreadsheetApp.openById('SS2_ID');
var sh2=ss2.getSheetByName('Items');
var rg1=sh1.getDataRange();
var vA1=rg1.getValues();
var rg2=sh2.getDataRange();
var vA2=rg2.getValues();
for(var i=1;i<vA1.length;i++){
var ss2Contains=[];
//if Item columnA in vA2 matches columnA in vA1 then update price
for(var j=1;j<vA2.length;j++){
ss2Contains.push(vA2[j][0]);
if(vA1[i][0]==vA2[j][0] && vA1[i][2]!=vA2[j][2]){
vA2[j][2]=vA1[i][2]
}
}
//if columnA in vA1 is not found in vA2 then append it
if(ss2Contains.indexOf(vA1[i][0])==-1){
sh2.appendRow(vA1[i]);
}
}
rg2.setValues(vA2);//update values in rg2
}
电子表格SS1
电子表格SS2
更新后的电子表格SS2