Скрипт для дублирования неактивного листа в Google Таблицах

#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})
}