Google Sheets - Run script based on value - google-sheets

I'm very new to scripting and really need some help getting started.
Basically I'm trying to develop a simple script to show a warning message when a certain value in a cell has been selected from a drop down list.
When the option 'Behind' has been selected I just want a simple popup window or something to say 'Review is needed'.
I've explored 'toast' but I'm not sure how I'd get the script to run based on the value.
Any help would be much appreciated, I'm going bald :(
Emma

You can also achieve this kind of behavior without writing your own script. See Data validation.
Select the cells for which you want this to apply
Click on Data -> Data Validation in the menu
Set your criteria for allowed values
On invalid data, select either Show Warning or Reject Input (the latter will reject the input and show a toast)
Put a checkbox in Show validation help text to add a custom warning text

Related

selecting option for mat-select dropdown and retrieving selected option using cypress

I have a mat-select dropdown with more than 20 values. I have to select a value from the available list. The first 5 values are visible when the dropdown is clicked. After that, the values in the dropdown are not visible and unable to click.
cy.get('app-screen').find('#paper-code').click());
cy.contains('mat-option', 'AL019').should('be.visible').click();
Since the above code failed, updated the code as below.
cy.contains('mat-option', 'AL019').click();
This worked. But, will it get failed anytime later?
Another question, is how to get the selected option for mat-select?
It could fail later but it won't if you set the force option to true and avoid having to wait for an actionable state.
cy.contains('mat-option', 'AL019').click({ force:true });
If it does fail in the future, you want to know about it because there's a regression in the app.
Don't {force:true} unless you really really need to, because it will stop your test catching such regressions.
To test the value is selected may be as simple as
cy.get('app-screen').find('#paper-code').should('contain', 'AL019)

how to select multiple checkbox in automation anywhere

I am running a loop where if condition met to select check box. I am unable to to do select multiple check boxes. It select first check box then run loop again but doesn't select next check boxes where condition are met.
enter image description here
To give some insight into what you're probably experiencing - Automation Anywhere object cloning basically operates like Javascript's getElementById in that it locks onto the first available item that meets the criteria you set forth in the object cloning parameters. There is no way to populate an array with these items like Javascript's getElementsByClassName might do.
This is interesting because if there are multiple items on the page that you're trying to work with and object cloning, by default, sets parameters that those items share, you'll only ever be able to interact with the first one.
I would suggest looking into additional parameters that distinguish each check box using Chrome's inspector or the other properties object cloning makes available to select.

Serilog Seq Output Template

I am new to Serilog and to Seq. Sorry for the beginner question.
I want to have an output template that seems to be available in Serilog for the Console, but I can't seem to configure it in the WriteTo.Seq parameters.
Am I missing something or is this not available or is there another way to do this?
I was hoping to create a template constant and keep the format all in one place.
TIA
Seq uses signals with tagged properties for this.
Pick an event that has a property you want to show beside the message,
click the green "tick" to "Show as tag", and then
save the resulting signal so that you can apply it when you want to show the property inline.
The signal can be set as a default for your user account in (your username) > Preferences.

iOS: Accessibility support for dynamic labels / validation errors?

I want to enable accessibility support in my app where i have In-line validation message (e.g As per below screenshot) when user enters something invalid data. My app doesn't show any error message.
What can be best and intuitive way to inform visual impaired/blind user about wrong data entries. e.g. Username & password mismatch, invalid.
First off, there is no "correct" way to do this. There are just a bunch of ways that work. The "best" way to do this, would be for iOS to have a "required" trait (IMO). But this is not supported, so we have to work with what iOS has given us... hints and labels.
Step 1:
Tell the user what is required. I would do this by adding the information to the hint. I like to add information to the hint that only non-familiar users need. "Power users" of your application will get use to what fields are required (assuming you're going to have return users, some views are just "hit and run" types). But, point being, don't flood users with unnecessary information. Users who visit a particular view frequently will get use to what is required, so keep non-crucial information in the hint. What you want is voiceover to read out the text input fields like this: "Email(accessibilityLabel) text field (the type of object), (pause) This field is required.(hint)" Don't wait until after a failure to provide this information to VoiceOver users. It should just always be set this way. If the type of failure changes, change the hint to adapt to this particular type of failure. If you'd like to keep the hint in sync with the Red highlighted labels, you can consider overriding the functions from the UIAccessibilityProtocol to pull out this information EX:
- (NSString*)accessibilityHint {
return myUILabel.text;
}
This should cause to keep the hint of the object, and the text of your UILabel in sync.
Step 2:
Mark all elements that are not the text input fields, as not accessibility elements. All of the information a user needs about those fields is either stored in the type of the field (a text input field), the label (email/password), or the hint (whether or not it is required). Therefore, we don't want VoiceOver to look at the other elements, because this would be duplicate information.
Step 3:
Use the following line of code:
UIAccessibilityPostNotification(UIAccessibilityScreenChangedNotification, anAccessibilityElement);
In your login action. On a failed login action, you should shift voiceover focus to the element that caused the failure. This informs the user that their action was attempted, and that it failed. It also allows them to easily know which element caused the failure, and that it needs fixed. In the event of multiple failures, make sure you shift focus to the first failure!

Loading select options after setting value

My program flow requires that I first set the value of a select option in the Viewmodel and then I load the available options into the Viewmodel. This causes problems, typically the first available option will be seen in the selection list after this, while the selected option value stays at the specified value.
I was hoping that setting the new "valueAllowUnset" would help, but instead my page becomes unresponsive when using it.
Therefore I currently set the original value again after loading the options. Strangely, this only works when I set the value, set a different value and then set the value again, e.g.
self.data()[field](orgValue);
self.data()[field]({});
self.data()[field](orgValue);
(I store values for multiple selection lists in the self.data observable and access them with the property index "field".)
I tried to strip this down to a simple JSFiddle (http://jsfiddle.net/timvdh/HN6DE/), but the behavior does not show there, although the example pretty much resembles my actual application. However, I am using about 30 select lists there.
So I was hoping, that someone can make an educated guess about what goes wrong in my application, I am hoping that the fact that I have to set the original value three times maybe gives a clue.
EDIT: This fiddle demonstrates, that setting the selected option before and after filling the options list does work with "valueAllowUnset": http://jsfiddle.net/timvdh/HT5Tp/
I am using JQuery Mobile with knockout.js and that caused the problem (sorry I did not even think about JQM being the problem in the first place). I am now setting the option before filling the list and after filling the list I call
$("#selectmenuID").selectmenu("refresh");
to display the option.
The hanging browser was not caused by knockout, there are additional subscriptions to the selectmenus in my app. "valueAllowUnset" changed the behavior of the selectmenus and triggered loops caused by problems in my code.

Resources