How to remove 'edit access' from query on Google Sheets? - google-sheets

I have a sheet that gets data from BigQuery and everybody can edit. I tried to remove permissions in the tab with a query, but it didn't work because it's connected to a database. Here is the error:
Can't add protection to this sheet because it's connected to a database.
How do I remove query edit permission without removing edit access in all the sheet?

As pointed out in the documentation for this feature under "Change who can see & edit queries or results", to edit the BigQuery query, the user needs both a corresponding BigQuery role and at least the editor permission in the Sheet.
When users don't have a proper BigQuery role, they will get an error like this:
So, as long as the users don't have the required permissions for BigQuery in your project, then they won't be able to edit the query. A user with no role in BigQuery can only see fetched data from a BigQuery query and view the query itself.
If you have users who have BigQuery roles in your project, you can separate the Google Sheet to a file where the users only have viewer permissions for the Sheets file.

Related

Allow user to refresh data connection to BigQuery on GoogleSheet

I would like to setup our organisation's Bigquery IAM so that some users would have access to views under our "Report" dataset, which are queried on Google Sheets. Users with edit rights on these Google Sheets should be able to hit the refresh button and access latest data.
We achieved this by granting some user access to the entire project, but that's very poor security. Instead, I want to limit their access to either the entire "Report" dataset or to specific views under that dataset.
We tried to define some custom role and share the dataset but there is no "refresh" button on the sheet for the user to refresh.
Sharing the dataset with a viewer roles showed the Refresh button but they were not allowed to refresh:
What did we miss?
For access to BigQuery data in Google Sheets, one should have:
An Enterprise Plus, G Suite Enterprise for Education, Enterprise
Standard, or Enterprise Essentials account.
Access to BigQuery.
A project with a billing setup in BigQuery.
A BigQuery Job Creator role on the selected billing project.
BigQuery Data Viewer role on the datasets containing the selected table.
According to this document:
If you share a sheet with someone who doesn't meet the criteria above,
they'll be able to see analysis created with Connected Sheets and
perform regular Sheets operations, but they won't be able to refresh
it or create their own connected sheet.
If you share a sheet with someone who doesn't have access to the correct data tables, they won't be able to create or refresh Connected Sheets analysis, and will need to contact the BigQuery admin.

How looks like the log of a google sheets sourced table update in BigQuery?

I have several tables in BigQuery that are sourced from Google Sheets tables. When the Google Sheets table is updated then automatically the table in BigQuery is also updated. I am trying to understand how the log of this event looks like in the Operations Logging. My end idea is to create a sink of theses logs in order to create a Pub/Sub and run scheduled queries based on these events.
Thank you
When you use external Table (Google sheet or other) the data are never stored in BigQuery native storage. It's always external.
Therefore, when you update your Google Sheet, nothing happens in BigQuery. It's only when you query the data, you will read (again) the sheet document and get the latest data.
Therefore, there is no insert log that you can track when you update the data in Google Sheet. The only log that you have is when you perform a request in BigQuery to read the data (external or not), as mentioned by Sakshi.
When the external data source(Google Sheet or other) is updated and the BigQuery table associated with it is queried, BigQuery initiates an insert job which is visible in Cloud Logging.
You can find this log by applying filter resource type as BigQuery Project in Cloud Logging console, ie. you will see protoPayload.methodName set to google.cloud.bigquery.v2.JobService.InsertJob.
For more information on BigQuery Logs you can refer to this documentation.

data entry form in google sheet for multiple users not working when accessed simultaneously

I've created form in google sheet, so that multiple users can add data, modify & delete.
However, it is not working properly when multiple users are working on it simultaneously.
For an example, two people are working on the sheet. User A and User B. If user A is typing something user B is also able to see and user B will be able to enter the detail, but it will change the details which are being entered by user A. Technically same sheet is opened for both the users and details keeps on changing what users are changing.
Ideally, if user A is entering some details user B should not be able to see it and form should be blank or unique for user B, so that both the data won't clash. I want it to be like the way google form is there wherein form will be blank when any user is opening it. (I have tried google form for my work, but as there are too many drop downs google form takes time to load and work gets slow that the reason I am trying to find the option in google sheet).
google sheet link
Above is the google sheet which you can open and check the form and coding. Also, please test it with a different id to test for multiple users.
Let me know if there is any workaround for this. Also, let me know if you need any other details.
Answer:
This just isn't possible. Sheets is meant to be a collaborative tool; what's edited by one person will always show up for others. You need to use a different tool, for example like a Google form for data entry, but having data not being edited in other open versions is just not workaroundable.

Update Google sheet from forms

I have data of client lookup information in a google sheet. This is tied to a Google Data Studio Viz to allow the team working with the data to see only the relevant information to each team member easily.
The only way this data is updated is when the team member asks questions to the client "Has you address changed, is the IP address the same, etc. etc"
I created a Google Form that has a simple series of questions allowing for the team member to record the changes. This is stored in the same workbook in another sheet. I want a formula/function that checks the unique ID (SiteID) for a match and then updates the cells where there is new data.
A sample is below:
Here is the Forms updated document
Here is the source document
Another complication is at some times there is a whole new site added. So a SiteID that is not present in the source, I would need these to be appended to the source.
Try the following in C2:
=ArrayFormula(if(A2:A="",,iferror(VLOOKUP(A2:A,sort({
Sheet1!B2:D},
row(Sheet1!B2:B),false),{2,3},false))))
Source document (Sheet2 here)
Column A is formatted as Plain Text
Form submissions (Sheet1 here)

How to share a BigQuery table whose datasource is Google Spreadsheet?

I made a BigQuery table backed by Google spreadsheet and it worked great until I shared it with some project members.
All the project members have permission to access all the resources in the BigQuery project and the Google spreadsheet, but the only person who can execute SQL on the table backed by a Google spreadsheet is the one who made the table.
When other people run queries, they get the error message below.
Error: Access Denied: BigQuery BigQuery: Permission denied while globbing file pattern.
Is it specification (or restriction) of BigQuery? Or is there any configuration that I should activate when I share such a table with others?

Resources