-
-
Notifications
You must be signed in to change notification settings - Fork 30
CSV Import
Open the Loot History, select "CSV" from the export dropdown, and hit export. The export frame now opens and have all the data pre-selected. Simply copy the data (Windows: Ctrl+C
) and paste it where you need it.
- Open a new sheet, and paste the data.
- Select the first column (click the
A
column) or the entire sheet (Windows:Ctrl+A
) - In the toolbar, click
Data
and clickSplit text to columns
This describes the process in Office 365 Excel, but it's probably the same for other versions as well.
- Open a new spreadsheet and paste the data.
- Select the first column (click the
A
column). - Click the
Data
tab on the ribbon and clickText to Columns
in the data tools group. - In the Text Wizard, ensure
Delimited
is selected and click Next. - Ensure
Comma
is the only selection in the Delimiters section, and click Finish.
Save the data in a new text document and rename it so it end with .csv
. This file can now be imported to various spreadsheet programs, including Excel and Google Sheets.
Your CSV exported data can be directly imported to the addon again. If you've stored or edited the data by any other means, here's a guide for importing it.
For your convenience I made an extra effort to make importing from Google Sheets extremely easy. There's only two steps:
- Select (
Ctrl-A
) and copy (Ctrl-C
) everything in the sheet. - Paste (
Ctrl-V
) the data into Import Frame and click Accept.
Note: This assumes there's only the required amount of columns present (i.e. no blank columns gets selected). You'd need to only select the columns with content otherwise.
All CSV files can be imported by copying the content and pasting it to the import frame in the addon. Do note spreadsheets programs usually have the option to export to CSV.
Whether you want to add a couple of missing awards to your history, or import a whole lot of data from a different addon, here's a how-to.
To simplify the process I've made a Google Sheet Template you can use. This also includes a full fletched example (row 1) and a minimum required example (row 2). Refer to the Field description below for information on each individual field.
Once you've filled out the fields, the import process is the same as described above.
Note: The order of the headers is important, and as such they may not be moved around or deleted.
Detailed description of each of the fields of the import. Note the Validation column describes the required format. The data can still be invalid even if the format is correct.
Empty
means "nothing" in spreadsheet programs, but technically is an empty string ""
.
Field | Requirement | Validation | Description |
---|---|---|---|
player | Required | Non empty | The name of the player winning the item. If not provided, the realm is assumed to be the same as your own. |
date | Optional | Empty or dd/mm/yy | The date of award in dd/mm/yy format. |
time | Optional | Empty or hh:mm:ss | Time of the award in hh:mm:ss format. |
id | Optional | Empty, number or id | A unique id string of the award. The left part of the id is the unix time of the award, and the right side is a simple incremental number. Also acceptes a pure unix timestamp, in which case the id is added automatically. You can use this to specify an exact time of the award. |
item | Not used | Anything | Name of the item won. |
itemID | Semi | Empty or number | ItemID of the item won. |
itemString | Semi | Empty or itemString | ItemString of the won item. |
response | Not used | Anything | The clear text of the response. Will be overridden by responseID. |
votes | Optional | Empty, 'nil' or number | Number of votes for the winner. |
class | Required | ClassFile | The winner's class. Not strictly required, but can have undocumented effects if missing. |
instance | Optional | Anything | Name-difficulty of the instance. Only english is supported at this time. |
boss | Optional | Anything | Name of the encounter where the item were looted. |
difficultyID | Optional | Empty or number | The DifficulyID of the instance. |
mapID | Optional | Empty or number | The MapID of the instance. |
groupSize | Optional | Empty or number | Number of people in the group when the awarding happened. |
gear1 | Optional | Anything | An item the winner were wearing when receiving the loot. This is what's normally shown in the gear section of the voting frame. If provided, it must be a valid argument for GetItemInfo |
gear2 | Optional | Anything | Same as gear1. Gear1 must be provided if gear2 is provided. |
responseID | Required | Text or number | ID of the winner's response to the item. This number corresponds to the index of the response in the options menu, i.e. the default "Offspec/Greed" has ID 2. If a set of buttons have been created for that particular item group, then those responses are used. |
isAwardReason | Optional | Empty or boolean | True if the award is one of the award reasons. Otherwise empty or false. |
subType | Not used | Anything | Winning item's ItemSubType. Not used during import as it's extracted from the item. |
equipLoc | Not used | Anything | Winning item's ItemEquipLoc. Not used during import as it's extracted from the item. |
note | Optional | Anything | The winner's note as sent to the council. |
owner | Required | Non Empty | Source of the loot (boss or playername). It's only really required as I need something to mark the end. |
You may use either of the fields (itemID, itemString) to determine the loot given in this entry. Either of them must qualify as a valid input for GetItemInfo
. They provide varying degree of details, with the itemString being the only one to fully identify an item, and thus is preferred. Only one of the fields are used to determine the item, and they are ranked as:
itemString > itemID
There's a few caveats:
-
itemID
The item id can only determine the base item, which is usually the "normal" version of the item. -
itemString
The most detailed version, which can contain information about everything from Warforged status to enchants and gems. Also the most cumbersome to edit.
The easiest way is to search for the item on https://wowhead.com. For example, I found the Robes of Sunken Nobility and want to add it. The itemID is straight forward, and can be found in the URL of the page, in this case item=168335
. I'd then simply have to put 168335
into the itemID field.
Now I remembered I wanted the mythic version of the item, so I change the item version to mythic on the site. This requires me to use the itemString to import into the game. To get this, click the "Links" button and select "In Game-Link". This will copy something like /script DEFAULT_CHAT_FRAME:AddMessage("\124cffa335ee\124Hitem:168335::::::::120::::2:4824:1517:\124h[Robes of Sunken Nobility]\124h\124r");
to your clip holder. This link is designed to be pasted in the chat frame in-game, and is not a valid argument for GetItemInfo
- we need either the itemLink or the itemString.
If in doubt just copy everything between the "'s, i.e. \124cffa335ee\124Hitem:168335::::::::120::::2:4824:1517:\124h[Robes of Sunken Nobility]\124h\124r
, but we can make do with the itemString, i.e. item:168335::::::::120::::2:4824:1517
.
v2.16.0 brings some changes to the CSV export in order for it to be importable. If you keep an external list of the history with CSV, here's a list of the changes.
The full header is now:
"player", "date", "time", "id", "item", "itemID", "itemString", "response", "votes", "class", "instance", "boss", "difficultyID", "mapID", "groupSize", "gear1", "gear2", "responseID", "isAwardReason", "subType", "equipLoc", "note", "owner"
rollType
is no longer included, as it's obsolete and has been for quite some time.
id
, difficultyID
, mapID
and groupSize
have all been added.
gear1
and gear2
showed up as the itemName only - this has changed to be the full itemLink, CSV escaped when needed (added quotes if contains commas). This change is probably the most significant, as itemName only in those fields will fail any import. If you need to import your data again, my advice is to delete those fields from your data.
owner
is now probably exported as "Unknown" if unknown (spelling mistake).