Great question!
I hope I understand your requirement properly, as I'm getting two different impressions of it. Are you wanting to display the Google+ profile link inside the user contribution form directly? Or do you want to display it on the completed document?
I like your first approach best, personally. I think it would be more powerful and cleaner to query the custom table directly rather than relying on multiple drop-downs for each author. For that approach (accessing the custom table through the transformation), you would need to create a custom transformation function: Adding Custom Functions to Transformations.
For example, you could create a transformation function called GetAuthorProfileLink and do something like this (I will assume some things that are easy to change, such as your custom table name and how you are referencing the user in that table):
public string GetAuthorProfileLink(int userID) {
// Creates a new Custom table item provider
CustomTableItemProvider customTableProvider = new CustomTableItemProvider(CMSContext.CurrentUser);
string customTableClassName = "customtable.authorprofiles";
// Checks if Custom table 'Sample table' exists
DataClassInfo customTable = DataClassInfoProvider.GetDataClass(customTableClassName);
if (customTable != null) {
// Prepares the parameters
string where = "UserID =" + userID.ToString();
int topN = 1;
string columns = "ProfileLink";
// Gets the data set according to the parameters
DataSet dataSet = customTableProvider.GetItems(customTableClassName, where, null, topN, columns);
if (!DataHelper.DataSourceIsEmpty(dataSet)) {
// Gets the custom table item ID
string profileLink = ValidationHelper.GetString(dataSet.Tables[0].Rows[0][0], "No Profile Specified");
return profileLink;
}
else return "No Profile Specified";
}
else return "Author Not Found";
}
Once you have done that, you can call your function within a transformation with the following syntax (I'm not sure how you're storing the authors of the articles, but I assume it is a custom field on the document type):
<%# GetAuthorProfileLink(Eval<int>("AuthorID")) %>
Would that approach work for your needs?