簡體   English   中英

如何將邏輯從 Google 表格公式移動到 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;
}

B7公式:

=index(split(A2, "."), 0, 2) & "." & vlookup(index(split(A2, "."), 0, 1), Exchanges!E:J, 6, false)

Output:

輸出

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM