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

Как можно настроить Google Таблицы так, чтобы при установке статуса задачи "Выполнена" с помощью флажка, строка с этой задачей автоматически копировалась на другой лист, а на исходном листе удалялась? Я бы хотел получить макрос для выполнения данной задачи, и пожалуйста, дайте развернутый ответ.
  • 17 февраля 2025 г. 8:04
Ответы на вопрос 2
Для того чтобы автоматизировать перемещение задач между листами в Google Sheets при установке статуса "Выполнена" с помощью флажка, можно использовать сценарий Google Apps Script. Ниже приведен пошаговый процесс настройки, который включает создание макроса для достижения этой цели.

### Шаг 1: Подготовка листов

1. Создайте два листа в вашей Google таблице:
   - Первый лист назовите, например, "Задачи".
   - Второй лист назовите "Выполненные".

2. В листе "Задачи" создайте таблицу со следующими колонками:
   - Колонка A: Задача
   - Колонка B: Статус (флажок)
   
   Пример:
   ```
   A         | B
   Задача 1 | [ ] (флажок)
   Задача 2 | [ ] (флажок)
   ```

### Шаг 2: Написание сценария Google Apps Script

1. Откройте Google таблицу и перейдите в меню: `Расширения` > `Apps Script`.

2. Удалите все содержимое в редакторе и вставьте следующий код:

```javascript
function onEdit(e) {
  const sheetName = 'Задачи'; // Название исходного листа
  const targetSheetName = 'Выполненные'; // Название целевого листа
  const statusColumn = 2; // Номер колонки со статусом (1 - A, 2 - B и т.д.)

  const sheet = e.source.getSheetByName(sheetName);
  const targetSheet = e.source.getSheetByName(targetSheetName);
  
  // Проверяем, что редактируемый лист тот, что нужен, и статус редактируется
  if (sheet.getName() === sheetName && e.range.columnStart === statusColumn) {
    const row = e.range.rowStart;
    const value = e.value;

    // Если установлен флажок (флажок возвращает "TRUE" при активации)
    if (value === 'TRUE') {
      const rowData = sheet.getRange(row, 1, 1, sheet.getLastColumn()).getValues()[0];
      
      // Убираем строку из исходного листа
      sheet.deleteRow(row);
      
      // Добавляем строку на целевой лист
      targetSheet.appendRow(rowData);
    }
  }
}
```

### Шаг 3: Сохранение и тестирование сценария

1. После вставки кода нажмите на иконку дискеты или `Файл` > `Сохранить`, чтобы сохранить ваш проект. Вы можете дать проекту любое имя.

2. Вернитесь в вашу таблицу и попробуйте поставить флажок в колонке статуса в листе "Задачи". После этого задача должна переместиться на лист "Выполненные".

### Шаг 4: Настройки разрешений

1. При первом запуске сценария может понадобиться предоставить разрешения. Нажмите "Посмотреть разрешения" и следуйте инструкциям на экране.

### Примечания:

- Если вы хотите перенести задачи обратно, вам нужно будет добавить аналогичный код для обработки задач, которые вы хотите вернуть.
- Убедитесь, что ваши задачи имеют уникальную логику, чтобы избежать путаницы при удалении и копировании данных.
- Не забудьте сохранять резервную копию вашей таблицы перед тестированием сценария, чтобы избежать потери данных.

Теперь у вас есть система для автоматического перемещения задач в Google Sheets!
Вы можете записать макрос и пользоваться им, либо написать простенький скрипт. Что ещё развёрнутей написать я не знаю))
Похожие вопросы