Set data validation for column including new rows - validation

I have a column in a Google spreadsheet with data validation, that makes a drop down menu available when editing existing rows. Occasionally though contributors create new rows at the bottom of the doc and this validation is lost.
I would like to keep this validatation in the column even in newly created rows (excluding the header row).
I have seen much of this discussion throughout stackoverflow and google help forums, but still cannot find a clear answer.
My hunch is that this would involve Google Apps Acript using an onEdit trigger and then either paint formatting or a combination of the confusing class DataValidationBuilder. (https://developers.google.com/apps-script/reference/spreadsheet/data-validation-builder) but I'm not sure beyond that.

While not necessarily elegant I found the following to work:
create your validation on the entire column
once that's done click the cell(s) that represent the heading, select data / validation, and then click on 'remove validation' on that single cell.
This way any newly inserted rows will inherit the validation set up on the entire column and you don't have to always be reminded that your heading isn't a valid value.

onEdit trigger which uses Range.getDataValidation() and Range.setDataValidation() to copy the rule from an existing row to the new row

While in the data validation dialog screen you can manually enter the range as "Sheet1!A:A" to apply the formula to all of column A.
This also includes new rows added afterwards

I'm not sure if this is a new feature but this worked. Set the validation as list from interval and interval as:
'sheet'!C2:C
This includes all new rows excluding title(first row)

Related

Adding a drop-down menu (data validation) after each row of a query result in Google Sheet

First, here is the link to my sheet:
https://docs.google.com/spreadsheets/d/1067N1SAIwpGkMRBZiUv4JW8yDNkozuGt7Fwh6GW-qvE/edit#gid=1742559851
If you look at the tab called "Selection", I have two columns called "Select". All the data in these tables is collected by a query function, except column "Select". In that column, I need to add Data Validation (a simple Yes or No). I want the Data Validation to be automatically added when a new row is created but the query function instead of having to add or remove it manually every time I make some changed. Data collected by the query function is using the two variables on top of the sheet (minimum rating and global buff).
Just to show the step to apply data validation to your whole column, see the following image. Under Cell Range, the image shows Selection!D5:D99, but this is actually set to Selection!D5:D999, it just is truncated due to the size of the text box.
Let us know if this is what you were looking for, or if I've misunderstood your issue.

Google Sheets - Dynamic Cell Range For Data Validation, Specifically List Of Items Criteria

I am having some issues with specifying a dynamic cell range for a "data validation".
I'm aware you can do some tricky stuff with = "Projections!M4:M"&O2. You can update the content of cell O2 for example to 3 and the output would be Projections!M4:M3.
This makes the value "dynamic". These tricks don't seem to work in the "Cell Range:" input field in the Data Validation selection/configuration screen.
My problem is, I hate seeing drop down arrows (call me o.c.d) for rows that have no content, my number of rows will grow in the future so I don't have any other option than selecting M4:Mfills the whole 1002 rows with drop down arrows.
Has anyone worked out a trick to make dropdown arrows only show up for rows that are filled?
I'm using = COUNTA(B4:B)to get the number of rows that are filled and = "Projections!M4:M"&O2 to make the desired Projections!M4:MX string but the "Cell Range" input field in the Data validation screen doesn't accept this as valid either.
Well I didn't find a direct solution, but something that I can work with to resolve my issue which was I hate seeing drop down arrows for empty rows.
I turned a filter on for a column that will always be filled in and filtered by conditions Cell is not empty but i'd prefer a better solution.

Is there a way to tell user the multi-sort order in jqgrid?

I am using jqgrid(4.5.4) and implemented multi-sorting in it using code below.
multiSort: true
The client also wants to see what column they sorted first and so on. Do we have a way to display it in jqgrid? If this feature doesn't exist, we request this in future release. Thanks
My suggestion is
To show the list of column-name, sort-icon and a close button next to it in the form of tags similar to stack overflow tags(this would be great).Just plain list is also fine. It can be displayed on top/below the grid. It should keep updating each time the sort is performed. We can remove sort on particular column by deleting the tag or clicking on column header(default behavior). The multi-sort order should still be preserved.

Google Spreadsheets: Working with data inserted from forms across tabs

I'm in great need of help. I've a form which asks basic questions and puts the results into rows of an existing spreadsheet.
Specific data from those responses are "promoted" to 2nd, 3rd and 4th tabs based on IF formulas on tabs 2+ checking the value of a pull down selection on in the corresponding row on each previous tab. (Waterfall)
My challenge is - forms data is inserted into a new row (Does not use existing) and if I set the pulldown value to "Approved" on the first tab, the formulas on the second tab which were contiguous now skip the row where the form data was automatically entered.
I suspect I need to learn how to properly use ArrayFormula, etc, but have not managed to fix this looking at existing examples combined with my IF statements.
Help is appreciated. Sample is here. Safe to ignore the first and last tabs.
Thank you.
You can try using an open-ended range with ArrayFormula. For example, the formula on "2-Pipeline" in cell D3 could be:
=arrayformula(IF('1-IdeasReceived'!U2:U="Approved",'1-IdeasReceived'!L2:L, ))
The ranges U2:U and L2:L should pick up all rows in those columns, even after you've had forms submitted.
Since this is an ArrayFormula over column ranges, you only need it in cell D3; it will inject CONTINUE formulas down the rest of the column.
Warning: Your spreadsheet is combining dynamic row content (e.g. pulled from another sheet) with static content (e.g. "Environment, Health & Safety" column on "2-Pipeline" sheet). This is bound to result in misalignment if rows are added or deleted in the middle of the source data.

extjs 4 How to change ordering of shown column dropdown on grid

Using extjs 4.1.1
I have a grid with lots of columns >20.
Initially, most of these columns are hidden.
If a user wants to unhide the column, they select the menu on any column, then select the "columns" choice, this expands another dropdown/dropout which shows all of the columns. Those with checkboxes next to them are shown.
My issue is this:
The columns in the dropdown are shown in the order in which they are defined/displayed in the grid. The order in which they are displayed in the grid has been chosen for a good reason( e.g. id as the first column). However, when a user wants to display one of the hidden columns, it is hard for them to find it in the list. This is because the list is sorted in the order the columns are defined. I want to sort the column dropdown/dropout list in alphabetical order, without effecting the order of the columns in the grid.
How can this done?
I think I found the solution to your question.
First of all I don't have the Ext JS 4.1.1. framework on my current PC. So I tried to figure out you problem reading the Ext JS 4.1.3. documentation available on Sencha's site. But I don't think that they have made drastical changes in this part of the framework between the two minor releases so my solution should work in your case too.
I have tried out my solution using JSFiddle. Unfortunately they did not have the 4.1.1. ext-all.css file, so I have linked manually the 4.0.2 file available at Sencha, so the menu is looking a bit missplaced.
The header menu and it's submenus are managed by the Ext.grid.header.Container class. The column submenu is constructed by the getColumnMenu method. The whole menu is purged and reconstructed on every drag and drop or other event which should affect the grid view. As a result it is enough to overwrite this method in order to solve the problem. Because the headercontainer class is too deep in the framework it is hard to extend it, so you have to make use of the Ext.base.override method.
The column submenu's menu items are created from the result of the
items = headerContainer.query('>gridcolumn[hideable]')
query. So you have to first sort alphabetically the result, before creating the menu items. I have added to the class the sortColumns method which does all the sorting stuff.
So here is what I did: link to my solution.
I hope that this is what you were looking for.

Resources