Я пишу сценарий, который, если значение, записанное в ячейках L1, L2 и L3, соответствует «Ok», тогда сценарий сохраняет электронную таблицу в PDF, если в любой из этих трех ячеек записано что-либо, кроме «Ok», сценарий должен остановиться, не должен продолжить и сохранить PDF.
function Test() {
var spreadsheet = SpreadsheetApp.getActive();
spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Squads'), true);
spreadsheet.getRange('Squads!W17').activate();
if ('Gerais!L1'="Ok"){
spreadsheet.getRange('Gerais!M1').activate();
spreadsheet.getCurrentCell().setValue('Aprovado');
}
if ('Gerais!L2'="Ok"){
spreadsheet.getRange('Gerais!M2').activate();
spreadsheet.getCurrentCell().setValue('Aprovado');
}
if ('Gerais!L3'="Ok"){
spreadsheet.getRange('Gerais!M3').activate();
spreadsheet.getCurrentCell().setValue('Aprovado');
}
}
Когда я пытаюсь сохранить этот скрипт, на левой стороне появляется сообщение: Неверный перевод. (строка 1, файл "Тесты")
Я хочу, чтобы просто, если в ячейках L1, L2 и L3 было написано «Ok», скрипт переходит на следующий шаг и сохраняет электронную таблицу в PDF.
Скрипт PDF я не включил сюда, чтобы не расширять размер вопроса. Но это явно ниже ЕСЛИ
2 ответа
Вы ошиблись:
Например, if('Gerais!L1'="Ok")
- это присвоение, а не сравнение. Это должно быть написано как if(Gerais!L1'=="Ok")
Кроме того, при использовании макро инструмента, он имеет тенденцию использовать много активаций, и, как правило, они не нужны в скриптах и просто занимают дополнительное время и пространство. Попробуйте удалить их, если вы не чувствуете, что они абсолютно необходимы ..
Что касается остальной части кода, попробуйте это:
GetValues () и getValue () не будут иметь большого значения здесь, но в командах циклов это может иметь огромное значение.
function Test() {
var ss=SpreadsheetApp.getActive();
var sh=ss.getSheetByName('Gerais');
var rg=sh.getRange("L1:L3");
var vA=rg.getValues();
if (vA[0][0]=="Ok"){
sh.getRange('M1').setValue('Aprovado');
}
if (vA[1][0]=="Ok"){
sh.getRange('M2').setValue('Aprovado');
}
if (vA[2][0]=="Ok"){
sh.getRange('M3').setValue('Aprovado');
}
}
Ценность помещения данных в строки или столбцы, которые легко получить с помощью getValues (), станет более полезной для вас, поскольку вы улучшите кодирование в будущем, и вы обнаружите, что это очень полезный способ получения доступа к вашим данным.
Ответ на дополнительный вопрос:
if(vA[][0]=="Ok" && vA[1][0]=="Ok" && vA[2][0]=="Ok") {
//continue to pdf
}else{
//take another path
}
Если вы хотите проверить значение ячейки, вам нужно вызвать getRange () и getValue () или getValues ().
Например:
var data = spreadsheet.getSheetByName('Gerais').getRange('L1:L3').getValues();
if (data[0][0] == 'OK') { // data[0][0] is L1
// do something fun
}
if (data[1][0] == 'OK') { // data[1][0] is L2
// do something fun
}
// etc.
Похожие вопросы
Новые вопросы
google-apps-script
Используйте для вопросов о Google Apps Script, серверной платформе Google для облачных сценариев на основе Javascript для автоматизации задач в продуктах Google и сторонних службах. Используйте в дополнение к релевантным тегам продукта (например, [google-sheets], [google-docs]) или API (например, [google-drive-api]), где это применимо.