cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
RuiBarbosa
Helper I
Helper I

Error: Office365Users - User Photo

Hi,

 

I have this code in a picture control:

Office365Users.UserPhoto(Office365Users.MyProfile().Id)

 

But, if an user does not have an image, the following error is returned:

The service returned an error: Office365Users!UserPhoto: The server returned an 404 error (NotFound).

 

error.png

 

 

 

 

 

 

 

 

 

Is there any way to validate if an user has an image before calling the respective method?

 

Thanks,

Rui Barbosa

 

 

 

19 REPLIES 19

I expect this error has got something to do with your connections.
As this formula uses O365 users, you need a valid (and authenticated) connection "Office 365 Users".

In some cases your credentials expire. Have you verified this?

Anonymous
Not applicable

There are multiple options that make Images appear i am finding the issue is just errors on using the app for photos even though they are showing .

 

I have used if no photo then sample image but still errors persist

 

If(Office365Users.UserPhotoMetadata(ThisItem.RecipientEmail).HasPhoto=false,SampleImage,

Office365Users.UserPhoto(ThisItem.RecipientEmail))

 

If anyone has managed to stop these errors from showing , would be so greatful for the trick.

 

Again this isn't effecting the functionality , more so the user experience.

 

Thanks in advance

I checked my formula for setting the Image property, and mine is slightly different:

If(!IsBlank(ThisItem.UserPrincipalName),
If(Office365Users.UserPhotoMetadata(ThisItem.UserPrincipalName).HasPhoto=false,SampleImage,Office365Users.UserPhoto(ThisItem.UserPrincipalName)))

So try using an extra If-statement to validate it's not blank and use the UserPrincipalName property from ThisItem.
Hope this helps

Anonymous
Not applicable

Yea have tried that also, is quite odd that it works but can bring an error on running the app that can be x'd and the app works fine.

 

I can use any photo formula in a few areas and works fine no errors however using it for a different part of the app brings errors.

 

I will use it where i can for now and just use sample image for the other areas as the red error that comes up is just a bad user experience.

 

Not sure if there is a way to get rid of certain errors showing that would be great, because functionality wise it's all fine .

I'm facing exactly the same error you mentioned. Did you find any solution ?

If you're having trouble with this in a gallery, try ClearCollecting the Office365Users.SearchUser results into a collection, and then only searching for the user photo in the gallery if the collection is not empty.

 

For example, collect the results first (either in OnVisible or OnChange or OnSelect, depending on your scenario)

 

ClearCollect(UserSearchResults, Office365Users.SearchUser({searchText: <searchTextInput> }) )

 

Then set the Items property of the gallery control to UserSearchResults

 

Then in the Image property of the Image control in the gallery would only check for an Image if the collection UserSearchResults is not empty

 

If(!IsBlank(UserSearchResults),If(Office365Users.UserPhotoMetaDate(ThisItem.Id).HasPhoto=true, Office365Users.UserPhoto(ThisItem.Id) ))

I'm allowed to use e-mail as a parameter to UserPhotoMetaData, but regardless I still get the error message because this basic function fails for some users (those without photos). I still need a working solution to stop the red banner from displaying across the top of my app!

Anonymous
Not applicable

I think I figured it out! try this code!

 

If(Office365Users.UserPhotoMetadata(Office365Users.MyProfile().Id).HasPhoto=false,SampleImage,Office365Users.UserPhoto(Office365Users.MyProfile().Id))

DenisSkorskiy
Frequent Visitor

Hi All,

It's never too late.

 

I think I found how to walk-around "red-banner-problem" and why adding "not IsBlank(ThisItem.UserPrincipalName)" into the IF statement solves the problem.

 

This code will cause "red-banner":

 

If(Office365Users.UserPhotoMetadata(ThisItem.UserPrincipalName).HasPhoto, 
Office365Users.UserPhoto(ThisItem.UserPrincipalName),
'profilepic-generic-user')

 

 

This code will not:

 

If(not IsBlank(ThisItem.UserPrincipalName), 
    If(Office365Users.UserPhotoMetadata(ThisItem.UserPrincipalName).HasPhoto, 
        Office365Users.UserPhoto(ThisItem.UserPrincipalName),  
        'profilepic-generic-user'), 
    'profilepic-generic-user')

Why?

 

IMHO, everything is explained by the syntacsis of the IF and how "engine" (or what's under the hood) resolves it.

If( Condition1, ThenResult1 [, Condition2, ThenResult2, ... [ , DefaultResult ] ] )

 

When the "engine" starts evaluating IF statement, it calculates ALL "Condition" statements, then the "Result" statement of the first TRUE "Condition" statement.

 

That means, when you put "Office365Users.UserPhotoMetadata(...).HasPhoto" into the "Condition" statement - it will be always calculated no metter what condition statement it is, first, second, tenth - and it will show red banner. The first example illustrates it.

 

When you put ".HasPhoto" into the "Result" statement, it will be calculated ONLY WHEN preceding "Condition" statement produces the TRUE value. Secong example is exactly about it.

 

So, be carefull using IF statement - it does matter where you put your code in question - into the "Condition" or "Result" statement.

 

Thank you.

thanks, this help me solved one thing. how to know whether a user has or not a photo. 

Helpful resources

Announcements
UG GA Amplification 768x460.png

Launching new user group features

Learn how to create your own user groups today!

Community Connections 768x460.jpg

Community & How To Videos

Check out the new Power Platform Community Connections gallery!

M365 768x460.jpg

Microsoft 365 Collaboration Conference | December 7–9, 2021

Join us, in-person, December 7–9 in Las Vegas, for the largest gathering of the Microsoft community in the world.

Top Solution Authors
Top Kudoed Authors
Users online (2,177)