X-Git-Url: https://iankelling.org/git/?a=blobdiff_plain;f=bbdb3-csv-import.el;h=9abd27e862f5b4c791e357363d7c3c29246ad31d;hb=431b718e5b57f423a54c25063d23b62dc4dbbf21;hp=b644e52426e49369531d2b74f0c88fc5d317af7b;hpb=190f78899eec5e7977acc0ee2773faee432a5510;p=bbdb-csv-import diff --git a/bbdb3-csv-import.el b/bbdb3-csv-import.el index b644e52..9abd27e 100644 --- a/bbdb3-csv-import.el +++ b/bbdb3-csv-import.el @@ -46,6 +46,8 @@ ;; (setq bbdb3-csv-import-mapping-table bbdb3-csv-import-thunderbird) ;; (setq bbdb3-csv-import-mapping-table bbdb3-csv-import-gmail) ;; (setq bbdb3-csv-import-mapping-table bbdb3-csv-import-linkedin) +;; (setq bbdb3-csv-import-mapping-table bbdb3-csv-import-outlook-web) +;; ;; ;; Simply call `bbdb3-csv-import-buffer' or ;; `bbdb3-csv-import-file'. Interactively they prompt for file/buffer. Use @@ -63,7 +65,9 @@ ;; do M-x bbdb then .* then C-u * d on the beginning of a record. ;; - After changing a mapping table, don't forget to re-execute ;; (setq bbdb3-csv-import-mapping-table ...) so that it propagates. -;; +;; +;; Todo: It would be nice if we would programatically or manually merge all the +;; mapping tables, then we would not have to set one. (require 'pcsv) (require 'dash) @@ -126,7 +130,8 @@ ;; note. PO Box and Extended Address are added as additional address street lines if they exist. -;; If you don't like this, you can remove them. If you want some other special handling, it will need to be coded. +;; If you don't like this, just delete them from this fiel. +;; If you want some other special handling, it will need to be coded. (defconst bbdb3-csv-import-gmail '(("firstname" "Given Name") ("lastname" "Family Name") @@ -161,6 +166,7 @@ (repeat ("Custom Field 1 - Type" "Custom Field 1 - Value")))) "Gmail csv export format") + (defconst bbdb3-csv-import-gmail-typed-email (append (car (last bbdb3-csv-import-gmail)) '((repeat "E-mail 1 - Type"))) "Like the first Gmail mapping, but use custom fields to store @@ -168,6 +174,47 @@ people don't use those labels and using the default labels would create useless custom fields.") +(defconst bbdb3-csv-import-outlook-typed-email + (append (car (last bbdb3-csv-import-outlook-web)) '((repeat "E-mail 1 - Type"))) + "Like the previous var, but for outlook-web. +Adds email labels as custom fields.") + + +(defconst bbdb3-csv-import-outlook-web + '(("firstname" "First Name") + ("lastname" "Last Name") + ("middlename" "Middle Name") + ("mail" "E-mail Address" "E-mail 2 Address" "E-mail 3 Address") + ("phone" + "Assistant's Phone" "Business Fax" "Business Phone" + "Business Phone 2" "Callback" "Car Phone" + "Company Main Phone" "Home Fax" "Home Phone" + "Home Phone 2" "ISDN" "Mobile Phone" + "Other Fax" "Other Phone" "Pager" + "Primary Phone" "Radio Phone" "TTY/TDD Phone" "Telex") + ("address" + (("business address" + (("Business Street") + "Business City" "Business State" + "Business Postal Code" "Business Country")) + ("home address" + (("Home Street") + "Home City" "Home State" + "Home Postal Code" "Home Country")) + ("other address" + (("Other Street" "") + "Other City" "Other State" + "Other Postal Code" "Other Country")))) + ("organization" "Company") + ("xfields" + "Anniversary" "Family Name Yomi" "Given Name Yomi" + "Suffix" "Department" "Job Title" "Birthday" "Manager's Name" "Notes" + "Spouse" "Web Page")) + "Hotmail.com, outlook.com, live.com, etc. +Based on 'Export for outlook.com and other services', +not the export for Outlook 2010 and 2013.") + + (defvar bbdb3-csv-import-mapping-table nil "The table which maps bbdb3 fields to csv fields. Use the default as an example to map non-thunderbird data. @@ -255,7 +302,7 @@ Defaults to current buffer." ;; need to be grouped in a list because they contain sublists that we ;; don't want flattened. I've decided that is a better trade off than more ;; complex code. - (flatten1 (expand-repeats (cdr (assoc bbdb-arg bbdb3-csv-import-mapping-table))))) + (flatten1 (expand-repeats (cdr (assoc root-mapping bbdb3-csv-import-mapping-table))))) (map-assoc (field) ;; For mappings with just 1 simple csv-field, get it's data (assoc-plus (car (map-bbdb3 field)) csv-record))) @@ -286,7 +333,9 @@ Defaults to current buffer." (let ((address-lines (mapcar-assoc (caadr mapping-elem))) (address-data (mapcar-assoc (cdadr mapping-elem))) (elem-name (car mapping-elem))) - + ;; outlook-web has 1 address line, bbdb requires 2 + (if (= (length address-lines) 1) + (setq address-lines (append address-lines '("")))) (when (consp elem-name) (setq elem-name (cdr (assoc (car elem-name) csv-record))))