【发布时间】:2020-09-09 01:13:02
【问题描述】:
我确信这一定很简单,但我不是开发人员,并且已经为此苦苦挣扎了一段时间,希望有人能提供帮助。
基本上我有一个二维发票数组:
Date | Total | Currency
2020-08-17 | 500 | GBP
2020-08-15 | 1000 | USD
我想添加第 4 列以将总数标准化为一种货币,在本例中为 GBP。
我有一个像这样的辅助汇率表(但假设它将来可能有其他汇率):
Date | USD-to-GBP
2020-08-18 | 0.75
2020-08-17 | 0.745
2020-08-16 | 0.749
2020-08-15 | 0.740
我正在使用 foreach 遍历发票数组,并有一个 if 语句说“如果货币是 GBP,那么总金额保持不变”,但我需要说“如果货币是 USD,则在汇率表匹配发票日期并获取汇率'
这是目前为止的代码:
function GBPTotal() {
var ss = SpreadsheetApp.getActive();
// Getting data from the zapier populated spreadsheet
var receivablesSheet = ss.getSheetByName("zap receivable");
var receivablesLastRow = receivablesSheet.getLastRow();
var receivablesData = receivablesSheet.getRange(2,1,receivablesLastRow-1,4).getValues();
// Getting data from the exchange rates table
var exchangeRateSheet = ss.getSheetByName("Exchange Rates");
var exchangeRateLastRow = exchangeRateSheet.getLastRow();
var exchangeRateData = exchangeRateSheet.getRange(2,1,5,3).getValues();
var totalInGBPArray = [];
receivablesData.forEach(function(receivablesRow){
var total = receivablesRow[2];
var currency = receivablesRow[3];
// Switch to detect the currency and act accordingly
switch (currency) {
case "GBP":
var TotalInGBP = total;
break;
case "USD":
/**** HELP - EXCHANGE RATE LOOKUP IN HERE *****/
break;
}
receivablesRow.push(TotalInGBP);
totalInGBPArray.push([TotalInGBP]);
});
//Logger.log(totalInGBPArray);
receivablesSheet.getRange(2,5,receivablesLastRow-1,1).setValues(totalInGBPArray);
}
我正在查看地图,因为它似乎是最高效的解决方案,但我不会真正使用大数据集,所以也许我应该接受最容易理解的任何东西。
【问题讨论】:
-
这可以通过公式轻松完成?你会接受公式解决方案吗?
-
你不应该也检查日期吗?
标签: google-apps-script google-sheets google-sheets-formula