I’m not sure what I’ve done to cause this, but for “Upcoming Jobs” in a collection I have the display image set to an array which combines multiple image sources into a gallery. Most of the time there is only one image, and the behavior for the preview image in a collection seems to take the first uploaded image which is fine.
Everything was working well and looking cute on my end, and yesterday I had our employees install the new version of the app.
Today it’s been brought to my attention that the images don’t seem to be showing up on devices logged in under other accounts. So I’m able to test this in the editor and view the content as different people and sure enough the images disappear and reappear as I switch accounts. And if I view the app as someone else, and upload a completely different image, for instance a gif of hackerman, it will only appear on the account that uploaded it.
Why is this? How have I accidentally set the images to only appear for the user that uploaded it?
All of the images that are uploaded via the file picker have URLs like this for example. If I take the URL and paste it into a private window I can still see it. So I don’t imagine it’s any sort of privacy/sharing setting, wherever these images get uploaded to.
Any ideas here? I’m sure it’s simple enough but I cannot figure out what I’ve done to cause this issue. Every account should be putting information into the same tables, why is the data different?? Weird!
I’d like to add too, maybe there is something fundamental that I’m missing here.
In “version 1” of this application, which was a classic glideapp, there was only one user and everyone in the workplace who accessed the app was technically accessing as that one sole user. So everything that anyone changed was reflected on everyone elses screen.
With “version 2” of this app, which is a newer “page”, I’ve decided to incorporate multiple users with different roles so that only relevant pages and information are shown to employees in different departments. With this change, this strange issue arises.
What needs to be done to ensure that everyone is viewing the same version of the tables, regardless of which account is signed in? There is something missing in my understanding of how this works with multiple users I think…
Sure enough, when I view the table and switch users, the data in the rows disappears and reappears… I think I understand the problem, I just don’t have any concept of the solution.
Ah, I see it now. I have only one user-specific column (which I’ve made accidentally), and that is the column which has the “Multiple Images” type. And it seems that I cannot uncheck User-Specific when making a multiple images column. Why would that be?
I suppose the only workaround then is to fall back on the old school method of having multiple image pickers and hide them as images are uploaded into single rows? That’s kind of stupid
Unfortunately there is no easy way to convert a Google Sheet table to a native table, but it can be done.
You can move all the data easily - CSV Export from your Google Sheet, and then CSV Import into a native table. But any computed column need to be recreated and reconfigured, and any screens/components that reference the table need to be reconfigured as well.
One quick and dirty option could be to create a native table just for the purpose of holding your multi-image column. You should be able to reference it in any other tables where it’s needed as a single value.
I was thinking about that as well, but I’m not sure if I can upload images to a table that is not the main table that a page is working from. In the column selection for the Image Picker I can only choose columns from that table. Any ideas on how I might get around that?
If there’s not a clean workaround I will have to duplicate the project and start the process of transitioning the Gsheets tables to native tables in a sandbox. There’s a lot of computed tables that will need to be reconfigured. Kind of sucks but I guess when it’s finished it will be more flexible.
You can work around that easily enough.
Can you show me what the existing multi-image column looks like in the Data Editor right now?
I just want to get a little more context before I make a suggestion.
Basically I have:
A single column called “Job Layout” which is a classic single Image column full of old job layout images.
A couple If-Then-Else columns that will put an image link of an icon the row, based on some criteria. (i.e. image is missing, job status is template and image is missing, etc)
A multi-image column (the user-specific one) with images of new job layouts and other job photos.
And finally I have an array that combines all of these different image columns, which is what is displayed in the Image component for each Detail screen, and also the first image in the array shown as the image in the collection on the main tab.
There are a lot of columns that are deprecated and no longer used so ignore the first two columns in the image.
I guess another benefit to converting over to native tables is the ability to delete these. I can delete them in Gsheets however. I just haven’t got around to it yet.
I see the table is called Form Responses - does that mean that data (or some of it) is added via a Google Form?
You mentioned a file picker, so I assume that at least the images are added via the App.
Does each row in that table reference a specific job/project?
Assuming yes, what you can do is create a separate “Job Images” table as a native table.
You’ll need a RowID column in your Form Responses table (if you don’t already have one), and use that as a JobID column.
Then in your Job Images table, you need two columns:
JobID
Multi-image column
On your Job Details screen, add a button and give it a Show Form Screen action.
Point the Form Screen at your Job Images table.
On the form screen, add an image picker and point it at the multi-image column.
Add a “Values from Screen” component, select the RowID from your Form Responses table, and point it at the JobID column.
Now all you need is a relation column in your Form Responses table that matches the RowID column with the JobID column in your Job Images table, and you can use a lookup column through that relation to fetch the images for each Job.
Yes this project has evolved over the years from a Google Forms dump to this Glide app. It’s no longer connected to Forms however. All information in the table is now added via the App.
And yes, each row is a different job/project.
I will give that a shot. Thank you again for your time.
One thing my solution doesn’t cater for is editing existing images, or adding more.
But you can handle that by modifying the action on the button to give it two conditional branches, based on the status of the relation column. Something like this:
If Relation is empty, then Show Form Screen (for adding a new row)
Else Show Edit Screen via the Single Relation (for editing an existing row)
You could also use a second if-then-else column to create a dynamic label for your button: