Does your web host not have WebDAV installed on Apache? It's not unusual; none of the hosts I use or looked at had mod-dav installed, nor were they willing to do so. That means that the one-click Publish feature in iCal won't work. You can, however, simply FTP the calendar to your desired location. That requires that you first find the calendar files, discover which one is the right calendar, FTP it to your server, and rename it to a descriptive, useful name. If you make changes to the calendar with any regularity, it's a major hassle. Read on and I'll walk you through the above, and show how to use Automator (OS 10.4.x only!) to return it to one-click functionality.The first step is to find the calendar file. iCal uses an obfuscated naming structure for the calendar files, using what looks like an extremely long hex key for a unique folder for each calendar, and each folder contains: corestorage.ics (the actual calendar file), an Index file, and Info.plist, which contains the name and properties of said calendar. These can be found in
~/Library/Application Support/iCal/Sources/
Go through your folders, opening the Info.plist files, and look at the "Title" string to let you know which calendar is inside that particular folder. When you find the right one, the corestorage.ics in the same folder is the actual calendar file. Copy this to your desktop, or somewhere else convenient, so you don't accidentally mess up your calendar.
The rest is easy. Rename it to whatever you want (retaining the .ics file extension), and upload it to the location of your choice. People can now subscribe to it just as if you had used WebDAV within iCal.
How annoying though, right? You either have to look at the Info.plist files each time, remember the folder key, or use OS X's color labels to mark the right file. Even doing that, you're limited to seven unique colors, and you'd still have to remember which color is which calendar. If you're using 10.4.x, though, here's an opportunity to make use of Spotlight comments (Get Info on the file) and give it a descriptive name. Spotlight will now find the right one for you based on this new meta data. Sweet!
But it can be even easier. There's no need to find, copy, rename, and upload the calendar manually each time we make a change. Automator to the rescue!
- Start Automator, and using the method listed above, find the right corestorage.ics file. Drag it from your Finder window right into the Automator workspace. It will create a "Get Specified Finder Items" action with the appropriate file selected. You'll never have to remember it again.
- Select Finder from the Library, and drag a "Copy Finder Items" action to the workflow. Select a location from the dropdown menu. I use Desktop, because it's easy, and we're going to clean up after ourselves anyway.
- Still in the Finder library, drag a "Rename Finder Items" action to the workflow. Select "Replace Text" from the dropdown, and have it find "corestorage" and replace it with whatever descriptive name you want the calendar file to have.
- The next step is to upload the file. If you use Transmit, select it from the Library, and drag the "Upload Files" action to the workflow. If you use another FTP program, check with them for Automator actions. If you don't have a favorite, or yours doesn't have Automator actions, download the free Upload to FTP Automator action, and use it. Whatever the case, fill out the pertinent details for your server and desired location.
- Finally, in the Finder library, drag the action "Move to Trash" to the workflow, to clean up our temporary file that we copied in step two.
Download this new action and place it in either ~/Library/Automator/ or /Library/Automator/. It's simply an AppleScript Action that I made in XCode that issues the command Tell Application "iCal" to Quit. You could even do it yourself with Script Editor and just add it as a script step, but this way, the action sits in the iCal library ready to go. Drag and drop this new action to the top of your workflow, before the "Get Specified Finder Items" action.
If you don't keep iCal open regularly, you're done. If you do like it to stay open, just add a step to the end of the workflow. In the Finder library, drag the "Launch Application" action to the bottom of the workflow, after the "Move to Trash" action. Select iCal from the dropdown list of applications, and voila!
[robg adds: This article was originally published (by djones) on this page; thanks for submitting it here for the macosxhints' database. I haven't tested this one...]

