![](/img/trans.png)
[英]How do i translate SORT and Match google sheet formula into app script/ javascript?
[英]How do you move logic from Google Sheet formula to Javascript?
我有一個 function yahoofinance
,它根據股票代碼查詢 Yahoo.Finance 的股票數據,在我調用 function 之前。我需要對輸入做一些修改。
我工作表中的代碼采用[venue].[company]
形式,例如XNAS.GOOG
(納斯達克的谷歌)、 XAMS.INGA
(阿姆斯特丹的 ING 銀行)和XSWX.CRSP
(瑞士交易所的 Crispr)。
我為場地使用的代碼是國際性的,但大多數 API 不使用這些相同的代碼。 例如,阿姆斯特丹證券交易所的官方名稱是XAMS
,但 Google 上的AMS
是 API ,雅虎上的AS
是 AS。 所以我有一張名為Exchanges
的表格,其中列出了所有這些場所。 調用我的自定義yahoofinance
function 時,它采用標准“XMAS.INGA”作為輸入,然后切斷會場 ( XAMS
) 並查找 Yahoo 名稱 ( AS
),然后將INGA.AS
傳遞給 Yahoo API:
=yahoofinance(index(split(A2, "."), 0, 2) & "." & vlookup(index(split(A2, "."), 0, 1), Exchanges!E:J, 6, false))
function yahoofinance(ticker) {
// send ticker to Yahoo API
}
現在在工作表的單元格B2
中的邏輯變得越來越復雜。 如果可能的話,我想將它移動到 function 中並僅傳遞A2
中的自動收報機:
=yahoofinance(A2)
function yahoofinance(ticker) {
const venue = ticker.split();
// etc
// end up with INGA.AS, and pass to Yahoo API
}
我的問題是:是否可以將我工作表中的邏輯移到 function 中? 例如,我是否以及如何從yahoofinance
vlookup
有可能嗎?
我打算真正擴展yahoofinance
的功能,甚至可能將其改寫為通用finance
function,它也將您要傳遞代碼的 API 作為參數: =yahoofinance(ticker, api)
,所以任何幫助我開始在這里有堅實的基礎是非常感謝的。
您可以嘗試使用此自定義公式來獲取修改后的值:
function yahoofinance(ticker) {
var [venue, company] = ticker.split("\.");
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Exchanges');
var lastRow = sheet.getLastRow();
// get Exchanges!E:J values
var mapping = sheet.getRange(1, 5, lastRow, 6).getValues();
// lookup equivalent, filter then get 6th column and append to company
var modifiedTicker = company + '.' + mapping.filter(row => row[0] == venue).flat()[5];
// you now have the modified ticker. Use it on your function.
// ...
return modifiedTicker;
}
=index(split(A2, "."), 0, 2) & "." & vlookup(index(split(A2, "."), 0, 1), Exchanges!E:J, 6, false)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.