Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Как скопировать форматирование строки в GAS? - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: _Boroda_, китин  
Как скопировать форматирование строки в GAS?
vityaba3 Дата: Вторник, 22.03.2022, 10:10 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 0% ±

Как скопировать ВСЕ форматирование строки из одного документа в другой с помощью GAS?
copyto() и другие не подходят, т.к. работают только ВНУТРИ одного документа.
А ручками в цикле перебирать все ячейки и в каждой менять фон, шрифт, размер ячеек не очень хочется (и будет работать не очень быстро)
 
Ответить
СообщениеКак скопировать ВСЕ форматирование строки из одного документа в другой с помощью GAS?
copyto() и другие не подходят, т.к. работают только ВНУТРИ одного документа.
А ручками в цикле перебирать все ячейки и в каждой менять фон, шрифт, размер ячеек не очень хочется (и будет работать не очень быстро)

Автор - vityaba3
Дата добавления - 22.03.2022 в 10:10
Gustav Дата: Вторник, 22.03.2022, 16:03 | Сообщение № 2
Группа: Админы
Ранг: Участник клуба
Сообщений: 2808
Репутация: 1184 ±
Замечаний: ±

начинал с Excel 4.0, видел 2.1
copyto() и другие не подходят, т.к. работают только ВНУТРИ одного документа

Range.copyTo - внутри одного, а Sheet.copyTo - позволяет копировать между документами целые листы, с сохранением форматирования (пример из хелпа по API):
[vba]
Код
var source = SpreadsheetApp.getActiveSpreadsheet();
var sheet = source.getSheets()[0];

var destination = SpreadsheetApp.openById('ID_GOES HERE');
sheet.copyTo(destination);
[/vba]
Т.е. можно попробовать примерно такое копирование через служебный лист:

  • в документе-источнике готовите на этом листе строку, формат которой предназначен для копирования
  • копируете служебный лист в документ-назначение
  • в документе-назначении переносите формат со строки добавленного служебного листа на нужный лист
  • удаляете служебный лист в документе-назначении

Да, не совсем удобно, но - вариант!


МОИ: Ник, Tip box: 41001663842605

Сообщение отредактировал Gustav - Вторник, 22.03.2022, 16:07
 
Ответить
Сообщение
copyto() и другие не подходят, т.к. работают только ВНУТРИ одного документа

Range.copyTo - внутри одного, а Sheet.copyTo - позволяет копировать между документами целые листы, с сохранением форматирования (пример из хелпа по API):
[vba]
Код
var source = SpreadsheetApp.getActiveSpreadsheet();
var sheet = source.getSheets()[0];

var destination = SpreadsheetApp.openById('ID_GOES HERE');
sheet.copyTo(destination);
[/vba]
Т.е. можно попробовать примерно такое копирование через служебный лист:

  • в документе-источнике готовите на этом листе строку, формат которой предназначен для копирования
  • копируете служебный лист в документ-назначение
  • в документе-назначении переносите формат со строки добавленного служебного листа на нужный лист
  • удаляете служебный лист в документе-назначении

Да, не совсем удобно, но - вариант!

Автор - Gustav
Дата добавления - 22.03.2022 в 16:03
Kashimirush Дата: Среда, 23.03.2022, 07:28 | Сообщение № 3
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 240
Репутация: 41 ±
Замечаний: 0% ±

Excel 2010
Если нужно копировать данные и форматирование конкретных строк то можно собрать объект с нужными параметрами через get... :

[vba]
Код
  let historyData = {
  'data' : sheetDOnor.getRange('A1:D1').getValues(),
  'dataValidation' : sheetDOnor.getRange('A1:D1').getDataValidations(),
  'NumberFormat' : sheetDOnor.getRange('A1:D1').getNumberFormats(),
  'bcgrndColor' : sheetDOnor.getRange( 'A1:D1').getBackgrounds(),
  };
[/vba]

А потом в целевой таблице по очереди вставить эти параметры через set... :

[vba]
Код
  sheet2.getRange( 'A1:D1' )
                    .setValues( historyData.data );

  sheet2.getRange( 'A1:D1' )
                    .setNumberFormats( historyData.NumberFormat );

//и т.д.
[/vba]


Работа, работа, перейди на Федота...
 
Ответить
СообщениеЕсли нужно копировать данные и форматирование конкретных строк то можно собрать объект с нужными параметрами через get... :

[vba]
Код
  let historyData = {
  'data' : sheetDOnor.getRange('A1:D1').getValues(),
  'dataValidation' : sheetDOnor.getRange('A1:D1').getDataValidations(),
  'NumberFormat' : sheetDOnor.getRange('A1:D1').getNumberFormats(),
  'bcgrndColor' : sheetDOnor.getRange( 'A1:D1').getBackgrounds(),
  };
[/vba]

А потом в целевой таблице по очереди вставить эти параметры через set... :

[vba]
Код
  sheet2.getRange( 'A1:D1' )
                    .setValues( historyData.data );

  sheet2.getRange( 'A1:D1' )
                    .setNumberFormats( historyData.NumberFormat );

//и т.д.
[/vba]

Автор - Kashimirush
Дата добавления - 23.03.2022 в 07:28
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!