Retrieving just one contact from Time Machine

Sometime in the 2 to 4 week ago period, something happened where just one contact (my partner) in Apple Contacts got corrupted. I’d like to retrieve it because I had a ton of important historical notes/data in the Notes section about her.

I know I did something to cause this though I don’t know what I did. Weirdly, my contact photo and hers got switched as part of the Notes data deletion. Of course that sounds like I didn’t realize I was logged into her account and made changes I thought were for my account but there is no evidence to show that is what happened. I use BusyContacts which syncs with Apple Contacts.

This morning, I was awakened to my Apple Watch screen displaying “Good Morning Angela”! (her name, not mine) :crazy_face:

My SuperDuper clone doesn’t go back far enough but I do have historical Time Machine data. Is there a way to access/import just one contact from a past Time Machine snapshot?

Don’t know…but maybe restore all contacts file someplace and then create a new user, import the file and export Angela’s card for reimport into your real account.

Open Apple Contacts. Make sure the window is frontmost
Go up to the Time Machine menu in the menubar and select Browse Time Machine backups
Use the Time Machine timeline to go back before your suspected data corruption.
Select her entry and click Restore

Dave

2 Likes

This is how it’s meant to work. However for CONTACTS I can go back for only a few days, but for all other documents etc I can go back many, many months. A migration to a new Mac in Oct 23 inherited old backups, and indeed they show up, but not for CONTACTs when I use baforementioned method. Why?

I don’t use BusyContacts, so my comment might not apply, but it sounds like somehow her contact card became identified as “your” contact card. In Apple’s Contacts app, this can happen by accidentally choosing “Make This My Card” from the Card menu when someone else’s contact card is selected.

I’m generally very cautious when trying to troubleshoot problems with my contacts, so I suggest contact BusyContacts support directly for assistance.

(As an aside, I like to export my Apple contacts periodically as an independent archival backup. I would expect that the same is possible in BusyContacts.)

I can confirm this. My Time Machine contacts only go back a couple days.

A quick web search shows no other reports of this.

Dave

Me too. When I tried yesterday contacts only went back a few backups.

Many thanks to each of you for your suggestions. I decided to contact Busy Contacts support before I do something that may make things worse!

I’ll report back as soon as I know a cause and/or solution in case that is of value/interest to anyone.

:-) Jon

PS - No question josehill is on to something in his response as again this morning I saw another “Good Morning Angela!” on my Apple Watch though everywhere else may name and my image is correctly displayed.

I do not use time machine. I use CCC but CCC is not as useful in solving my “I lost one contact” issue.

Instead, I am reminded to weekly make an archive copy of my Contacts and Calendars. These two files are stored on an external disk.

We I determined that I have lost one or more of either entries, I log into a separate user account, import a old archive file, and see if I can retrieve it. This user account is NOT connected to my Apple ID nor the cloud.

And, yes, I do collect a bunch of archive files. I every so often (2 times a year maybe?) organize them by creation dateand for those that are 6 months old, I delete all but one in that month.

I have files that go back to 2013 and when I was bored, I did import some old ones JUST to see if I could. I could. But what I felt, well, that is for another entry.

From BusyMac support…

If it’s calling you Angela, your Me card probably got changed.

Launch BusyContacts, select File > Go To My Card, and make sure your Me Card contains your details. Check the same in Apple Contacts.

That was the issue, the Me cards got swapped. Weird thing is I know I did not (consciously?) change the “Me card” in either Apple Contacts or BusyContacts and Angela doesn’t have access to be able to do so.

Many thanks for the helpful suggestions about making archives of Contacts and Calendar instead of my practice of relying just on SuperDuper and Time Machine.

Additional lesson learned here is to have attended to this issue sooner when I had a clean backup of BusyContacts. It would have been fairly simple to retrieve that I wanted if I had acted within the last 10 BusyContact backups.

2 Likes

For me, Contacts goes back eight months, which may be when I activated Time Machine backups.

My Contacts Time Machine Backups go back to October 2021, which the date of my oldest backup.

Hmmmm. If I enter Time Machine with Finder as active my TM backups go back to September of 2023 but if I open Contacts and it is active TM backups only goes back to about 24 hours ago.

Clearly, I don’t know much about how Time Machine works since I never needed it. Time to pay better attention!

If you use iCloud to sync your contacts between devices, then I believe Time Machine doesn’t back them up. There may be some snapshots available in iCloud’s Recovery section:

1 Like

Just as an alternative suggestion - for those of you that use AppleScript I have one that runs weekly that backs up all of my Contacts to separate vCards. This gives me the ability to rewind a contact easily if something like this happens.

The script is:

-- Define the folder path where you want to save the backup
set backupFolderPath to "Put your path here/Contacts-vCard_Backup"

-- Define the name of the backup file
set backupFileName to "Weekly vCard Backup.vcf"

-- Build the full path to the backup file
set backupFilePath to backupFolderPath & "/" & backupFileName

-- Check if the Contacts app is running and activate it
tell application "System Events"
	if not (exists application process "Contacts") then
		tell application "Contacts" to activate
	end if
end tell

-- Get a list of all contacts in the Contacts app
tell application "Contacts"
	set allContacts to every person
end tell

-- Export each contact as a vCard
repeat with aContact in allContacts
	tell application "Contacts"
		set contactName to name of aContact
		set contactVCard to vcard of aContact
	end tell
	
	-- Save each vCard to the backup file
	set contactFilePath to backupFolderPath & "/" & contactName & ".vcf"
	try
		set contactFile to open for access contactFilePath with write permission
		write contactVCard to contactFile
		close access contactFile
	on error errMsg
		display dialog "Error: " & errMsg
	end try
end repeat

-- Close the Contacts app
tell application "System Events"
	if (exists application process "Contacts") then
		tell application "Contacts" to quit
	end if
end tell
2 Likes

I didn’t know about this. I’ll check it out, thanks!

Ah yes, AppleScript! Brings back memories of the glory days of Sal Saghoian from Apple. :smile:

Thanks Scott, I’ll be giving this a try.

@jonmcintosh I’m a certified Keyboard Maestro fanatic and tried creating a macro to do this - and it was a repetitive dismal failure. Every time it ran something else goofed.

To be clear, I’m no AppleScript expert - I get the basics but never would have been able to create this on my own. So, I “cheated.” I wrote a detailed prompt for ChatGPT and after about 3-4 iterations it worked perfectly, 100% of the time.

I use KM to trigger the script (yes, I know I could use a Calendar event or other methods but I like KM and try to center as much of my automation there as possible) and it has been flawless.

1 Like

Holy smokes! Very impressive. So ChatGPT writes applescript, too!? I used it to write a short Python routine that I was too lazy to do myself. Like you, it took some tweaks to get it working but then it was fine. I used to (grudgingly) write a fair amount of Applescript. It would take forever to do it now because I’ve forgotten so much. So, the next time I have to do one ChatGPT it’ll be.

Dave

As there appears to be some interest in this topic I’ll share the prompt that I started with here:

Write an AppleScript that will select all of the contacts in my Contacts app and back them up as vCards with the name “Weekly vCard Backup”, then put the back in a specific folder - I will supply the path so just put “Path here” in that part of the script. There will always be a previous backup with that name in the folder so the script should tell the system to overwrite that older backup with the new one.

The first couple of iterations had some problems so I went through a few adjustment prompts. For example:

An error has appeared in the line "-- Export the selected contacts as vCards to the backup file
tell application “Contacts”
export selection to backupFilePath as vCard
end tell

At which point there was another attempt and I responded with:

In that script there is an error at the line:
tell application “Contacts”
select every person
end tell

And so on until the very end when I entered:

That’s good but it leaves the Contacts app open when the backup is complete. Add a line to close that contacts app at the end.

It responded with the correct line and that was that. Entire time start to finish - roughly 10 minutes. Even I, who has tons of faith in technology, was pretty impressed.