AppScript UserProperties within cell vs from menu

I’m developing an AppScript, and I’ve noticed some strange behavior regarding UserProperties.
I have the followng function that is triggered by a menu button:

function inputApiKey() {
  var ui = SpreadsheetApp.getUi();
  var apiKeyValue;
  if (!!PropertiesService.getUserProperties().getProperty(API_KEY)) apiKeyValue = ui.prompt('Your current API Key is:n' + PropertiesService.getUserProperties().getProperty(API_KEY) + 'nnEnter your new API Key below:n', ui.ButtonSet.OK);
  else apiKeyValue = ui.prompt('Add your API Key here:n', ui.ButtonSet.OK);
  if (apiKeyValue.getResponseText()) PropertiesService.getUserProperties().setProperty(API_KEY, apiKeyValue.getResponseText());
}

Now let’s say the spreadsheet was created by User 1, and User 1 uses the above function to input an API key. Then suppose User 1 shares the sheet with User 2, and User 2 inputs a separate API key.

Now suppose I have a second function:

function MyApiKey() {
  return PropertiesService.getUserProperties().getProperty(API_KEY);
}

If User 1 calls this function from a menu button, it returns User 1’s API key. If User 1 calls this function from within a cell, it returns User 1’s API key.

If User 2 calls this function from a menu button, it returns User 2’s API key. But if User 2 calls this function from within a cell, it returns User 1’s API key.

Can someone help me understand why this is happening and how to resolve it?