Чтобы создать макрос в Google Sheets, который будет копировать лист "Товарный чек" под новым названием (из ячеек A9 и B9), и при этом переносить только значения, сохраняя форматирование, вы можете использовать следующий скрипт Google Apps Script.
1. Откройте Google Sheets.
2. В меню выберите "Расширения" -> "Apps Script".
3. Удалите любой существующий код из редактора и вставьте следующий:
```javascript
function copySheetWithValues() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sourceSheet = ss.getSheetByName("Товарный чек");
// Получаем названия из ячеек A9 и B9
var newSheetName = sourceSheet.getRange("A9").getValue() + " " + sourceSheet.getRange("B9").getValue();
// Проверяем, существует ли уже лист с таким именем
if (ss.getSheetByName(newSheetName)) {
Logger.log("Лист с таким названием уже существует.");
return;
}
// Копируем лист
var newSheet = sourceSheet.copyTo(ss);
newSheet.setName(newSheetName);
// Копируем значения и форматирование
var range = newSheet.getDataRange();
range.copyTo(newSheet.getDataRange(), {contentsOnly: true}); // Копируем только значения
}
```
4. Сохраните скрипт, нажав на иконку дискеты или сочетание `Ctrl + S`.
5. Закройте редактор Apps Script.
6. Чтобы запустить скрипт, вернитесь в Google Sheets, затем выберите "Расширения" -> "Макросы" -> "Запустить макрос...", и выберите ваш макрос `copySheetWithValues`.
### Объяснение кода:
- Мы получаем ссылку на книгу и исходный лист "Товарный чек".
- Получаем название нового листа из ячеек A9 и B9.
- Проверяем, существует ли лист с таким названием, чтобы избежать конфликта имен.
- Копируем исходный лист.
- Используем метод `copyTo` с параметром `{contentsOnly: true}` для копирования только значений.
Теперь при запуске этого макроса будет создаваться новый лист с данными из "Товарного чека", при этом только значения будут перенесены, а форматирование сохранится.