Q: URLFOR for list view buttons? Issue
How can I redirect a user to a custom list view button with a specific set of records?  Was hoping for something like this
{!URLFOR($Action.Account.List_View_Button, accountIds)}

Background
We're adding some usage tracking to some custom buttons in the org that create some conga documents.  Our approach has been to create a second button that sends the user to a visualforce page and then redirects the user to the original button.  The advantage of this is the tracked button can be modified or changed without messing with the usage tracking.
<apex:page standardController="Account" extensions="AB_LogACallJump" action="{!logUsage}">

<apex:outputPanel rendered="{!usageLogged}">
<script>
    window.top.location.href = '{!URLFOR($Action.Account.Log_A_Call, account.id)}';
</script>
</apex:outputPanel>

</apex:page>

The button above can be launched from the detail page of an account, or from an account list view with multiple selections.  We're trying to add tracking for the list view button, but have gotten stuck due to the inability (or ignorance of how) to use URLFOR with list view buttons.
List View Button
// STEP 1: CHANGE THE NEXT LINE TO THE TYPE OF RECORDS YOU'RE ACCESSING ON THE VIEW 
var idArray = {!GETRECORDIDS( $ObjectType.Account )}; 

// STEP 2: CHANGE THE NEXT LINE TO THE API NAME OF THE FIELD THAT CONTAINS THE POINTMERGE URL 
var urlFieldName="Log_A_Call_Pointmerge_Url__c"; 

// DO NOT MODIFY ANYTHING BELOW THIS POINT ******************** 

// YOU MAY PASS UP TO 50 IDS 

var CongaURL = "https://conductor.appextremes.com/apps/Conga/Conductor/LaunchCC.aspx" + 
"?MOID=" + idArray + 
"&SessionId={!$Api.Session_ID}" + 
"&ServerUrl={!$Api.Partner_Server_URL_160}"+ 
"&UrlFieldName="+urlFieldName; 

window.open( CongaURL, "Conga", "width=700,height=450,menubar=0" );


A: Investigation and Thoughts. I have spent some time noodling this for you... 
The core issue is the page state (as in the selected records) is lost once you attempt to redirect to the Conga button via HTTP GET. In your detail page example you could address this by passing the Id in the way in which Salesforce expects it. As you say you may be able to hack output the HTTP logic (whatever GETRECORDIDS requires) from the list view page and emulate this as well. Though this is much more fragile in my view. And is not something I would want to risk putting behind such a mission critical button.
Conclusion. I have to conclude that doing what you want is not possible and that either of your two options from your comments above (copied here for reference) are the only way to retain the selected list of records and retain some semblance of the current button implementations (Conga JS buttons).


*

*1) Move code for list view button into the visualforce page

*2) Move code for usage tracking into list view button


My personal preference would be option 1 on balance, since it requires less JavaScript hacking and Web Service exposure of your logging Apex code. Maybe you could have people place the Conga JS snippet code in a Visualforce Component you reference from you page. That way the two stay separate?
