You are heresoftware / Excel
Excel
mu - maildir utils
Ik zag deze tweet passeren van @DriesBultynck:
zoekt nog steeds een manier om een reeks mails uit gmail te exporteren naar excel (incl. date + content). Niemand?
Volgens @haploc zou dat wel moeten lukken met Perl, Email::Simple en Spreadsheet::SimpleExcel. Aangezien ik niet zo vlot ben met Perl, heb ik een andere oplossing gezocht en gevonden: mu (kort voor Maildir Utils).
Helaas heeft mu geen kant-en-klaar pakket voor Debian dus moet het van source geïnstalleerd worden.
wget http://mu0.googlecode.com/files/mu-0.9.7.tar.gz
tar -xvf mu-0.9.7.tar.gz
cd mu-0.9.7
Op mijn systeem ontbraken nog een paar dependencies, met een paar keer ./configure te draaien heb ik ze kunnen achterhalen:
Daarna mu configureren:
Als alles goed gegaan is, dan krijg je op het einde ongeveer zo'n output:
-----------------------------
Xapian version : xapian-config - xapian-core 1.2.3
GLib version : 2.24.2
GMime version : 2.4.14
GTK+ version : 2.20.1
GIO version : 2.24.2
Guile version : 1.8.7
Build unit tests (glib >= 2.22) : yes
Build 'mug' toy-ui (requires GTK+) : yes
McCabe's Cyclomatic Complexity tool : yes
xdg-open : /usr/bin/xdg-open
Have direntry->d_ino : yes
Have direntry->d_type : yes
-----------------------------
Daarna builden en installeren:
sudo make install
cd
Klaar? Bijna. mu werkt door een maildir te indexeren als een database, waar je dan queries op kan loslaten. Voor het indexeren gaat mu uit van een aantal zinnige defaults dus het is niet meer dan:
Afhankelijk van de grootte van de maildir kan dit even duren. Alhoewel. Bij mij viel het nog best mee:
mu: indexing messages under /home/amedee/Maildir [/home/amedee/.mu/xapian]
/ processing mail; processed: 69736; updated/new: 69736, cleaned-up: 0
mu: elapsed: 210 second(s), ~ 332 msg/s
mu: cleaning up messages [/home/amedee/.mu/xapian]
\ processing mail; processed: 69736; updated/new: 0, cleaned-up: 0
mu: elapsed: 2 second(s), ~ 34868 msg/s
real 3m32.500s
user 1m21.021s
sys 0m7.692s
Als je mu regelmatig gebruikt, dan is misschien geen slecht idee om mu index toe te voegen als cron job.
Nu mu geïnstalleerd is, kan je queries draaien zoals
Dit geeft bij mij als output:
<messages>
<message>
<from>1T3XT BVBA <info [at] 1t3xt [dot] info></from>
<to>Post all your questions about iText here <itext-questions [at] lists [dot] sourceforge [dot] net></to>
<subject>Re: [iText-questions] Adding watermark in front of the page background color</subject>
<date>1323524095</date>
<size>7149</size>
<msgid>4EE35FFF [dot] 6070006 [at] 1t3xt [dot] info</msgid>
<path>/home/amedee/Maildir/.mailinglijst.itext-questions/cur/1323524308.25506_3.intrepid:2,</path>
<maildir>/.mailinglijst.itext-questions</maildir>
</message>
<message>
<from>Balder VC <lists [at] redlab [dot] be></from>
<to>itext-questions [at] lists [dot] sourceforge [dot] net</to>
<subject>Re: [iText-questions] XMLWorker & RTL</subject>
<date>1323524276</date>
<size>7769</size>
<msgid>4EE360B4 [dot] 8040008 [at] redlab [dot] be</msgid>
<path>/home/amedee/Maildir/.mailinglijst.itext-questions/cur/1323524480.9255_3.intrepid:2,</path>
<maildir>/.mailinglijst.itext-questions</maildir>
</message>
<message>
<from>Balder VC <lists [at] redlab [dot] be></from>
<to>Post all your questions about iText here <itext-questions [at] lists [dot] sourceforge [dot] net></to>
<subject>[iText-questions] Fwd: Re: XMLWorker & RTL</subject>
<date>1323525006</date>
<size>19787</size>
<msgid>4EE3638E [dot] 7020708 [at] redlab [dot] be</msgid>
<path>/home/amedee/Maildir/.mailinglijst.itext-questions/cur/1323525223.17054_3.intrepid:2,</path>
<maildir>/.mailinglijst.itext-questions</maildir>
</message>
</messages>
Meer voorbeelden van queries zijn te vinden op de mu cheatsheet.
Nu is het gewoon nog een kwestie van:
- Een lokale IMAP-server installeren die Gmail binnentrekt (zelf ben ik nogal fan van Dovecot)
- De gepaste query verzinnen, met XML output.
- De XML-file binnentrekken in een spreadsheetprogramma.
Voila, dit is één mogelijke oplossing.
Excel/VBA High Resolution Timer
Copy-paste code voor mezelf, omdat ik dit dikwijls nodig heb.
Sub TimeTestAPI()
' source: John Green / Stephen Bullen / Felipe Martins:
' Excel 2000 VBA Programmer´s Reference
' Wrox Press Ltd., Birmingham, 1999, 3. Reprint November 2000
' Chapter 18: Programming with Windows API, page 336f
Dim obTimer As New CHighResTimer
Dim x As Integer
Dim y As Integer
Dim A As Integer
Dim B As Integer
Dim C As Integer
Dim i As Integer
Dim j As Integer
obTimer.StartTimer
' voert enkele berekeningen uit om wat tijd te verdrijven ;-)
x =
y =
For i = 1 To 1000
For j = 1 To 1000
A = x + y + i
B = y - x - i
C = x - y - i
Next j
Next i
obTimer.StopTimer
Debug.Print obTimer.Elapsed * 1000
MsgBox "De berekening duurde " & obTimer.Elapsed * 1000 & _
" milliseconden.", vbInformation, _
"Info aan " & Application.UserName
End Sub
'PUT FOLLOWING CODE IN A CLASS MODULE CHighResTimer
'**************************************************************
Option Explicit
'How many times per second is the counter updated?
Private Declare Function QueryFrequency Lib "kernel32" _
Alias "QueryPerformanceFrequency" ( _
lpFrequency As Currency) As Long
'What is the counter's value
Private Declare Function QueryCounter Lib "kernel32" _
Alias "QueryPerformanceCounter" ( _
lpPerformanceCount As Currency) As Long
'Variables to store the counter information
Dim cyFrequency As Currency
Dim cyOverhead As Currency
Dim cyStarted As Currency
Dim cyStopped As Currency
Private Sub Class_Initialize()
Dim cyCount1 As Currency, cyCount2 As Currency
'Get the counter frequency
QueryFrequency cyFrequency
'Call the hi-res counter twice, to check how long it takes
QueryCounter cyCount1
QueryCounter cyCount2
'Store the call overhead
cyOverhead = cyCount2 - cyCount1
End Sub
Public Sub StartTimer()
'Get the time that we started
QueryCounter cyStarted
End Sub
Public Sub StopTimer()
'Get the time that we stopped
QueryCounter cyStopped
End Sub
Public Property Get Elapsed() As Double
Dim cyTimer As Currency
'Have we stopped or not?
If cyStopped = Then
QueryCounter cyTimer
Else
cyTimer = cyStopped
End If
'If we have a frequency, return the duration, in seconds
If cyFrequency > Then
Elapsed = (cyTimer - cyStarted - cyOverhead) / cyFrequency
End If
End Property
Mobile Vikings call history in Excel
Een export naar XML of CSV of XLS voorzien ze ook niet.

Toch is het vrij eenvoudig om uw call history binnen te trekken in uw favoriete spreadsheet.
Microsoft Excel 2003
Ga naar File -> Open (Bestand -> Openen) en geef de volgende bestandsnaam in:
Een beetje uitleg:
EDIT: gewijzigd naar 1000 na een van onderstaande comments. Het is niet de bedoeling dat ik de server van Mobile Vikings laat crashen.
Volgens de API documentatie van Mobile Vikings kan je ook nog een einddatum meegeven:
Excel komt eerst vragen om uw Mobile Vikings login en wachtwoord.

Daarna vraagt Excel hoe het XML-bestand geopend moet worden. Kies daar Als een XML lijst.

Klik op OK bij de melding dat er geen schema is.

Je krijgt dan je call history. Ik vind het wel handig om dan te kunnen filteren op is_data of op is_sms.
OpenOffice.org Calc
Om een of andere reden wil OOo Calc het XML-bestand niet rechtstreeks van de URL openen (getest met Portable OpenOffice.org 3.0).Ik heb het ook geprobeerd met Insert -> Link to External Data, maar dat lukt ook niet.
En als ik de URL eerst open in een browser en dan lokaal opsla, dan opent OpenOffice.org het bestand met Writer ipv met Calc, dwz je ziet dan de raw XML. Daar valt dus weinig mee aan te vangen.
Als iemand weet hoe ik het aan de praat krijg voor OpenOffice, smijt het aub in de comments. Dankuwel!
