Могу ли я создать вкладки листа Google, а также вставить в них формат вкладки? - PullRequest
3 голосов
/ 11 марта 2020

У меня есть код для создания вкладок и код для копирования формата, однако, я ищу интеграцию этих двух. Я хочу создать вкладки с заданным списком c, а затем вставить формат вкладки (называемый ШАБЛОН) во вновь созданные вкладки.

Это код создания вкладок:

function createTabs() {
var ss = SpreadsheetApp.getActive()
ss.getSheetByName('Campaigns').getRange('A2:A40').getValues().filter(String)
    .forEach(function (sn) {
        if (!ss.getSheetByName(sn[0])) {
            ss.insertSheet(sn[0], ss.getSheets().length);}})}

Это код формата вставки, который я нашел:

var ss = SpreadsheetApp.getActiveSpreadsheet();
var source = ss.getSheets()[0];

var range = source.getRange("B2:D4");

// This copies the formatting in B2:D4 in the source sheet to
// D4:F6 in the sheet with gridId 1555299895. Note that you can get the gridId
// of a sheet by calling sheet.getSheetId() or range.getGridId().
range.copyFormatToRange(1555299895, 4, 6, 4, 6);

1 Ответ

2 голосов
/ 11 марта 2020

Похоже, вы используете insertSheet(sheetName, sheetIndex) для вставки новых "вкладок". Вместо этого вы можете использовать insertSheet(sheetName, sheetIndex, options) и установить шаблон таким образом, используя {template: templateSheet} в качестве опции. Таким образом, вам понадобится только первая половина кода, отредактированная как показано ниже.

function createTabs() {
var ss = SpreadsheetApp.getActive()
ss.getSheetByName('Campaigns').getRange('A2:A40').getValues().filter(String)
    .forEach(function (sn) {
        if (!ss.getSheetByName(sn[0])) {
            ss.insertSheet(sn[0], ss.getSheets().length, {template: ss.getSheetByName('TEMPLATE')}})}
...