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.
Related
I'd like to save the content of a Google sheet in BigQuery as a table using App script.
So far we create a table "A" in BigQuery which is synced with the Google Sheet. And then we create an App script which queries the table A and saves it as table B. The script is quite similar to the one described in Jun Kaneko's article Integrate Google Spreadsheet with Big Query by Apps Script.
This solution works very well, but we have to create a new table A, every time we change the table structure in google Sheet. Therefore I was wondering how we could save the content of the google sheet directly as table B without a table A in BigQuery. The query should use the first row as column names and all following rows as content.
===== Edit
As taking into consideration new information from the OP, it's not possible to be performed without creating a new table or deleting and recreating at every change. The table schema is not so flexible on BigQuery, you can't for example add a new column without recreate the table. Check more detail about changing schemas.
=====
There is a easy way to perform what you want without having to program an App Script.
Just create an BigQuery table using the Google Spreadsheet as the information source. This is a native way for doing this.
Here is the procedure to do so:
Create your google spreadsheet, define the columns (you can insert your data whatever you what):
Back to BigQuery, create your data set:
In the dataset, create the table defining the source data as Drive → Google Sheet. As the fist line of your sheet is your table header, configure in the Advanced Options → Header rows to skip = 1:
URI:
On Bq:
Finally you will have your data on BigQuery, updated everytime you change the spreadsheet:
Please inform if you have any doubt or problem.
I'm really new to this and would love some help where I'm currently stuck. I've created a macro to clear a spreadsheet. I've tried multiple triggers of onedit and onchange and haven't had luck with my end goal. I'm sending data (about 10 columns and 100 rows into a google sheets via zapier. Basically, I'm refreshing the data by replacing the data. So, before the data comes in, I wanted the macro to delete the old data. However, the macro actually deletes the new data coming in once it posts. Any scripts or workarounds that could help?
From what I know about Zapier it works on timed intervals. You can have a script run on time intervals just before the time Zapier inputs information and delete the old info.
Another approach would probably be to have a intermediary sheet.(Lets call this sheet, "sheet1". The final sheet can be called "sheet2". When Zapier writes data to sheet1 it can trigger the onChanged event. Take the information in sheet2 delete everything, then post the new data to sheet 2.
Finally, Zapier supports webhooks. You can publish your script as a web app and have it do a get or post to the app which runs the delete function. To give it time you can use the delay that Zapier provides.
What you are describing sounds like the perfect candidate for the IMPORTDATA worksheet function. The function is entered in a cell, as are all worksheet functions, and it takes a URL which points to a CSV or TSV file. Once entered the data referred to by the URL is expanded out into the appropriate number of rows and columns. Seeing as the function resides in a single cell you would only need to update that cell when you wanted to change the data. This means that you would no longer need to use a .gs file to remove old data and could instead complete everything from within Zapier. I have answered a question similar to this here, I describe how this is done within Zapier. The only prerequisite is that the data you are using is in either CSV or TSV format.
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)
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.
I've been trying to create a complete system using MS Access, but i really need to use the functionality of excel spreadsheets.
I wish to do the following; when I create a record, i create a directory for that record, and copy an excel spreadsheet to that directory.
The spreadsheet will be able to link to the corresponding record. So for example if I have a field 'Name' In the database record, the value of this field will show up on the excel spreadsheet.
Is it possible to do this?
It might help for you to explain your concept of "links" between Access rows and separate spreadsheets. That baffles me.
Rather than "link" each Access record to a separate spreadsheet, perhaps you could have the spreadsheet query the database to retrieve whatever updated information it needs.
Or use automation driven from Access to revise the spreadsheet.
Edit: To get start driving Excel from Access, look at Sample Excel Automation by Dev Ashish
Sounds overly complex and unmaintainable. Why not just embed a spreadsheet into your record?
http://support.microsoft.com/kb/209990