I frequently feel like I ask questions that "should" be obvious when it comes to SalesForce, but is there a simple way to script the addition of several users at the same time? The data loader comes to mind, but with the data loader I would have to manually plug in values for things like public group membership, address, and other variables that might change from time to time, whereas I could have dedicated scripts in any other system that could add a US user, a Germany user, and other such processes. Am I missing something obvious? :(
The DataLoader is quite an exhaustive User Creation / Maintenance tool.
Like you mention, you can dataload users en masse.
You can plug in values that change subsequently by running an update csv file and using data loader update.
You can dataload the GroupMember object to data load Group Memberships.
You can also assign Permission Sets to supplement Profile Permissions by dataloading PermissionSetAssignment records to assign Permission Sets to users.
Lastly you can also deactivate users via a Dataloader Update.
The only not so efficient bit is dataloading new Users as Inactive, which a lot of users needs to do, and then activate them all at once. The Notify User immediately checkbox, as I understand, only plays ball when checked manually. But even with this, you can set up an enhanced list view to check the box en masse for users created in a batch by setting up a list view.
As a convenient work around, I see is a User Preferences object, which you can access via an Apex Before Trigger to set common fields based on a User key such as Country or similar. There is always anonymous apex.
I would suggest a data management tool that allows you to preserve your connection to your org, and quickly repeat jobs. I've grown fond of JitterBit recently for basic but repeated tasks. Once you've saved your job, you need simply put a new csv file in place with user data, run your job again, and you're off.
JitterBit is a freemium app, with paid add-ons (like chaining multiple jobs together).
You might look into Permissioner, a free AppExchange app for permission set management.
The more I use the other apps available these days (JitterBit, Mulesoft/Dataloader.io, informatica cloud free, etc.) the less I want to use our Data Loader app. It was great and served a purpose in its day, but our partners have done a bang up job providing really solid free tools options.
Have you looked at the "add multiple users" page under
setup> manage users > users ? While this requires all to have the same license type and is quite primitive it offers some default functionality for low amounts of users.
In term of "scripting", you can do a lot in executing anonymous apex, or through a custom visualforce page. But there will always be required unique fields you need to handle specific for each user.