In scriptUi I was able to follow these instructions to create a simple progress spinner for long waits: https://sites.google.com/site/scriptsexamples/learn-by-example/uiapp-
I found a method. The trick was to call an internal function that both starts the spinner and runs the other function.
html
gs file
function testSpinner(){
SpreadsheetApp.getActiveSpreadsheet().toast("Copying...","",-1);
Utilities.sleep(5000);
SpreadsheetApp.getActiveSpreadsheet().toast("Done.");
}