#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(назначение, параметры)