Задача
Как продолжение комментариев, ваш вызов метода sendEmail()
выходит за рамки оператора if
. Есть три способа написать оператор if
:
Полный синтаксис
На мой взгляд, это (хотя и не читаемость) лучший способ написать if...else
операторы, чтобы избежать проблем с отладкой. Кроме того, подход с блочными операторами (оборачивая все с помощью {}
) позволяет записать несколько условных операторов в предложения:
if(condition) {
conditional statements;
}else {
other conditional statements;
}
Краткий синтаксис
Тот, который вы используете, не содержит операторов блока, что может быть желательно при выполнении только одного условного состояния за раз, но вы должны убедиться, что оператор if
не является закрыто до условного (то есть ;
, означающего конец утверждения):
if(condition)
conditional statement
else
another conditional
Сокращенный синтаксис
Условный оператор, который можно использовать, если вам нужно написать небольшое, легко читаемое условие и записать результат в переменную (в примере полный синтаксис используется с несколькими условиями):
condition1 ? onYes1 : condition2 ? onYes2
Решение
Как указано выше, при использовании короткого синтаксиса необходимо убедиться, что условный оператор входит в сферу действия оператора if
, поэтому вам необходимо удалить ;
, плюс я бы предложил разделить проверки на читаемость и использовать строгие Сравнение:
var isSheet = sheet.getName() === sheetNameToWatch;
var isCol = range.getColumn() === columnNumberToWatch;
var isValue = range.getValue().toString().toLowerCase() == valueToWatch;
if (isSheet && isCol && isValue) {
MailApp.sendEmail(email, subject, message);
}
Доступ к строке
Что касается вашего второго вопроса, вы можете получить доступ к номеру строки с помощью getRow()
(или getRowIndex()
, поскольку они в настоящее время идентичны), остальное довольно просто:
var curRow = range.getRow();
var subject = 'Yes is in row '+curRow;
Полезные ссылки
- Условный оператор ссылка ;
If
выписка ссылка ;
getRow()
метод ссылка ;
getRowIndex()
метод ссылка ;