Switch cases in a google sheets script failing to recognize certain cases when typed into cell, but work when copy+pasted - google-apps-script

This is a very simple script and I have noted the cases that are failing.
The cases I tested the most was 'ts' when I type it into the cell, the value is not replaced, but when I copy from the script and paste it into the cell it does replace the value.
I have retyped that line of code multiple times to make sure that there is not an extra space within the quotes.
Any insight into why this is happening is much appreciated.
switch (e.value) {
case 'n':
e.range.setValue('=Sheet5!B1');
break;
case 't':
e.range.setValue('=Sheet5!B2');
break;
case 'i': //fails
e.range.setValue('=Sheet5!B3');
break;
case 'c':
e.range.setValue('=Sheet5!B4');
break;
case 's': //fails
e.range.setValue('=Sheet5!B5');
break;
case 'st':
e.range.setValue('=Sheet5!B6');
break;
case 'si': //fails
e.range.setValue('=Sheet5!B7');
break;
case 'sc':
e.range.setValue('=Sheet5!B8');
break;
case 'ts': //fails
e.range.setValue('=Sheet5!B6');
break;
case 'is': //fails
e.range.setValue('=Sheet5!B7');
break;
case 'cs':
e.range.setValue('=Sheet5!B8');
break;
case 'd': //fails
e.range.setValue('=Sheet5!B9');
break;
default:
return;
}
return;
}```

This works if you create and installable onEdit trigger since your changing values you can't use a simple trigger.
function onYourEdit(e) {
var sh=e.range.getSheet();
if(sh.getName()!='Sheet10')return;
switch (e.value) {
case 'n':
e.range.setValue('=Sheet11!B1');
break;
case 't':
e.range.setValue('=Sheet11!B2');
break;
case 'i': //fails
e.range.setValue('=Sheet11!B3');
break;
case 'c':
e.range.setValue('=Sheet11!B4');
break;
case 's': //fails
e.range.setValue('=Sheet11!B5');
break;
case 'st':
e.range.setValue('=Sheet11!B6');
break;
case 'si': //fails
e.range.setValue('=Sheet11!B7');
break;
case 'sc':
e.range.setValue('=Sheet11!B8');
break;
case 'ts': //fails
e.range.setValue('=Sheet11!B6');
break;
case 'is': //fails
e.range.setValue('=Sheet11!B7');
break;
case 'cs':
e.range.setValue('=Sheet11!B8');
break;
case 'd': //fails
e.range.setValue('=Sheet11!B9');
break;
default:
return;
}
return;
}

Related

Line 49, 52,55,58,61,64- 1119:Access of possibly undefined property text through a reference with static type String

Not sure what I am doing wrong, I removed any text from the text box fields so why am I still getting this error ?
Code below :
switch (day) {
case "Sun":
day.text = "Monday";
break;
case "Mom":
day.text = "Tuesday";
break;
case "Tue":
day.text = "Wednesday";
break;
case "Wed":
day.text = "Thursday";
break;
case "Thu":
day.text = "Friday";
break;
case "Fri":
day.text = "Saturday";
break;
case "Sat":
day.text = "Sunday";
break;
}
switch (codeToday) {
case "0":
case "3200":
var weather00:weather00 = new weather00();
_weatherToday.addChild(weather00);
_weatherToday.scaleX = 10.85;
_weatherToday.scaleY = 158.75;
break;
case "1":
case "3200":
var weather01:weather01 = new weather01();
_weatherToday.addChild(weather01);
_weatherToday.scaleX = 10.85;
_weatherToday.scaleY = 158.75;
break;
}
i suppose that 'day' is a String variable and have not a text property - look here -> String
Some components have a text property like: TextField and TextArea

Sharing #functions between Orchard custom theme's views

I'm porting an existing site in orchard, unfortunately the existing css is not very well stuctured and i need several helper functions to make the site work correctly.
currently i'm rewriting these conversion functions in each of the shape's alternate .cshtml file i'm customizing.
It is always the same function, and i want to move it in some location to make it reusable and more easilly maintanable.
I would also like to have it theme-specific (inside the folder of the theme i'm creating)
the function is very trivial
#functions{
string ConvertColorToStyle(string color){
string menuStyle = "";
switch(color)
{
case "Azure": menuStyle = "secondary_nav_area"; break;
case "DarkGreen": menuStyle = "secondary_nav_areaDiscoServices"; break;
case "LightGreen": menuStyle = "secondary_nav_areaPreClinAndClinical"; break;
case "Violet": menuStyle = "secondary_nav_areaAPI"; break;
case "LightViolet": menuStyle = "secondary_nav_areaSSC"; break;
case "DarkAzure": menuStyle = "secondary_nav_areaPharma"; break;
case "DeepAzure": menuStyle = "secondary_nav_areaIDFDaM"; break;
case "DeepBlue": menuStyle = "secondary_nav_areaIDDS"; break;
case "Orange": menuStyle = "secondary_nav_areaClinServices"; break;
case "Cyan": menuStyle = "secondary_nav_areaConsulting"; break;
case "Indigo": menuStyle = "secondary_nav_areaINDiGO"; break;
case "LightAzure": menuStyle = "secondary_nav_areaPAC"; break;
default: menuStyle = "secondary_nav_area";
break;
}
return menuStyle;
}}
but i want to share it across views like what it is possible to do by putting a function.cshtml file in the App_Code folder of an asp.net mvc project.
Is there a way to share this function across all the views in my theme in Orchard?
Sure: add a project file to your theme that has the same name as the theme, then add a cs file to it with a static class that exposes that method. You'll then be able to use the function in your views.

Building a autocomplete search input with a combobox

I'm trying to create a combobox that will fill with posible auto complete results, I firstly have all the words in an array that compares to the user input, its then put into a switch statement that adds the words to the combobox. I however can't get it right to remove the results from the combobox when the input changes.
var dictionary:Vector.<String> = new Vector.<String>();
dictionary.push("University Chapel");
dictionary.push("IT Building");
dictionary.push("Student Centre");
dictionary.push("EMS Building");
dictionary.push("EMB Building");
dictionary.push("Monastry Hall");
dictionary.push("Conference Centre");
dictionary.push("Client Service Centre");
var objects:Vector.<MovieClip> = new Vector.<MovieClip>();
stage.focus = inputBox;
inputBox.addEventListener(Event.CHANGE, onCompletions);
function onCompletions(event:Event):void{
for(var i:int = 0; i < dictionary.length; ++i){
if(dictionary[i].indexOf(inputBox.text) >= 0){
switch(dictionary[i]) {
case 'IT Building':
cbox.addItemAt({label:"IT Building", data:"screenData" + newRow},0);
break;
case 'University Chapel':
cbox.addItemAt({label:"University Chapel", data:"screenData" + newRow},0);
break;
case 'Student Centre':
cbox.addItemAt({label:"Student Centre", data:"screenData" + newRow},0);
break;
case 'EMS Building':
cbox.addItemAt({label:"EMS Building", data:"screenData" + newRow},0);
break;
case 'EMB Building':
cbox.addItemAt({label:"EMB Building", data:"screenData" + newRow},0);
break;
case 'Monastry Hall':
cbox.addItemAt({label:"Monastry Hall", data:"screenData" + newRow},0);
break;
case 'Conference Centre':
cbox.addItemAt({label:"Conference Centre", data:"screenData" + newRow},0);
break;
case 'Client Service Centre':
cbox.addItemAt({label:"Client Service Centre", data:"screenData" + newRow},0);
break;
}
}
else {
//cbox.removeAll(); //Where I attempted to remove all the results
}
}
}
So I'm trying to remove the results from the combobox and have them re evaluated and then inserted again. Just as a side question is there a way to expand comboboxs through actionscript ?
Thanks in advance
If anyone is interested, I got it to work, so this will basically create a autocomplete search input box.
var dictionary:Vector.<String> = new Vector.<String>();
dictionary.push("University Chapel");
dictionary.push("IT Building");
dictionary.push("Student Centre");
dictionary.push("EMS Building");
dictionary.push("EMB Building");
dictionary.push("Monastry Hall");
dictionary.push("Conference Centre");
dictionary.push("Client Service Centre");
stage.focus = inputBox;
inputBox.addEventListener(Event.CHANGE, onCompletions);
cbox.open();
function onCompletions(event:Event):void{
cbox.removeAll();
cbox.close();
for(var i:int = 0; i < dictionary.length; ++i){
if(dictionary[i].indexOf(inputBox.text) >= 0 && inputBox.text != ''){
switch(dictionary[i]) {
case 'IT Building':
cbox.addItemAt({label:"IT Building", data:"screenData"},0);
cbox.open();
break;
case 'University Chapel':
cbox.addItemAt({label:"University Chapel", data:"screenData"},0);
cbox.open();
break;
case 'Student Centre':
cbox.addItemAt({label:"Student Centre", data:"screenData"},0);
cbox.open();
break;
case 'EMS Building':
cbox.addItemAt({label:"EMS Building", data:"screenData"},0);
cbox.open();
break;
case 'EMB Building':
cbox.addItemAt({label:"EMB Building", data:"screenData"},0);
cbox.open();
break;
case 'Monastry Hall':
cbox.addItemAt({label:"Monastry Hall", data:"screenData"},0);
cbox.open();
break;
case 'Conference Centre':
cbox.addItemAt({label:"Conference Centre", data:"screenData"},0);
cbox.open();
break;
case 'Client Service Centre':
cbox.addItemAt({label:"Client Service Centre", data:"screenData"},0);
cbox.open();
break;
}
}
}
}

why is this switch case not working?

why is this switch case not working... even if i pick the button monday it shows me default message..
switch (finalsave.weekday) {
case finalsave.weekday == 1:
trace ("monday");
break;
case finalsave.weekday== 2:
trace ("tuesday");
break;
case finalsave.weekday == 3:
trace ("wednesday");
break;
case finalsave.weekday == 4:
trace ("thursday");
break;
case finalsave.weekday == 5:
trace ("friday");
break;
default:
trace ("nothingness");
}
switch (finalsave.weekday) {
case 1:
trace ("monday");
break;
case 2:
trace ("tuesday");
break;
case 3:
trace ("wednesday");
break;
... etc.
}
Or if you want to ditch that godawful switch-case altogether:
var weekdays: Array = [
"Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"
]
var index : int = finalsave.weekday -1;
trace( weekdays[ index ] );
After case, you should mention the possible value of your variable,
Below is the syntax of switch case for action script, c/c++ , java and javascript:
Switch case using strings.
view sourceprint?
switch("hello world")
{
case "hello":
trace("The man says hello");
break;
case "hello cat":
trace("The man says hello cat");
break;
case "hello world":
trace("The man says hello world");
break;
default:
trace("None of the above were met");
}
In this example the text "The man says hello world" is traced out.
Switch Case using integers, what fun.
switch(1)
{
case 1:
trace("The Number 1");
break;
case 2:
case 3:
trace("The Number 2 or 3");
break;
default:
trace("None of the numbers above");
}
from http://www.how-to-code.com/as3-actionscript3/as3-conditionals/as3-switch-case.html

i getting stack overflow error in as3

i am a beginner in flash but not in object oriented progarming.
iam making a business simulation multiplayer board game.this salute function is called from an .fla file and this salute function calls moveto function.the salute function working fine.but the problem comes at moveto() at dialog2.x=200;.if i remove that line the problem goes to next line please help me
public function salute(a:Array)
{
a[0].x=200;
a[0].y=200;
if(k==0)
{
tilehold.amount.text=String(amount);
tilehold.networth.text=String(networth);
tilehold.playertitle.text=playername;
dialog2=a[1];
dialog3=a[2];
dialog4=a[3];
dialog5=a[4];
dialog6=a[5];
forbuild=a[6];
k=1
}
a[0].dialogtext.text=playername+"'s turn";
a[0].addEventListener(MouseEvent.MOUSE_DOWN,nothing1);
function nothing1(e:MouseEvent)
{
a[0].x=1000;
e.target.removeEventListener(MouseEvent.MOUSE_DOWN,nothing1);
a[7].x=-10;
a[7].y=-10;
a[7].addEventListener(MouseEvent.CLICK,wheelspin);
}
function wheelspin(e:MouseEvent)
{
spinvalue=Math.floor(Math.random()*10);
a[7].wheel.spin(spinvalue);
a[7].wheel.gotoAndPlay(2);
e.target.removeEventListener(MouseEvent.CLICK,wheelspin);
a[7].addEventListener(MouseEvent.CLICK,wheelmove);
}
function wheelmove(e:MouseEvent)
{
a[7].x=1000;
e.target.addEventListener(MouseEvent.CLICK,wheelmove);
}
moveto();
}
public function moveto()
{
if(spinvalue==0||spinvalue==7||spinvalue==8||spinvalue==9)
{
if(nooflandsown==0)
{
/* the above one is working fine but,this error indicating below line*/
dialog2.x=200;
dialog2.dialogtext.text="you dont own any land";
dialog2.okbut.addEventListener(MouseEvent.CLICK,nothing2);
function nothing2(e:MouseEvent)
{
dialog2.x=1000;
e.target.removeEventListener(MouseEvent.CLICK,nothing2);
endturn();
}
}
else
{
dialog3.x=200;
dialog3.y=200;
dialog3.dialogtext.text="do you want to build";
dialog3.yesbut.addEventListener(MouseEvent.CLICK,wanttobuild);
dialog3.nobut.addEventListener(MouseEvent.CLICK,nothing3);
function wanttobuild(e:MouseEvent)
{
dialog3.x=1000;
e.target.removeEventListener(MouseEvent.CLICK,wanttobuild);
dialog3.nobut.removeEventListener(MouseEvent.CLICK,nothing3);
chooseland();
}
function nothing3(e:MouseEvent)
{
dialog3.x=1000;
dialog3.yesbut.removeEventListener(MouseEvent.CLICK,wanttobuild);
e.target.removeEventListener(MouseEvent.CLICK,nothing3);
endturn();
}
}
}
else
{
l=(currentposition+spinvalue)%18;
this.pos=l;
switch(currentposition)
{
case 1:
this.gotoAndPlay(15);
break;
case 2:
this.gotoAndPlay(25);
break;
case 3:
this.gotoAndPlay(35);
break;
case 4:
this.gotoAndPlay(55);
break;
case 5:
this.gotoAndPlay(65);
break;
case 6:
this.gotoAndPlay(75);
break;
case 7:
this.gotoAndPlay(85);
break;
case 8:
this.gotoAndPlay(105);
break;
case 9:
this.gotoAndPlay(115);
break;
case 10:
this.gotoAndPlay(125);
break;
case 11:
this.gotoAndPlay(135);
break;
case 12:
this.gotoAndPlay(145);
break;
case 13:
this.gotoAndPlay(165);
break;
case 14:
this.gotoAndPlay(175);
break;
case 15:
this.gotoAndPlay(195);
break;
case 16:
this.gotoAndPlay(205);
break;
case 17:
this.gotoAndPlay(215);
break;
default:
this.gotoAndPlay(1);
}
currentposition=l;
}
}
please help me out. i tried a lot by changing the entire code.but i cant figure that out
First, why adding event listener inside an event listener (function wheelmove)? And second, check if you actually exit moveto() function WITHOUT another call of salute(), if no, then you have to alter your code flow logic elsewhere. Also, in case of large code, you may use PasteBin service in the Internet to host the code.