使用脚本基于下拉选择设置值

时间:2019-05-28 15:53:34

标签: google-apps-script google-sheets

由于价格会随时间变化,因此我不想将价格永久地绑定到另一个单元格。因此,我希望脚本根据下拉选择来设置价格。

我有Services个工作表,其中有Cost列: enter image description here

我希望脚本根据这样的选择来应用费用(在Selection工作表中): enter image description here

这是示例电子表格: https://docs.google.com/spreadsheets/d/1O1rZUstDNSXPdUVXvaDfPO4rAQs2cJWHimfGxbddtNU/edit#gid=232108540

如何使用脚本将Cost工作表中的值Services设置为Selection工作表?

1 个答案:

答案 0 :(得分:1)

尝试一下:

function cost() {
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getSheetByName('Services');
  var rg=sh.getRange(2,1,sh.getLastRow()-1,2);
  var vA=rg.getValues();
  var costObj={}
  for(var i=0;i<vA.length;i++) {
    costObj[vA[i][0]]=vA[i][1];
  }
  var selsh=ss.getSheetByName('Selection');
  var selrg=selsh.getRange(2,1,selsh.getLastRow()-1,2);
  var vB=selrg.getValues();
  for(var j=0;j<vB.length;j++) {
    vB[j][1]=costObj[vB[j][0]];
  }
  selrg.setValues(vB);
  //if you only want to set columnB you can do this instead of the above line
  //var vC=vB.map(function(r){return [r[1]]});
  //selsh.getRange(2,2,vC.length,1).setValues(vC);
}

作为onEdit():

function cost(e) {//Installable onEdit()
  var sh=e.range.getSheet();
  var name=sh.getName();
  if(name!='Selection')return;
  if(e.value && e.range.columnStart==1) {
    e.range.offset(0,1).setValue(getCostObj()[e.value]);
  }
}  
function getCostObj() {
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getSheetByName('Services');
  var rg=sh.getRange(2,1,sh.getLastRow()-1,2);
  var vA=rg.getValues();
  var costObj={}
  for(var i=0;i<vA.length;i++) {
    costObj[vA[i][0]]=vA[i][1];
  }
  return costObj;
}