Just wondering if there are any ways to hide columns (client-side) for different users accessing the sheet?
I know you can create filter views that allows users to view and edit without having to change the actual orientation of the sheet, but I can't seem to find any way to hide columns while creating a filter view.
Any help is appreciated. Thanks.
One solution perhaps to your problem is to structure your data across several spreadsheet documents and give access to different people to each sheet.
Let's say you have a have a master spreadsheet containing all the data as a single source of truth. Then you can use an import formula in a different spreadsheet document to display certain data from the master spreadsheet.
The slave documents can be projected as need and will update automatically when the master spreadsheet is changed. Below are some formulas that can do this
Generic import data formula
=IMPORTRANGE("spreadsheet_url,Sheet1A:A")
Import formula to import only display certain - need to project the whole sheet from being copied etc.
=QUERY(IMPORTRANGE("spreadsheet_url","Sheet1!A1:C"),"SELECT Col1, Col3",0)
Related
Hi
when switching from Excel to Google Sheets one big disadvantage is that due to the real time collaboration it is not possible to have interactive management dashboards anymore where every user can individually filter aggregated data or graphs (e. g. with a data slicer). When more than one person is accessing the dashboard everybody sees the individual chosen validation filters of the last person that changed them.
One solution that has been suggested a lot is to create one spreadsheet with the data and a second spreadsheet with the dashboard in which the data is imported with IMPORTRANGE. Every manager will get a personal copy of the dashboard file.
This solution is not applicable when you have a lot of managers (>50) or when you want to change the dashboard frequently.
So I was thinking of different solutions and came up with these 3:
1. Build the dashboard as WebApp
Data will be stored in Sheets and the WebApp will display the aggregated data or a specific dataset
Pros:
Can use all advantages of HTML and Javascript
Cons:
Need to have additional skills in HTML, Javascript and CSS
Not so flexible as Sheets e. g. with Graphs, Data slicers etc.
Depending on how much data you have the process for searching specific data and visualising it in the WebApp is slow
2. Build the dashboard in Google Data Studio / Looker Studio
Data will be stored in Sheets and Data Studio / Looker Studio will display the aggregated data or a specific dataset
Pros:
Good for visualization of all the data
Cons:
Not good for visualization of a single data set
Very limited in how to present the data
3. Build the dashboard in the same spreadsheet as the data and make a personal copy of the dashboard-sheet inside the spreadsheet with AppsScript for every user opening the file
In a spreadsheet the data will be stored in one sheet and a master dashboard will be designed in a second sheet (hidden). Everytime a user opens the spreadsheet a personal copy of the master dashboard-sheet will be created for the specific user and will be deleted when the user exits the spreadsheet.
Pros:
Can use all the possibilities for visualisation in Sheets (pivot tables, data slicers, graphs, formulas, etc.)
Cons:
When several users access the spreadsheet at the same time a lot of personal copies of the dashboard are visible
User has to grant permissions for the AppsScript
All of these three solutions are not really good. Do you have any other suggestions?
Thank you!
Use filter views. Filter views are different from regular filters. This feature lets multiple simultaneous users sort, filter and edit the sheet without disturbing each other.
For additional ease of use, you can insert links in the frozen section of the sheet to easily switch between filter views, instead of having to go to Data > Filter views to switch. See the Filter views example spreadsheet for an illustration.
From the documentation:
When you apply a filter on a slicer, changes are only visible to you, unless you set them as default.
I've built my google sheet, and shared it with the team, the sheet has an entry point, where the user is entering some data, and balance data of the sheet is changing dynamically based on this input.
If 2 persons are using the sheet at the same time, the data will be changed based on the last guy who use this entry field, and the data the other guy seeing will be changed accordingly.
my sheet is here
The sheet is locked except the yellow shaded cell, which is allowed to be changed by the user.
Is there a way to allow each user to see the data based on his input parameter, without getting it destroyed when used by others!
I don't think what you're looking for is possible as Sheets is designed to be used for collaboration and edits will always be shown in real time. Consider adding multiple sheets and assign them to each of your team members with the exact formatting and formulas as the original so they can access and input their data independently.
I have a very strange problem, the description can be a bit chaotic.
I have two spreadsheets A and B. One sheet inside A is importing data with importrange from the B. The problem is that sometimes two user see different values in that sheet.
Details:
I have two scripts inside A:
one that copies the values from the imported range to another sheet
one that calls that WebApp that changes data in B.
When two users have the A open and one of them makes changes to the B via script and then uses the other script which copies the values, everything is fine. But if one user closes the A, the other makes changes in the B with the script and when the first user reopens the spreadsheet, he will see new values, but if he uses the values copying script, the range containing the values from importrange will show old values. Oddly enough, the script that copies values from that range will copy the new correct values even if we don't see them.
The problem goes away when I manually make some changes to spreadsheet B. I don't know, it's like spreadsheet B doesn't refresh when I make changes via script or something
Do you have any ideas what is the reason for this and maybe how to solve it. I think that I can get round this problem but I would not.
Two Google Sheets users might see diffent values on the same spreasheet because formula calculation (including those that make API calls like IMPORTRANGE) are triggered by user actions like opening or edited the spreadsheet.
Some function also might recalculated by changes made by scripts so it's actually possible that an script could "see" different values than those that are seeing by the users.
If you need that the users see the same values, should consider to periodically "freeze" them i.e. make a copy of the spreadsheet then replace the formulas by their results.
Another option is to share the screen rather than relaing on the "real time" collaboration feature of Google Sheets.
I currently have a separate speadsheet that contain formulas that reference a spreadsheet generated by SSRS however the SSRS spreadsheet is set to overwrite the data and it seems to delete the spreadsheet and creates a new one in its place which breaks the formulas.
Is there a way to not overwrite the spreadsheet so that it doesnt break the formulas or is there another alternative?
Thanks in advance
What you ask about is not possible with SSRS. If you would like to have the ability to update the data in an Excel spreadsheet and maintain the formulas, PowerPivot is a solution.
Create an Excel workbook (or use the one you mention in your question), and add a Power Pivot data source and pivot table on one of the sheets in the workbook. Make sure the data pulled with PowerPivot includes all the data you need, and pivot table display all of that information.
On another sheet, add your formulas and references to use the pivot table you created in the steps above.
Then, when you updated the spreadsheet data, the formulas will update and not be lost or broken. If you have SharePoint where you are, you can upload the spreadsheet into a document list, and set it to update on a schedule.
On a shared Google spreadsheet:
I don't want a specific user in my domain to view columns with sensitive data, but this person should still be able to edit the rest of the spreadsheet.
I tried creating a 'master' spreadsheet and using importrange to bring the data into a 'shared' sheet, but once I edit any cell in the shared spreadsheet, importrange no longer works as the sheet is emptied out.
Is there a quick way to do this, maybe using scripting?
After some research and trying various different options, I was finally able to achieve what I want using the importrange function.
At first, I tried using a combination of hide columns & protect range, but this wouldn't work because a simple copy & paste would reveal the contents of the hidden columns.
Solution: The 'master' spreadsheet does not have any sensitive column data and can be shared with everyone in the organization... I then ADD the sensitive data to a new spreadsheet and use importrange to grab contents from the 'master'. (Previously I had the roles reversed, but this didn't work)
You may want to add unique keys per row entry so that sorting etc won't mess things up when you zip-up the sensitive data and the 'master' data.
I came here looking for a way to share only certain columns of a spreadsheet with a customer, but not all.
As noted in the other answer, using =IMPORTRANGE works well, but a clever customer could simply edit the function and see the other columns.
My solution was to first create a 'proxy' spreadsheet that imported only the columns I want the customer to see. This proxy spreadsheet is not shared.
Then, I created another spreadsheet that imported the columns from the proxy, and shared that spreadsheet with the customer. This way, even with edit privileges, it's impossible for him to see anything that isn't on the proxy spreadsheet.
A bit clunky to be sure, but it worked perfectly for my situation.