Как создать скрипт, который автоматически суммирует значения из столбцов двух листов и записывает результаты в третий лист?

Здравствуйте, уважаемые специалисты по коду и Google Sheets! Обращаюсь к вам за помощью с задачей, если она не вызовет у вас затруднений. <br/> У меня есть три листа: "В работе", "Выполненные" и "ОТЧЁТ". <br/> На первых двух листах содержатся столбцы "E" (стоимость заказа) и "F" (стоимость счёта). <br/> Мне необходимо в третьем листе "ОТЧЁТ" отобразить сумму значений из столбцов "E" и "F" с предыдущих двух листов. Сумма значений столбца "E" должна быть помещена в одну ячейку (Прибыль), а сумма значений столбца "F" — в другую ячейку (Расход). В идеале, также хочется, чтобы в третьей ячейке (Прибыль) сразу отображалась разница между итоговыми суммами этих двух столбцов (хотя, возможно, это можно будет сделать позже с помощью простой формулы вычитания).
  • 30 ноября 2024 г. 13:33
Ответы на вопрос 1
Для автоматизации суммирования значений из столбцов двух листов в Google Sheets и записи результатов в третий лист, можно использовать Google Apps Script. Ниже представлен пример скрипта, который выполняет вашу задачу:

1. Откройте ваш Google Sheets.
2. Перейдите в меню "Расширения" > "Apps Script".
3. В открывшемся редакторе удалите любой существующий код и вставьте следующий скрипт:

```javascript
function summarizeData() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  
  // Получаем ссылки на нужные листы
  var sheetInProgress = ss.getSheetByName("В работе");
  var sheetCompleted = ss.getSheetByName("Выполненные");
  var sheetReport = ss.getSheetByName("ОТЧЁТ");
  
  // Получаем значения из колонок E и F на листе "В работе"
  var rangeInProgressE = sheetInProgress.getRange("E2:E" + sheetInProgress.getLastRow());
  var rangeInProgressF = sheetInProgress.getRange("F2:F" + sheetInProgress.getLastRow());
  var valuesInProgressE = rangeInProgressE.getValues();
  var valuesInProgressF = rangeInProgressF.getValues();
  
  // Получаем значения из колонок E и F на листе "Выполненные"
  var rangeCompletedE = sheetCompleted.getRange("E2:E" + sheetCompleted.getLastRow());
  var rangeCompletedF = sheetCompleted.getRange("F2:F" + sheetCompleted.getLastRow());
  var valuesCompletedE = rangeCompletedE.getValues();
  var valuesCompletedF = rangeCompletedF.getValues();

  // Суммируем значения
  var totalProfit = 0;
  var totalExpenses = 0;
  
  // Сумма значений "В работе"
  for (var i = 0; i < valuesInProgressE.length; i++) {
    totalProfit += (valuesInProgressE[i][0] || 0);
    totalExpenses += (valuesInProgressF[i][0] || 0);
  }

  // Сумма значений "Выполненные"
  for (var j = 0; j < valuesCompletedE.length; j++) {
    totalProfit += (valuesCompletedE[j][0] || 0);
    totalExpenses += (valuesCompletedF[j][0] || 0);
  }

  // Записываем результаты на лист "ОТЧЁТ"
  sheetReport.getRange("A1").setValue("Прибыль");
  sheetReport.getRange("B1").setValue("Расход");
  sheetReport.getRange("C1").setValue("Разница");
  
  sheetReport.getRange("A2").setValue(totalProfit);
  sheetReport.getRange("B2").setValue(totalExpenses);
  sheetReport.getRange("C2").setValue(totalProfit - totalExpenses);
}
```

4. Сохраните скрипт, например, под именем `SummarizeData`.
5. Закройте редактор Apps Script.
6. Теперь, чтобы запустить скрипт, вы можете вернуться в Google Sheets, и выбрать "Расширения" > "Macros" > "Имя вашего скрипта", чтобы выполнить автоматическое суммирование.

Этот скрипт считывает значения из столбцов "E" и "F" на листах "В работе" и "Выполненные", суммирует их и выводит результаты на лист "ОТЧЁТ". Результаты располагаются в ячейках A2 (Прибыль), B2 (Расход) и C2 (Разница).

Если вы хотите, чтобы скрипт запускался автоматически, вы можете настроить триггеры. Для этого в редакторе Apps Script выберите "Триггеры" и добавьте новый триггер для функции `summarizeData`, чтобы он запускался по расписанию или по другим событиям.
Похожие вопросы