Eve x Excel Add-in Version 1.4.0 Patch Notes

Soft-update, CTRL+F5 in the sidebar to get the latest version and restarting excel recommended, will be visible in the sidebar as 1.4 in the top left corner.
Marketplace update will follow to sync that version as the latest and prompt users to update if a version mismatch is detected (Will take some days to be released)

New Functions and parameters
.MARKET_ORDERS_STATS(region_id, type_id, [location_id])

*location_id can be a station or a solarsystem to filter results down to (npc stations in system, and npc stations support to being with). Common use case → Jita 4-4 only

  • Will return an entity containing data about the order set from a normal MARKET_ORDERS call.
    Data is split into .buy and .sell cards, making it easier to get the lowest sell order via the fields .sell.min and highest buy via .buy.max

  • Additionally a 5% percentile price is being returned done by omitting outliers (100/highest buy, 100*lowest sell) and iterating through the prices until a 5% volume number is reached, the formula used exactly will be posted below.

  • Includes .stddev, .median, .volume and .numorders fields.

.MARKET_HISTORY(region_id, type_id, [latest_only])

  • latest_only now accepts a number, will aggregate the market_history data for the past X days based on the number entered. (Old version of latest obtained with TRUE = 1 now, without average data but just the latest market history data entity)
    Exposes the values as direct fields to call upon. (fx. .average_average, .lowest, .highest, .volume, .average_volume)

  • Note that when days are omitted from the results they are exposed via .days_without_data and don’t count for the average calculations.

TYPE(type_id, [include_dogma])

  • New optional parameter for .TYPE calls that will expose dogma attributes of types into a .dogma field on the card.
    It’s outputting the raw data so in some cases it’s not the exact attributes you see in-game.
    But slot layout numbers are fx. shown as normal.

.CHARACTER(character_id, [fetch_location_and_ship])

  • fetch_location_and_ship = TRUE will fetch, if signed in, the characters current location and ship data and append any values returned to the card as fields. (location_solar_system_id, location_station_id, location_structure, ship_item_id, ship_name, ship_type_id)

Data and misc changes

  • Character/corporation blueprints will now return type_id instead of a type card, and not return blueprint_data if the results are going to exceed 500 blueprints to better support large character/corporation blueprint results.
  • Skill queue entries now display .active Boolean fields to match when it outputs (paused) and (active), if a skill has finished and the character hasn’t logged in the list is likely not going to display this value and text, being looked into to improve it more.
  • Filter assets by location_filter and type_id will now expose items nested inside containers, previous version only returned those one level down if the .final_location wasn’t used. Best example is using the id of an office and having things inside a container. Now that will return the expected results.UI
  • Added an error notification to the sidebar if the access token is invalid, so you can reauthorize the character affected.
  • Same error notification will attempt to alert on any ESI errors from functions.
  • Added a link to the function parameter helper website to the sidebar.
  • Added more functions to the try it out section.
  • Fixed a rare issue of market_history sort order being sometimes from oldest date or from the newest date, now it will always return the order as new → old

5% percentile logic in TypeScript (forums display isn’t great here sorry)
First it filter out outliers.
const filteredSellOrders = sellOrders.filter((order: any) => order.price <= minvalSell * 100);
const filteredBuyOrders = buyOrders.filter((order: any) => order.price >= maxvalBuy / 100);

Find the 5% percentile price (orders are already sorted based on buy/sell price)
calculatePercentile(orders: IGet_markets_region_id_orders_200_ok[], percentile: number): number {
const totalVolume = orders.reduce((sum, order) => sum + order.volume_remain, 0);
const percentileVolume = (percentile / 100) * totalVolume;
let cumulativeVolume = 0;
let percentilePrice = 0;
for (const order of orders) {
cumulativeVolume += order.volume_remain;
if (cumulativeVolume >= percentileVolume) {
percentilePrice = order.price;
} return percentilePrice;

This returns pretty close to fuzzworks market percentile numbers, but not exactly as fuzz’s version has a weighted percentile of all orders, instead of stepping through the orders until we find the >=5% volume and return the first order price found.
Any feedback on the percentile or changes in the approach to it are encouraged.

Edit: 23:03
Functions parameter website updated for 1.4

1 Like

1.4.1 Patch notes, just released on 18/10/2023

  • EVE SSO update to login flow so users can continue to login characters after the 19/10/2023 patch

  • Loading spinner added to the login popup, and attempts to display any errors if they occur inside the window.

  • adding singlular “structure_id” support to the “location_id” parameter in the market orders stats function, added a .location_id field to the card if a location_id is being applied to the results.

  • bugfix for error-limits being hit from improper recursion of location fields for assets when used with a strict type_id_or_name filter.

  • cleaning up the error-limit reached message that mentions a slack channel.

  • adding the function name to the error message that was being called when getting an ESI error (in most cases, not everything got added)

Bonus item

  • adding dark-mode option for the sidepanel.

Referring back to my post in the 1.3.0 thread, I ran into the same errors where the sheet was broken and I have to replace 700+ instances of

'https://d.docs.live.net/Applications/Microsoft Excel.app/Contents/Frameworks/ATP.framework/Resources/en.lproj/FUNCRES.XLAM'!_xldudf_EVEONLINE_CHARACTER



This was written up to be looked at already. I’m just reporting a reoccurrence of it with the new release. It’s almost as if the add-in went to look for the data and said “Oh look! A new version” and then forgot what it was doing mid-task and left the lookup hanging. Either way, crawling page to page and doing a find/replace got things back to working again and I’m back in business.

A copy of my sheet has already been submitted for review.

o7 OldGuyMonty

Noticing that


does not show ESS Escrow payments that I have seen so far. There seems to be a significant lag in updating of wallet journal entries. Guessing this is likely due to sheer volume, but the data that is available does not match in game wallet transactions.

For instance. Latest available add-in-data says “9,740,587.50 ISK (OldGuyMonty got bounty prizes for killing pirates in XXXXXXX)”, but in game wallet transaction for that time indicates a value of $7,331,925

Curious. It’s a 25% difference…taxes and ESS?

ESS payments aren’t populated in the ESI endpoint for characters, issue in github: ESS Escow Payment missing in /characters/{character_id}/wallet/journal · Issue #1345 · esi/esi-issues · GitHub

The amount field is used in the .text/.name of the journal entries, which might be the pre-tax number as you guessed. I’ll look at this and see if I can hotfix this for the SDE patch that’s coming soon.

1.4.2 is going out now

  • Updated SDE to latest, including new destroyers
  • Structure support for solarsystem_id filtering in market_order_stats
  • Fixed logic in market history X day aggregate when data was missing a large percentage of days. WIll now return partial data instead of no data

This is new. The 1.4.2 update seems to have screwed my sheet up royally. In addition to the continuing find/replace issue I’m seeing that I cannot even use some function (see pic) as Excel now thinks there is an error. I’ve reloaded the add-in and cleared the web cache with no effect. I’m going to completely delete the add-in the reinstall it and see what happens, but for the moment my sheet is hosed.


mmkay. deft something amiss here. Add-in deleted and reinstalled with no change in symptoms.

=EVEONLINE.CHARACTER_PLANETS(C3) works just fine, but if I select the planet_id (or any of the data under it) it fails to populate that result out to the right of the planets spill. Nothing happens

Another new issue is that in addition to having to run the Find replace for the whole https… issue I also have to run it a second time because in many places EVEONLINE.CHARACTER has been replaced with _FV.

I’m also seeing that the formulas have been changed to add " in them so that =EVEONLINE.CHARACTER(C2.image) is changed to =_FV(C2,"image")

The add-in is definitely broken broken hard for me as I can’t really get anything much past basic card data. I’m going to switch to another computer and see if maybe it’s a personal issue on this instance just to rule it out.

Ok. Tried same sheet on another computer with the same results. Broken beyond recognition.

Tried the clean/scrubbed version of the sheet that I submitted for review as well. The add-in loads and appears to function, but you very quickly run into the “There’s a problem with this formula” error when trying to spin out card data.

One thing different that I do notice is that when typing out the formula the available options now spill out so that you can see what’s available. It just doesn’t work once you choose one.


Also tried creating a completely clean sheet (start over scenario). All the same issues.

I’m investigating this issue on a Macbook to see if I can see what’s causing this. Thanks for the details!

Log Out function also seems to only allow logging in again. It brings up the login prompts and has you go through the whole procedure. Ending here.

Ok. Not sure what happened. Logged into the Excel Web Client and tried the sheets and everything seemed to work there. Noticed some differences in the way formulas were writing so I went back to my Mac native sheet to try that format and suddenly everything was functioning properly.

I’ve got the mac version up and running, and got the exact .property error on my first load, then it just crashed. :upside_down_face:
After some troubles I finally got it to auth the correct license and load the addin correctly.
Good to hear the problem just magically fixed itself. Let’s hope it stays that way for now!

edit: I’ve potentially fixed the logout issue, it was breaking on all versions, most likely after some SSO updates.

Hopefully with the dev version up on mac I can also recreate the loadup issues. Fingers crossed!

1 Like

1.4.3 release notes. Currently running the production pipeline.

  • Updated SDE for Havoc!
  • Blueprint explosion now better resolves complicated blueprints.
  • Logout button functionality fixed.
  • Darkmode improvements and minor UI improvements for Mac users.
  • MARKET_STRUCTURE_ORDERS_STATS added similar to market_orders_stats
  • New ref_type built in filter for character and corporation wallet journal
  • Wallet journal entities now retain their original ID for matching against wallet transactions references.
  • Excel Online is now detected by functions that can use paging and will now default to page 1 without affecting desktop users.
  • Lowered paging sizes so excel web can display data without crashing
  • Finding that Excel loses my login info as soon as I reopen the program. Have to re-login and activate almost every time I open it.
  • May need to whitelist Microsoft.com for ad-blocking otherwise the add-in breaks and will not load/update/install when an update is pushed out. Typically when an update is pushed it’s a 30 minute exercise for me to get it reinstalled and working again.
  • Be prepared to rebuild the sheet with each new update as, for some reason, it still overwrites the formulas and you have to replace

'https://d.docs.live.net/Applications/Microsoft Excel.app/Contents/Frameworks/ATP.framework/Resources/en.lproj/FUNCRES.XLAM'!_xldudf_EVEONLINE_


eve online.

More playing today. Some thoughts…

  • Would LOVE a way to have a results spill play out as a Data Validation dropdown rather than a multi-line spill. This data validation dropdown might then spill associated data based on what is selected.

  • Unable to pull JUST the top entry of the skill queue. Instead have to pull the entire queue. (either that or the formula evades me so far)

  • Want an easier way to pull values from pin data. For instance. I want to set a calculation to show the fill status of my launchpad “pins” for a PI planet (2 launchpads per planet). Instead of doing a SUM( ) on the .AMOUNT contained in type 2555 (Lava Launchpad), then subsequently convert to m3 and weigh against available launchpad capacity, I have to spill everything out and make a mess.

1 Like

=INDEX(function, 1) will return the top cell of the array.

For the summing up part you can potential do something like this, to get the amount which (hopefully can be then converted to m3)
G22 is the planet from the _PLANETS function, and I used a Barren Launchpad to test.

=SUM(FILTER(EVEONLINE.CHARACTER_PLANET(G22.owner_id,G22.planet_id).pins.contents.amount,EVEONLINE.CHARACTER_PLANET(G22.owner_id,G22.planet_id).pins.type.id = 2544))

But this could be automated for launchpads to have it directly as a field that’d be called launchpad contents. I’ll add a ticket for it since it seems a reasonable feature to me.

1 Like