Just a note, though, before deleting users you may want to direct them to the Data Liberation tools for downloading their data.
The actual script is in Google Apps Script. You can see it by visiting Google Apps Delete Users, or create your own copy at script.google.com using the source code below.
Let me know if this works for you, or if you have suggestions for improvements.
function doGet() {
// get the user's credentials for their Google Apps account
var user = Session.getEffectiveUser().getUserLoginId()
var domain = UserManager.getDomain();
var welcome = "You are running this script as " + user + " on the domain " + domain;
// set up the user interface
var app = UiApp.createApplication().setTitle('Delete Google Apps Users by MisterHay');
app.add(app.createLabel(welcome));
app.add(app.createHTML("<br>Make sure you have enabled the Provisioning API (support.google.com/a/bin/answer.py?hl=en&answer=60757).<br>This script will delete Google Apps user accounts that you paste or type below. Each account name must be on its own line.<br>e.g.<br>misterhay<br>mpython<br>unladen.swallow<p>"));
var textArea = app.createTextArea().setName("textArea").setSize("20%", "60%").setStyleAttribute("background", "white").setStyleAttribute("color", "black").setFocus(true);
var serverHandler = app.createServerHandler("deleteAccounts").addCallbackElement(textArea);
var clientHandler = app.createClientHandler().forEventSource().setEnabled(false).setText("deleting accounts...");
app.add(textArea);
var button = app.createButton("Delete Accounts");
button.addClickHandler(serverHandler);
button.addClickHandler(clientHandler);
app.add(button);
app.add(app.createLabel("no accounts deleted").setId("finishedLabel").setVisible(false));
return app;
}
function deleteAccounts(eventInfo) {
var app = UiApp.createApplication();
var deleteThese = eventInfo.parameter.textArea;
var stringArray = deleteThese.split(/\n/);
for (var loopNumber = 0; loopNumber < stringArray.length; loopNumber++) {
var deleteThisUser = stringArray[loopNumber];
// rename the accounts before we delete them to avoid the five day wait before account names can be reused
var renamedUser = deleteThisUser + '_old';
Logger.log(renamedUser);
// delete the account
UserManager.getUser(deleteThisUser).setUsername(renamedUser);
UserManager.getUser(renamedUser).deleteUser();
}
// tell the user how many accounts we deleted.
app.getElementById("finishedLabel").setText(loopNumber + " accounts deleted").setVisible(true);
return app;
}