如果单元格文本不是重复值,则将单元格文本复制到另一个工作表

时间:2018-04-14 08:53:51

标签: google-apps-script google-sheets duplicates

我有一系列数据,例如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

1 个答案:

答案 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

enter image description here

电子表格SS2

enter image description here

更新后的电子表格SS2

enter image description here