This should be pretty straight forward, just haven't been able to find any documentation, so unsure if it is possible, and if it is - how.
I'm calling the Sharepoint 2013 REST API, specifically the Excel REST services (ExcelRest.aspx), to fetch values from specific cells in an Excel workbook.
I've had success with the following two types of calls:
Fetch one specific cell (E5):
http://somesharepointsite.com/testsite/_vti_bin/ExcelRest.aspx/Shared%20Documents/Excelfile.xlsx/Model/Ranges('''Front%20page''!E5')?$format=html
Fetch range (E5-F20):
http://somesharepointsite.com/testsite/_vti_bin/ExcelRest.aspx/Shared%20Documents/Excelfile.xlsx/Model/Ranges('''Front%20page''!E5|F20')?$format=html
However I would very much like to be able to fetch multiple specific cells e.g: E5, E7, F15, F18.
This is due to how the information is placed in the spreadsheet, which isn't really convenient for automated extration. So instead of counting rows/columns to find relevant cells when extracting a range, it would much easier if all cells of relevance could be indicated directly.
I know I could just make a bunch of separate calls fetching one cell at the time, but that doesn't really seem like the optimum solution.
I've tried separating the range with commas, semicolons - also tried making two separate Ranges - no luck
Any suggestions are welcome
Actually, simplify the problem. I would create a hidden sheet that puts all the relevant data in a single range that you can pull from and give it a Named Range. Then call that Range. These values are linked the the master sheet. Hidden only in there's no reason to confuse anyone if they open up the spreadsheet.
Related
I am trying to create a Google form that collects the details of all old students in my department. But I want them stored separately according to their various year groups. Eg. All those who were admitted in 2016 should be in one worksheet, those admitted in 2017 in another worksheet and so on.
I have tried using Google Appscript but I don't know the right code to use since I'm new to Google Appscript. I'd be glad to have a block of code that helps me do this easily. Thank you.
Sure that works, but if you want people to do work for you, then fiver is the way to go. Show what you have done and we'll help you grow your capacity to solve these challenges.
Here are some pieces of the solution.
You need a trigger to run, when a form is submitted and its response saved to a spreadsheet. See here for how to create a Trigger, use the manual version.
Make sure you read and understand this article on when a Form response is submitted, Sheets Event -
FormSubmit
I suggest you save all the responses to one Sheet by default. Then, you copy the students to other Sheets within the same Spreadsheet. So your Spreadsheet contains the Sheets [2016], [2017], etc…
Now you should be ready to approach a solution which could look like this.
function copyResponseToRelevantYearSheet(e){
// Assuming there is question in the form title 'Year of Admission' which captures the year
const admissionYear = e.namedValues["Year of Admission"][0]
const nameOfStudent = e.namedValues["Student Name"][0]
// Assuming there is a Sheet called 2017
const admissionYearSheet = SpreadsheetApp.getActive().getSheetByName(admissionYear)
admissionYearSheet.appendRow( [nameOfStudent] )
}
There are also some helpful guides which are somewhat relevant here: GAS - Samples
using Talend Open Studio, I have a data-processing component, for which I'd appreciate your advice on how to make this possible (a) in a single component and (b) without a dirty workaround - thanks.
Relating part (a):
I have two different inputs:
One Input (with exactly one row) defines some kind of metadata for my processing.
One Input (with 1...n rows) defines the core data to process.
Currently, I solved this first requirement using two components and passing my metadata to the second component using the globalMap. But it would be nice, if I could integrate both connections into one component.
Relating part (b): After I have read all my input rows, I need to process them all at once. So far, so easy, I could use the end-section - my problem comes here: After that processing, I need to create a number of output-rows for a single output connection. Problem is, that Output-rows can only be created in the main-part and there I don't know when the last row was read...
Currently, I solved this counting the input-rows in advance and then, after that number is reached, I create that output. But this seems a really dirty workaround to me, so maybe someone has a solution for that, too?
Thank you for any useful tips!
For PowerApps, what data source, other than SharePoint lists are accessible via Powershell?
There are actually two issues that I am dealing with. The first is dynamic updating and the second is the 500 item limit that SharePoint lists are subject to.
I need to dynamically update my data source, which I am currently doing with PowerShell. My data source is not static and updating records by hand is time-consuming and error prone. The driving force behind my question is that the SharePoint list view threshold is 5,000 records however you are limited to 500 visible and searchable records when using SharePoint lists in the Gallery View and my data source contains greater than 500 but less than 1000 records. If you have any items beyond the 500th record that should match the filter criteria, they will not be found. So SharePoint lists are not optional for me until that limitation is remediated
Reference: https://powerapps.microsoft.com/en-us/tutorials/function-filter-lookup/
To your first question, Powershell can be used for almost anything on the Microsoft stack. You could use SQL server, Dynamics 365, SP, Azure, and in the future there will be an SDK for the Common Data Service. There are a lot of connectors, and Powershell can work with a good majority of them.
Take note that working with these data structures through Powershell is independent from Powerapps. Powerapps just takes the data that the data connector gives it, and if you have something updating the data in the background (Powershell, cron job, etc.), In order to get a dynamic list of items, you can use a Timer control and a Refresh function on your data source to update the list every ~5-20 seconds.
To your second question about SharePoint, there is an article that came out around the time you asked this regarding working with large lists. I wouldn't say it completely solves your question, but this article seems to state using the "Filter" function on basic column types would possibly work for you:
...if you’d like to filter the set of items that you are showing in the gallery control, you will make use of a “Filter” expression, rather than the “Search” expression, which is the default that existing apps used. With our changes, SharePoint connector now supports “equals” type of queries on columns that support filtering (Single line of text, choice, numbers, dates and people), so make sure that the columns and the expressions you use are supported and watch for the same warning to avoid reverting back to the top 500 items.
It also notes that if you want to pull from a list larger than the 5k threshold, you would need to use indexes, I have not fully tested this yet but it seems that this could potentially solve your problem.
I'm using Access 2010 and I would like to create a form where useres can enter data much like they can in an Excel format. The users need to enter a date when a step is complete for a specific unit.
In Excel the units run aross the top row, the steps run down the left column. In the cell where the unit and step meet, you put a date when it is done. In Access it is much harder to create a form that looks like this (at least it has been for me so far). I tried to use a crosstab query, but you cannot enter information into a crosstab query. I can do a massive form listing every combination of units and steps, but there are over 50 units and each one has 63 steps. I don't want users to have to look through a form with over 3,000 lines in it just to enter a date completed.
This definitely feels like something we should be using a database for instead of an Excel spreadsheet. I have the format for the back end tables to hold the data. My problem is how to create a form that is easy for the user to enter the dates.
I think you have three options. First, you could build the form from scratch, which you've already admitted would suck. And it would take a lot of VBA to get the data in the right place. Second, you could automate Excel - it's the same as the first method but you don't have to build the form. You would populate an Excel spreadsheet and write the changes back to the database. This is not a trivial task and I don't recommend it.
The third option is to throw away the idea that you want to do this in a grid. You've probably been doing it in Excel and to the extent that you replicate that, your users will be happy and comfortable. Moving to a database gives you benefits, but there are costs. This is one of the costs.
So create a form with a dropdown containing all of the units. When a unit is selected, populate a subform (datasheet view) listing all of the procedures and dates. The user can then select the unit, and fill in the date next to whichever procedures he wants. Then he can select another unit and do the same thing. If you set it up right, your data will flow to the tables automatically and you'll get all the benefits of data validation, input masks, relationships, and whatever else you're using at the table level.
I know that's not what you were looking for, but I think it's the best way forward.
I have a report file . I have to show the data in this report from two different datatable . I have to show the data from one datatable after another . I don't want to use sub report . Is there another way to solve it?
With Regards
The way to solve this with ActiveReports is with a subreport. Other than using subreports, you could use the "unbound mode" to programmatically combine the records from both datatables into a single rowset. See this walkthrough for an example of using unbound mode (see the DataInitialize and FetchData events for the meat of the matter).
It is difficult to say for sure how best to go about this without more information though. For example, some info that might useful:
Are the data tables in the DataSet?
Are the datatables joinable? In other words, is there a relation between them?
Why don't you want to use subreports? This is truly the way a banded report writer like ActiveReports is meant to handle multiple data sources.
Also, you might check out our Data Dynamics Reports product. It uses a different paradigm than banded reports where you lay out data regions (e.g. table, chart, etc.) on a page. Each data region can be bound to a separate data source without using a subreport. Maybe that would be a better fit for what you need.
Scott Willeke
GrapeCity inc.