Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 基于每行两列的值编写脚本setValue_Javascript_Google Apps Script_Google Sheets_Switch Statement - Fatal编程技术网

Javascript 基于每行两列的值编写脚本setValue

Javascript 基于每行两列的值编写脚本setValue,javascript,google-apps-script,google-sheets,switch-statement,Javascript,Google Apps Script,Google Sheets,Switch Statement,我正在编写一个谷歌表单文档,其中我根据两列计算利润:价格和付款方式。 我需要一个脚本来帮助检查每行中所述列的值,并根据这两列在另一列中设置某个值(净利润) 因此: 如果第2行列E(价格)=47,00欧元和列H(付款方法)=“理想”,则将第2行列K(净利润)中的值设置为42,98欧元 此表有3种不同的价格值:47欧元、37.9欧元和28.20欧元。 我们提供四种不同的支付方式:“理想”、“贝宝”、“Bancontact”和“信用卡” 对于价格价值和支付方式的每种组合,都有不同的净利润。 我试图

我正在编写一个谷歌表单文档,其中我根据两列计算利润:价格和付款方式。 我需要一个脚本来帮助检查每行中所述列的值,并根据这两列在另一列中设置某个值(净利润)

因此:
如果第2行
列E
(价格)=47,00欧元和
列H
(付款方法)=“理想”
,则
将第2行
列K
(净利润)中的值设置为42,98欧元

此表有3种不同的价格值:47欧元、37.9欧元和28.20欧元。
我们提供四种不同的支付方式:“理想”、“贝宝”、“Bancontact”和“信用卡”

对于价格价值和支付方式的每种组合,都有不同的净利润。

我试图编辑以下脚本:

function onEdit() {
  var sheetActive = SpreadsheetApp.openById("mySheetID");
  var s = sheetActive.getSheetByName("mySheetName");
  var r = s.getActiveCell();
      if( r.getColumn() == 7 && r.getValue() == 47)
      var nextCell = r.offset(0, 2);
      nextCell.setValue(42.89);
}
基于此链接中的脚本:

但是我没有让它工作,它也没有考虑两列的值

我还发现了以下脚本:

但我还没有找到如何编辑脚本以满足我的需要

我在脚本编写和编程方面的经验很少,但我认为我需要一个for循环,该循环结合基于两个列值的case/switch在我的行中进行迭代

请帮帮我,提前谢谢

应用程序脚本:
  • 当用户更改电子表格中任何单元格的值时,自动运行该函数
我认为,每次修改工作表中的单元格时,都不需要运行循环来检查和设置净利润值

您可以在应用程序脚本编辑器中手动运行函数,也可以随时更新净利润值

下面是一个示例代码:

var netProfit = [
    //47,00
    {"iDEAL":'€ 42,89',
     "PayPal": '€ 41,09',
     "Creditcard": '€ 42,25',
     "Bancontact": '€ 42,81'},
    //37,60
    {"iDEAL":'€ 34,27',
     "PayPal": '€ 32,47',
     "Creditcard": '€ 33,63',
     "Bancontact": '€ 34,19'},
    //28,20
    {"iDEAL":'€ 25,64',
     "PayPal": '€ 23,84',
     "Creditcard": '€ 25,00',
     "Bancontact": '€ 25,56'},
  ];

function onEdit(e){
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var row = e.range.getRow();
  if(sheet.getRange(row,1).getValue()=='€ 47,00'){
    sheet.getRange(row,3).setValue(netProfit[0][sheet.getRange(row,2).getValue()]);
  }else if(sheet.getRange(row,1).getValue()=='€ 37,60'){
    sheet.getRange(row,3).setValue(netProfit[1][sheet.getRange(row,2).getValue()]);
  }else if(sheet.getRange(row,1).getValue()=='€ 28,20'){
    sheet.getRange(row,3).setValue(netProfit[3][sheet.getRange(row,2).getValue()]);
  }
}

function updateProfit(){

  //Select the sheet where you want to update
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet3');
  var row = 2;

  for(row; row<=sheet.getLastRow(); row++ ){
    if(sheet.getRange(row,1).getValue()=='€ 47,00'){
      sheet.getRange(row,3).setValue(netProfit[0][sheet.getRange(row,2).getValue()]);
    }else if(sheet.getRange(row,1).getValue()=='€ 37,60'){
      sheet.getRange(row,3).setValue(netProfit[1][sheet.getRange(row,2).getValue()]);
    }else if(sheet.getRange(row,1).getValue()=='€ 28,20'){
      sheet.getRange(row,3).setValue(netProfit[2][sheet.getRange(row,2).getValue()]);
    }
  }
  
}
=IFNA(ARRAYFORMULA(VLOOKUP(A2:A10&B2:B10,{A16:A27&B16:B27,C16:C27},2,0))," ")
用于在每个行数组中执行非数组函数

用于从一系列值中搜索键,并返回找到的行中特定单元格的值

我们使用VLOOKUP()搜索所选范围内的价格和付款方式。这将返回C列中提供的净利润值。我们使用ARRAYFORMULA()在所选范围内的每一行中执行此vlookup()