Calculations on Sheets with Row Owners

I’m not sure if this is a bug, or just a limitation of Row Owners.

I’m trying to calculate the number of submissions for all users so I can display a running total to all users. The Submissions sheet uses Row Owners to protect the actual submissions.

My assumption was that a rollup would still function with Row Owners because I’m just trying to get a count of rows, but it turns out it doesn’t (it just rolls up the row owner’s rows). I’ve been racking my brain trying to figure it out and it was only after disabling row owners that I was able to get to the bottom of it.

I can create a work-around, but I’m just curious if this is something that could be changed/updated so that calcs aren’t dependent (or maybe have the option of being independent) of Row Owners settings.

Calculations (and all computed glide columns for that matter) happen on the device. Row owners prevents data that doesn’t belong to the owner from being loaded on the device. Because of that, the calculations only have the row owner’s data to work with when calculating.

5 Likes

Makes sense, thanks. I suppose this could be a helpful tip for anyone looking to rollup form submissions when also wanting to protect those submissions — you can’t do both in the same sheet (unless everyone who needs access to the calcs is a row owner).

1 Like

Correct. You’ll probably notice in a lot of my posts that I stress that computed glide columns are computed directly on the device. Can you imagine how laggy the apps would appear if data had to make a round trip to the server and back just to show us an updated count or calculation? Having all calculations, relations, lookups, etc. happen on the device does give a better user experience.

The alternatives to your problem, that I can think of, would be either to do the count calculation directly in the sheet (if you are using a google sheet), or create an on submit action that would increment a number through a set column action on a relation (currently broken, but should be fixed next week). Granted, I’m not entirely sure how glide handles that situation if two people would submit something at nearly the same time. I don’t know if it would process both increment actions at the same time and one could potentially overwrite the other, or would it be smart enough to recognize both increment actions separately (ex. both user have a total row count of 10 loaded in the app database on their device, and when both submit, they both increment the value to 11 in that internal database, so when it’s synced back to glide, would it fill the total value with 11 on glide’s server database, or would it be smart enough to figure out that it needs to update the total to 12 due to two separate increment actions from two separate users. That part I’m not really sure about).

1 Like

Thanks @Jeff_Hager. I decided to create a copied sheet using arrayformulas. The copied sheet contains only the Row IDs and the other non-identifying information. I can then link everything together afterwards through the Row ID as opposed to the user’s email address. It works, but meant I had to redo a bunch of work… ah well! I should have known what you described already… I just viewed Rollups as something different because I was only using it to count number of rows… but it totally makes sense that the # of rows is only the number being loaded on the device. Seems like a “duh” thing now haha

2 Likes

Hello @shchc , I have the same problem as you. Could you show me how you created the copied sheet using arrayformulas?

No problem. In a separate tab of your Google Sheet, just use the formula =ARRAYFORMULA(Sheet1!A:A) to grab column A from the sheet named Sheet1. You can pull in multiple columns at once (if they’re in order) by using a “A:Z” formula instead, for example.

1 Like

Thanks