JS или GAS: Почему я получаю ошибку «Неверное назначение левой стороны» из нескольких операторов «если»? - PullRequest
0 голосов
/ 07 декабря 2018

Мои знания сценариев ограничены некоторыми старыми языками, такими как VBA-Excel.При попытке перевести скрипт VBA-Excel в GAS, почему следующее вызывает ошибку «Неверное назначение слева»?Кажется, что я не могу продолжать условно заменять ту же переменную, что и сценарий, который работает около 1500 строк и заменяет много переменных много раз в зависимости от различных проверенных условий.В конце последние состояния условия затем возвращаются как выходные данные.Это действительно разрушает все мои надежды на конвертацию, если я не могу условно изменить переменные в процессе выполнения сценария:

var Elevation = activeSheet.getRange(7,2).getValue();
var Desert = activeSheet.getRange(8,2).getValue();
var Highlands_mod = 0;

if (Elevation == "High Mountains") {Highlands_mod = -20;}
if (Elevation == "Highlands" && Desert = "No") {Highlands_mod = -10;}
if (Elevation == "Highlands" && Desert = "Yes") {Highlands_mod = 10;}
if (Elevation == "High Mountains") {Elevation = "Highlands";}

Я пробовал все виды различного форматирования на этом.Ошибка возникает, как только у меня появляется второй набор условий, который пытается изменить / заменить одну и ту же переменную, например, между любым из первых 3 операторов «если».Мне также интересно, могут ли первые и четвертые операторы «если» быть разрешены не по назначению и привести к ошибкам в будущем.

Я пытаюсь выполнить потенциально простое преобразование (надеюсь) безпроводить недели в изучении нового языка, поэтому я ценю любые идеи.

Ответы [ 2 ]

0 голосов
/ 07 декабря 2018

Вы используете = вместо == или ===:

if (Elevation == "Highlands" && Desert = "No") {Highlands_mod = -10;}

Помните: = присваивает значение, == и === сравнивают два значения.

Измените свой код на это:

 if (Elevation == "Highlands" && Desert == "No") {Highlands_mod = -10;}
0 голосов
/ 07 декабря 2018

У вас есть единица, равная той, где вы проверяете пустыню.

Объяснение:

let x = 10; // Инициализирует x значением 10

if (x == 10) {} // Это проверяет, является ли значение x 10

if (x === 10) {} // Это проверяет значение и тип x, является ли x число, и его значение равно 10

Он должен быть равен двойному, а не одному:

var Elevation = activeSheet.getRange(7,2).getValue();
var Desert = activeSheet.getRange(8,2).getValue();
var Highlands_mod = 0;


if (Elevation == "High Mountains") {
  Highlands_mod = -20;
}
if (Elevation == "Highlands" && Desert == "No") {
  Highlands_mod = -10;
}
if (Elevation == "Highlands" && Desert == "Yes") {
  Highlands_mod = 10;
}
if (Elevation == "High Mountains") {
  Elevation = "Highlands";
}
...