Page 1 of 2 12 LastLast
Results 1 to 20 of 23
  1.    #1  
    Hi,

    I've long been a lurker here, but fear my first post will also be my last , excepting discussion. I'm replacing my trusty Treo 650 with a smart new Android phone. My final task for the Palm was to export my data (contacts, memos, tasks, and calendar) so I could use it on my new phone.

    There's a nice guide, "Palm to Open Source", that explains many options for exporting. However none of the methods for exporting Palm Calendar information looks very reliable, especially in their handling of different types of repeating events. I was keen to preserve this accurately - it's the closest thing I have to a diary and I don't want to forget all the future and recurring events. I have more than 4500 events (not counting repeats) going back more than ten years (I had a Palm V before the Treo), so a reliable transfer was crucial for me.

    So I wrote my own tool, palm2ical, for exporting to a standard iCalendar file, suitable for import to Microsoft Outlook, Google Calendar, Mozilla Sunbird, and many other calendar applications (I'm still playing with different options for synching with Android). I have made detailed checks that everything is correctly transferred to those three applications.

    You can find documentation and downloads here.

    I hope other people find this useful - if you do, or if you have any questions or problems, please comment here and I'll try to help.

    - Tim.
    Last edited by TimAdye; 12/11/2009 at 08:23 PM. Reason: added explicit links
  2. jesup's Avatar
    Posts
    3 Posts
    Global Posts
    15 Global Posts
    #2  
    Got these errors (I get the same ones running it under a plain command shell). I plan to try it on a Fedora system tomorrow, but I doubt that will change anything.

    Code:
     /cygdrive/d/Temp/palm2ical/palm2ical.exe -t America/New_York 
    read Palm Database CalendarDB-PDat.PDB and write iCalendar file CalendarDB-PDat.ics
    Use of uninitialized value $day in sprintf at script/palm2ical line 386.
    Use of uninitialized value $hour in sprintf at script/palm2ical line 386.
    Use of uninitialized value $minute in sprintf at script/palm2ical line 386.
    Use of uninitialized value $second in sprintf at script/palm2ical line 386.
    Use of uninitialized value $day in sprintf at script/palm2ical line 386.
    Use of uninitialized value $hour in sprintf at script/palm2ical line 386.
    Use of uninitialized value $minute in sprintf at script/palm2ical line 386.
    Use of uninitialized value $second in sprintf at script/palm2ical line 386.
    Use of uninitialized value $day in sprintf at script/palm2ical line 386.
    Use of uninitialized value $hour in sprintf at script/palm2ical line 386.
    Use of uninitialized value $minute in sprintf at script/palm2ical line 386.
    Use of uninitialized value $second in sprintf at script/palm2ical line 386.
    Undefined subroutine &Class::ReturnValue::error_condition called at script/palm2ical line 458.
  3. #3  
    When I follow your instructions, I get the following error message: No handler defined for creator "CESJ", type "DATA"
    Please help!
    Thanks,
    Arnie
  4.    #4  
    Quote Originally Posted by jesup View Post
    Got these errors (I get the same ones running it under a plain command shell). I plan to try it on a Fedora system tomorrow, but I doubt that will change anything.
    Code:
     /cygdrive/d/Temp/palm2ical/palm2ical.exe -t America/New_York 
    read Palm Database CalendarDB-PDat.PDB and write iCalendar file CalendarDB-PDat.ics
    Use of uninitialized value $day in sprintf at script/palm2ical line 386.
    Use of uninitialized value $hour in sprintf at script/palm2ical line 386.
    Use of uninitialized value $minute in sprintf at script/palm2ical line 386.
    Use of uninitialized value $second in sprintf at script/palm2ical line 386.
    Use of uninitialized value $day in sprintf at script/palm2ical line 386.
    Use of uninitialized value $hour in sprintf at script/palm2ical line 386.
    Use of uninitialized value $minute in sprintf at script/palm2ical line 386.
    Use of uninitialized value $second in sprintf at script/palm2ical line 386.
    Use of uninitialized value $day in sprintf at script/palm2ical line 386.
    Use of uninitialized value $hour in sprintf at script/palm2ical line 386.
    Use of uninitialized value $minute in sprintf at script/palm2ical line 386.
    Use of uninitialized value $second in sprintf at script/palm2ical line 386.
    Undefined subroutine &Class::ReturnValue::error_condition called at script/palm2ical line 458.
    Sorry, there was a problem with the Windows version, so it didn't include any other time zones than my own (Europe/London), nor did it include the package that prints out the time zone error message. I fixed this in a new version of palm2ical. The Perl version (running on Fedora or anywhere else) was fine all along.

    Those warnings were actually a symptom of an oddity in your Palm DB file (Jessup sent me a copy). Normally (or at least in my version of PalmOS and earlier) the PDB file creation, modification, and backup times are relative to 1/1/1904. In your file it looks like they are relative to the Unix epoch of 1/1/1970 (unless you last did a backup in 1943! ). I have updated the tool to adjust dates that appear before 1/1/1970. Actually the incorrect date isn't serious - it is just used in some of the informational fields in the iCalendar output.

    Both these fixes (plus some extra error checking) are in the latest version of palm2ical.

    Thanks for reporting this,
    Tim.
  5.    #5  
    Quote Originally Posted by rossarnie View Post
    When I follow your instructions, I get the following error message: No handler defined for creator "CESJ", type "DATA"
    Arnie
    Hi Arnie,

    That message means that the Palm DB file is not recognized as a Datebook or Calendar file. Are you sure you got the right file (DateBookDB.PDB or CalendarDB-PDat.PDB)?

    Alternatively, if you used my second method for extracting the PDB file (using HotSync), was "CESJ" the temporary "Creator" field you set with FileZ? If so, then you need to change that back with fixpdb (see the instructions on my web page).

    If that is not your problem, then maybe you have a different format Calendar file that I've not seen before. What model Palm do you have? Are you using the standard Palm Calendar app?

    Tim.
  6. #6  
    Thanks for your tips - I've got it working nicely now.
    Can you point me to find an application that will do the same thing for my contact list?
  7.    #7  
    Quote Originally Posted by rossarnie View Post
    Thanks for your tips - I've got it working nicely now.
    Great! I'd be interested to know which was the problem. Can you say?

    Can you point me to find an application that will do the same thing for my contact list?
    The best guide I found was the "Palm to Open Source" guide (fornow.wordpress.com/2009/01/08/palm-to-open-source/) I linked to in my original post (goes to Thunderbird that I guess can synch with Gmail etc). That was fine for Contacts, Notes, etc, but didn't have a good method for Calendar - hence my need to write a tool of my own. PocketCopy (linked from my web page) also does Contacts etc, but I'd heard didn't reliably transfer Calendar information (though it seemed better than most), and it isn't free.

    Tim.
  8. #8  
    Quote Originally Posted by TimAdye View Post
    Great! I'd be interested to know which was the problem. Can you say?
    I think it was my own foolish idea to use another application, DbFixIt, to copy (backup) the Datebook to the card, then move it to the computer. When I did it your way, using FileZ, it worked cleanly.

    Thanks for the Contacts tip.
  9.    #9  
    Quote Originally Posted by rossarnie View Post
    I think it was my own foolish idea to use another application, DbFixIt, to copy (backup) the Datebook to the card, then move it to the computer. When I did it your way, using FileZ, it worked cleanly.
    Thanks, that's good to know. I think DbFixIt modifies the creator field in the database when it backs it up. That can be restored on the PC with my fixpdb tool. But, as you say, FileZ is simpler
  10. #10  
    Many Thanks!!! Saved me as I was trying to figure out how to get my Palm Desktop Calendar into Apple's iCal program so that I could sync it with my new Pre. The Palm Desktop export just mangled my calendar horribly.

    Only had 2 issues:
    (1) Entries that were yearly on a specific day of a week of a month (like 4th Thursday of November each year) vanished. No big deal on those as they are almost always common holidays. But just FYI.
    (2) I didn't want to lose my Categorization... so, I exported into separate Category files using your spiffy -c option (THANKS!). However, I had a few entries that weren't in any categories. Not sure if you have an option for that... didn't see one.

    THANKS!!!!!
    Palm Pilot > Palm Vx > Treo 600 > Treo 700p > Pre
  11.    #11  
    Hi Brian,

    I'm glad you found palm2ical useful, and it's good to hear that it works, on the whole, importing to Apple iCal, since I hadn't tried that.

    Quote Originally Posted by Brian Stradale View Post
    Only had 2 issues:
    (1) Entries that were yearly on a specific day of a week of a month (like 4th Thursday of November each year) vanished. No big deal on those as they are almost always common holidays. But just FYI.
    This should work, at least for the palm2ical step. I just tested again by creating an event that repeats on the 4th Thursday of the month, and set it to repeat every 12 months in November (is that what you mean?). I was able to export this to an iCalendar file and import that to Google Calendar. Could it be that this type of event isn't supported by Apple iCal?

    (2) I didn't want to lose my Categorization... so, I exported into separate Category files using your spiffy -c option (THANKS!). However, I had a few entries that weren't in any categories. Not sure if you have an option for that... didn't see one.
    Palm puts everything that is not in any category into one called "Unfiled", so you can specify "-c Unfiled" to select them.

    Tim.
  12. #12  
    Quote Originally Posted by TimAdye View Post
    This should work, at least for the palm2ical step. I just tested again by creating an event that repeats on the 4th Thursday of the month, and set it to repeat every 12 months in November (is that what you mean?). I was able to export this to an iCalendar file and import that to Google Calendar. Could it be that this type of event isn't supported by Apple iCal?

    Apple iCal definitely supports it as I just hand-entered Thanksgiving, Mother's Day, and so on, into iCal. However, I went back to the .ics files that your palm2ical produced, examined them with TextEdit, and sure enough... the entry for Thanksgiving is there! So, assuming how you have it coded is correct .ics format, then it is Apple's iCal that screwed up on import.

    I then had iCal export my Anniversaries Calendar back out. Here's what I learned...

    Your entry was coded like this:

    DTSTART;VALUE=DATE:19981126
    RRULE:INTERVAL=12;FREQ=MONTHLY;BYDAY=4TH
    SUMMARY:Thanksgiving

    Apple's iCal didn't understand that repeating rule... it has the entry, but with no RRULE line. (So, it didn't vanish, it was just way back in 1998 and not repeating.) The entry I hand-entered into iCal was coded like this:

    DTSTART;VALUE=DATE:20081127
    SUMMARY:Thanksgiving!
    RRULE:FREQ=YEARLY;INTERVAL=1;BYMONTH=11;BYDAY=4TH

    Note the differences in how the RRULE was specified.

    Not sure which is right or wrong... but I am sure that Apple's iCal doesn't handle the former right.

    FWIW.
    Palm Pilot > Palm Vx > Treo 600 > Treo 700p > Pre
  13.    #13  
    Quote Originally Posted by Brian Stradale View Post
    Your entry was coded like this:

    DTSTART;VALUE=DATE:19981126
    RRULE:INTERVAL=12;FREQ=MONTHLY;BYDAY=4TH
    SUMMARY:Thanksgiving

    Apple's iCal didn't understand that repeating rule... it has the entry, but with no RRULE line. (So, it didn't vanish, it was just way back in 1998 and not repeating.) The entry I hand-entered into iCal was coded like this:

    DTSTART;VALUE=DATE:20081127
    SUMMARY:Thanksgiving!
    RRULE:FREQ=YEARLY;INTERVAL=1;BYMONTH=11;BYDAY=4TH

    Note the differences in how the RRULE was specified.

    Not sure which is right or wrong... but I am sure that Apple's iCal doesn't handle the former right.
    Both formats are correct and should do the same thing. The first format mirrors the Palm's capabilities, which can do "monthly by day" (in this case every 12 months), but does not do "yearly by month by day". Perhaps iCal doesn't do the former - in which case it doesn't fully support the iCalendar standard.

    It would be interesting to test this. Can you see if you can make an iCal entry for the 4th Thursday of every month? Every second month? Every 12th month? If you can, what does it give when you export that to an iCalendar file?

    Tim.
  14. #14  
    Quote Originally Posted by TimAdye View Post
    It would be interesting to test this. Can you see if you can make an iCal entry for the 4th Thursday of every month? Every second month? Every 12th month? If you can, what does it give when you export that to an iCalendar file?
    BEGIN:VEVENT
    SEQUENCE:4
    TRANSP:TRANSPARENT
    UID:022E7EAE-3198-4737-A0FC-544B97BF5C62
    DTSTART;VALUE=DATE:20091224
    DTSTAMP:20091207T015352Z
    SUMMARY:Test Every 4th Thursday
    CREATED:20091207T015319Z
    DTEND;VALUE=DATE:20091225
    RRULE:FREQ=MONTHLY;INTERVAL=1;BYDAY=4TH
    END:VEVENT
    BEGIN:VEVENT
    SEQUENCE:4
    TRANSP:TRANSPARENT
    UID:E02384A9-503F-4A86-970A-74AEE9973D51
    DTSTART;VALUE=DATE:20091224
    DTSTAMP:20091207T015414Z
    SUMMARY:Test Every Other 4th Thursday
    CREATED:20091207T015355Z
    DTEND;VALUE=DATE:20091225
    RRULE:FREQ=MONTHLY;INTERVAL=2;BYDAY=4TH
    END:VEVENT
    BEGIN:VEVENT
    SEQUENCE:4
    TRANSP:TRANSPARENT
    UID:5D8717A9-8729-4CE4-8CCF-184ED2B9BB3E
    DTSTART;VALUE=DATE:20091224
    DTSTAMP:20091207T015443Z
    SUMMARY:Test Every 12th 4th Thursday
    CREATED:20091207T015418Z
    DTEND;VALUE=DATE:20091225
    RRULE:FREQ=MONTHLY;INTERVAL=12;BYDAY=4TH
    END:VEVENT
    BEGIN:VEVENT
    SEQUENCE:4
    TRANSP:TRANSPARENT
    UID:90830E77-E4F3-420C-B3A0-05FBAF130A4B
    DTSTART;VALUE=DATE:20091224
    DTSTAMP:20091207T015529Z
    SUMMARY:Test Yearly 4th Thursday Dec
    CREATED:20091207T015458Z
    DTEND;VALUE=DATE:20091225
    RRULE:FREQ=YEARLY;INTERVAL=1;BYMONTH=12;BYDAY=4TH
    END:VEVENT
    Palm Pilot > Palm Vx > Treo 600 > Treo 700p > Pre
  15.    #15  
    How odd. Am I missing some other difference, or does iCal nor understand its own export format?
  16. #16  
    I deleted the entries and imported the file... entries showed up just fine.
    Then I reversed the order of the FREQ and INTERVAL attributes...
    From this:
    RRULE:FREQ=MONTHLY;INTERVAL=12;BYDAY=4TH
    to this:
    RRULE:INTERVAL=12;FREQ=MONTHLY;BYDAY=4TH
    When I import that, the entries showed up on the start date, but did not repeat.
    So, iCal does not support those attributes in the order you have them.
    If iCal had a "report a bug" menu item, I'd have sent this to them.
    Palm Pilot > Palm Vx > Treo 600 > Treo 700p > Pre
  17.    #17  
    Quote Originally Posted by Brian Stradale View Post
    So, iCal does not support those attributes in the order you have them.
    If iCal had a "report a bug" menu item, I'd have sent this to them.


    Yes, that does look like an iCal bug: the standard says "The rule parts are not ordered in any particular sequence."

    I'll have a look at swapping the order in the output of palm2ical. That should be easy, but then I'll have to test that it doesn't break other programs that use the output. When that's done, would you be willing to try again with iCal, since I don't have a Mac? (It's easy to test single entries, by selecting a particular record number with palm2ical -r .)

    Thanks,
    Tim.
  18.    #18  
    Hi Brian,

    I uploaded a new version of palm2ical that swaps the INTERVAL and FREQ parameters to work round the bug you found in iCal. A friend with a Mac helped me test this, and it seems to do the trick.

    You might want to check for and reimport other events that repeat in multiples (2 or more) of days, weeks, months, or years. Those would all exhibit the bug. You can find them by searching the .ics file for lines that start with "RRULE:INTERVAL=".

    Thanks for reporting and helping diagnose the problem,
    Tim.
  19. #19  
    Hi folks,
    I can't get the link in the initial post to open a webpage. Is the site down?
    -- Josh
  20.    #20  
    It works for me. Maybe a temporary glitch? Or are you still having problems?

    Tim.
Page 1 of 2 12 LastLast

Posting Permissions