google таблицы копирование форматирования с активного листа на любой другой лист

#google-apps-script #google-sheets

#google-приложения-скрипт #google-таблицы

Вопрос:

Мне действительно нужна ваша помощь. Через 2 дня я все еще на «НУЛЕ».

Мне нужен скрипт, который копирует все форматы с активного листа на любой другой лист. Было бы неплохо также использовать условное форматирование, чередование цветов и проверку данных. Я думаю, это не так уж сложно, но я действительно новичок в написании сценариев.

Это лист:

https://docs.google.com/spreadsheets/d/1mOkm_r4rngPXTkIerSQJKxRih31sM7XoZCZVnoHUc5M/edit?usp=sharing

Код до сих пор:

 enter function copyFormatting(){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var copyTo = ss.getSheetByName('agent2');
var range = copyTo.getRange(1, 1, copyTo.getMaxColumns(), copyTo.getMaxRows());
sheet.getBandings()[0].copyTo(copyTo.getRange(1,1)),SpreadsheetApp.CopyPasteType.PASTE_FORMAT, false);
}

function allcopyFormatting() {
var spreadsheet = SpreadsheetApp.getActive();
var allSheets = spreadsheet.getSheets();
allSheets.forEach(function(sheet){
  if(sheet.getSheetName() !== "detroit"){ // if you dont want to use the formatting on this sheet
sheet.activate();
copyFormatting(); // the function what yo like to run
  }
})
}
 

Я смог разобраться и написать некоторые функции: очистить форматирование на всех листах, отформатировать заголовки строк на всех листах, показать список листов, но это слишком сложно для меня.
Даже если я попытаюсь сначала смоделировать его с помощью macro recorder.

Я был бы очень признателен, если бы вы могли помочь мне с этим вопросом.

Ответ №1:

Я смог это понять:

 function allcopyFormatting() {
var spreadsheet = SpreadsheetApp.getActive();
var allSheets = spreadsheet.getSheets();
var sampleSheet = spreadsheet.getActiveSheet();  // from the spreadsheet select the active sheet
var maxRow =sampleSheet.getMaxRows();
var maxCol =sampleSheet.getMaxColumns();
var sampleRange = sampleSheet.getRange(1,1,maxRow,maxCol);
allSheets.forEach(function(sheet){
  if(sheet.getSheetName() !== "detroit"){ // if you dont want to use the formatting on this sheet
sheet.activate();
var targetSheet = spreadsheet.getActiveSheet();  // from the spreadsheet select the active sheet
var targetRange = targetSheet.getRange(1,1);
sampleRange.copyTo(targetRange, {formatOnly:true})  // it copies the formatting
  }
})
}
 

Ссылка

Ответ №2:

Попробуйте insertSheet(параметры), и если это не сработает, попробуйте CopyTo(назначение, параметры)