Добрый день! <br/> <br/> Я разрабатываю сценарий с использованием сервиса Make, в котором получаю данные от чат-бота и автоматически вношу их в строки таблицы Google Sheets. Однако мне необходимо, чтобы для этих данных применялись две формулы. Я вводил формулы вручную, но при добавлении данных через Make они удаляются. Мне порекомендовали использовать скрипт в Google Sheets. <br/> <br/> Данные, которые я получаю от бота, следующие: <br/> Ячейка А - пол (man/woman) <br/> Ячейка В - вес (число) <br/> Ячейка С - рост (число) <br/> Ячейка D - возраст (число) <br/> <br/> Из этих данных мне необходимо получить результаты: <br/> <b>Ячейка E </b> - дневная норма калорий (используемая формула: =ARRAYFORMULA(IF(A2:A = "man", 88.362 + (13.397 * B2:B) + (4.799 * C2:C) - (5.677 * D2:D), IF(A2:A = "woman", 447.593 + (9.247 * B2:B) + (3.098 * C2:C) - (4.330 * D2:D), "Неверный пол")))) <br/> <b>Ячейка F </b> - выбор дефицита калорий (используемая формула: =ARRAYFORMULA(IF(E2:E > 2300, "1800 ккал", IF(E2:E > 2000, "1650 ккал", IF(E2:E > 1700, "1500 ккал", "1350 ккал")))) <br/> <br/> Однако при заполнении строки с помощью Make эти формулы стираются. Поэтому мне нужен скрипт, который сможет решить эту проблему. Заранее спасибо!
Вы можете использовать Google Apps Script для автоматического применения формул к ячейкам в Google Sheets, когда данные добавляются с помощью сервиса Make. Ниже представлен пример скрипта, который будет брать введенные данные и автоматически заполнять нужные формулы в столбцы E и F. 1. Откройте Google Sheets. 2. Перейдите в меню `Extensions` (Дополнения) -> `Apps Script`. 3. Удалите весь код в открывшемся редакторе и вставьте следующий код: ```javascript function onEdit(e) { const sheet = e.source.getActiveSheet(); const range = e.range; // Проверяем, что данные вводятся на листе, где необходимо(например, "Лист1") if (sheet.getName() === "Лист1" && range.getColumn() <= 4) { const row = range.getRow(); // Если данные были добавлены или изменены в строке if (row > 1) { const gender = sheet.getRange(row, 1).getValue(); const weight = sheet.getRange(row, 2).getValue(); const height = sheet.getRange(row, 3).getValue(); const age = sheet.getRange(row, 4).getValue(); // Расчет дневной нормы калорий let dailyCalories; if (gender === "man") { dailyCalories = 88.362 + (13.397 * weight) + (4.799 * height) - (5.677 * age); } else if (gender === "woman") { dailyCalories = 447.593 + (9.247 * weight) + (3.098 * height) - (4.330 * age); } else { dailyCalories = "Неверный пол"; } // Установка дневной нормы калорий в ячейку E sheet.getRange(row, 5).setValue(dailyCalories); // Определение дефицита калорий let calorieLoss; if (dailyCalories > 2300) { calorieLoss = "1800 ккал"; } else if (dailyCalories > 2000) { calorieLoss = "1650 ккал"; } else if (dailyCalories > 1700) { calorieLoss = "1500 ккал"; } else { calorieLoss = "1350 ккал"; } // Установка дефицита калорий в ячейку F sheet.getRange(row, 6).setValue(calorieLoss); } } } ``` 4. Сохраните скрипт (например, `AutoFillCalories`). 5. Закройте редактор скриптов. Теперь, когда вы будете добавлять или изменять данные в ячейках A, B, C или D, скрипт автоматически заполнит ячейки E и F соответствующими значениями, основываясь на введенных данных. Важно помнить, что данный скрипт сработает только для первой строки, начиная со второй. Если вам необходимо изменить это поведение (например, если у вас есть заголовок в первой строке), вы можете легко внести корректировки в условие для `row > 1`.
Ответ chatgpt, проверяйте:
Чтобы решить проблему, можно использовать Google Apps Script. Скрипт будет автоматически заполнять формулы в ячейки после добавления данных в таблицу. Вот как это сделать:
1. Откройте Google Sheets.
2. Перейдите в меню Extensions → Apps Script.
3. Вставьте следующий скрипт:
function onEdit(e) {
var sheet = e.source.getActiveSheet();
var range = e.range;
// Убедитесь, что скрипт работает только для определённого листа
if (sheet.getName() === "Sheet1") { // Замените "Sheet1" на имя вашего листа
var row = range.getRow();
var col = range.getColumn();
// Проверяем, что данные добавляются в диапазон A:D
if (col >= 1 && col <= 4 && row > 1) { // Пропускаем заголовок
var gender = sheet.getRange(row, 1).getValue(); // Ячейка A
var weight = sheet.getRange(row, 2).getValue(); // Ячейка B
var height = sheet.getRange(row, 3).getValue(); // Ячейка C
var age = sheet.getRange(row, 4).getValue(); // Ячейка D
// Вычисление дневной нормы калорий
var calories;
if (gender === "man") {
calories = 88.362 + (13.397 * weight) + (4.799 * height) - (5.677 * age);
} else if (gender === "woman") {
calories = 447.593 + (9.247 * weight) + (3.098 * height) - (4.330 * age);
} else {
calories = "Неверный пол";
}
sheet.getRange(row, 5).setValue(calories); // Записываем в ячейку E
// Вычисление дефицита калорий
var deficit;
if (typeof calories === "number") {
if (calories > 2300) {
deficit = "1800 ккал";
} else if (calories > 2000) {
deficit = "1650 ккал";
} else if (calories > 1700) {
deficit = "1500 ккал";
} else {
deficit = "1350 ккал";
}
} else {
deficit = "Ошибка";
}
sheet.getRange(row, 6).setValue(deficit); // Записываем в ячейку F
}
}
}
4. Сохраните проект, например, как AutoFillFormulas.
5. Перейдите в Triggers (триггеры) и добавьте новый триггер:
Выберите функцию onEdit.
Выберите событие On edit.
Теперь, когда Make добавляет данные в столбцы A:D, скрипт автоматически вычислит значения для столбцов E и F.