#google-apps-script #google-sheets #spreadsheet
#google-apps-script #google-sheets #электронная таблица
Вопрос:
У меня есть этот скрипт ниже, который очень хорошо работает для дублирования листа и переименования его из содержимого ячейки A3.
Теперь я хотел бы запустить именно эту функцию, но на неактивном (или даже скрытом) листе. Это может быть дубликат, в котором копируются только значения, поскольку нет необходимости копировать все глубокие данные.
function AddReportSheet() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
SpreadsheetApp.getActiveSpreadsheet().duplicateActiveSheet();
var myValue = SpreadsheetApp.getActiveSheet( ).getRange("A3").getDisplayValue();
SpreadsheetApp.getActiveSpreadsheet().renameActiveSheet(myValue);
}
Комментарии:
1. Вы хотите дублировать все неактивные листы? Или конкретные листы?
2. @Marios Я хочу дублировать только один конкретный лист.
Ответ №1:
Объяснение:
Ваша цель — дублировать определенный лист и задать имя дубликата на основе значения ячейки A3
исходного листа.
- Используйте getSheetByName(имя), чтобы получить конкретный лист по его имени.
- Для достижения своей цели вы можете использовать метод sheet.CopyTo(электронная таблица) и связать его с setName(имя), чтобы задать имя листа в соответствии со значением ячейки
A3
.
Решения:
Дублируйте лист:
Выберите имя листа, который вы хотите скопировать. В следующем примере Sheet1
:
function AddReportSheet() {
const sheetName = "Sheet1"; // put the name of your sheet to duplicate
const ss = SpreadsheetApp.getActive();
const sheet = ss.getSheetByName(sheetName);
const myValue = sheet.getRange('A3').getDisplayValue();
sheet.copyTo(ss).setName(myValue);
}
Дублируйте лист и сохраните только значения и формат:
Если вы хотите сохранить только значения дублирующегося листа, вы можете использовать CopyTo(пункт назначения, параметры) и сохранить только содержимое, например {contentsOnly:true}
.
function AddReportSheet() {
const sheetName = "Sheet1"; // put the name of your sheet to duplicate
const ss = SpreadsheetApp.getActive();
const sheet = ss.getSheetByName(sheetName);
const myValue = sheet.getRange('A3').getDisplayValue();
const new_sheet = sheet.copyTo(ss).setName(myValue);
const rng = new_sheet.getDataRange();
rng.copyTo(rng, {contentsOnly:true})
}