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()