function onOpen() is not running

Solution 1:

I was having the same issue.

I realized, sometimes Google create some kind of cache of the scripts (I'm used to have a "test" script and I usually alter it's content, and, sometimes, the script runs as if I didn't).

So, what I did that solved the onOpen() not working was changing the function name and ading a trigger manually.

Go to "Resources -> Current script's triggers…"

Go to "Resources -> Current script's triggers…"

Choose the function to run on open

Choose the function to run on open

It worked like a charm here!

Updated Location Information: from tool bar or from menu bar

Then

trigger select

Solution 2:

This is an old post but I just had this problem and find out why it was not working correctly in my case: I had, at the top of my script file a variable that required some authorisations and that prevented the script to correctly run. I saw that OP called var username = Session.getActiveUser().getUsername(); (that requires authorisations, and it's may be the cause).

eg: this code won't work:

function onOpen(){
  SpreadsheetApp.getUi()
  .createMenu("Exportation")
  .addItem("Lancer l'exportation", "exportationMenu")
  .addToUi();
}
var stConsCons= SpreadsheetApp.openById(sgcid).getSheetByName("Consultant");

but this one will work:

function onOpen(){
  SpreadsheetApp.getUi()
  .createMenu("Exportation")
  .addItem("Lancer l'exportation", "exportationMenu")
  .addToUi();
}

function whatever(){
  var stConsCons= SpreadsheetApp.openById(sgcid).getSheetByName("Consultant");
...}

Solution 3:

It turns out that you need to add the onOpen(e) function to Triggers!

image description here