Google листов Вставить формат - PullRequest
0 голосов
/ 24 августа 2018

В приведенном ниже коде Google Sheets я копирую данные календаря за два месяца из отдельных ежемесячных листов и вставляю их в лист «TwoMonth» для отображения.Одна функция увеличивает отображаемые месяцы на один месяц, а другая - наоборот, резервное копирование на один месяц.Идея состоит в том, чтобы вставить значения и форматы в два разных утверждения.Функция Forward1Mo работает как положено.Функция Reverse1Mo вставляет значения, но не может вставить формат.Код практически идентичен между двумя функциями, но производительность - нет.Что я делаю неправильно?

function Forward1Mo() {
    var spreadsheet = SpreadsheetApp.getActive();
    var showMo1 = spreadsheet.getRange('C19').getValue()+1;
    var showMo2 = showMo1+1;

    spreadsheet.getSheetByName(showMo1).getRange('B2:H15').copyTo(spreadsheet.getSheetByName('TwoMonth').getRange('B2:H15'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
    spreadsheet.getSheetByName(showMo1).getRange('B2:H15').copyTo(spreadsheet.getSheetByName('TwoMonth').getRange('B2:H15'), SpreadsheetApp.CopyPasteType.PASTE_FORMAT, false);
    spreadsheet.getSheetByName(showMo2).getRange('B2:H15').copyTo(spreadsheet.getSheetByName('TwoMonth').getRange('J2:P15'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);  
    spreadsheet.getSheetByName(showMo2).getRange('B2:H15').copyTo(spreadsheet.getSheetByName('TwoMonth').getRange('J2:P15'), SpreadsheetApp.CopyPasteType.PASTE_FORMAT, false);  

    spreadsheet.getActiveSheet().getRange('C19').setValue(showMo1);
};

function Reverse1Mo() {
    var spreadsheet = SpreadsheetApp.getActive();
    var showMo1 = spreadsheet.getRange('C19').getValue()-1;
    var showMo2 = showMo1+1;
    spreadsheet.getSheetByName(showMo1).getRange('B2:H15').copyTo(spreadsheet.getSheetByName('TwoMonth').getRange('B2:H15'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
    spreadsheet.getSheetByName(showMo1).getRange('B2:H15').copyTo(spreadsheet.getSheetByName('TwoMonth').getRange('B2:H15'), SpreadsheetApp.CopyPasteType.PASTE_FORMAT, false);
    spreadsheet.getSheetByName(showMo2).getRange('B2:H15').copyTo(spreadsheet.getSheetByName('TwoMonth').getRange('J2:P15'), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);  
    spreadsheet.getSheetByName(showMo2).getRange('B2:H15').copyTo(spreadsheet.getSheetByName('TwoMonth').getRange('J2:P15'), SpreadsheetApp.CopyPasteType.PASTE_FORMAT, false);  

    spreadsheet.getActiveSheet().getRange('C19').setValue(showMo1);
};

1 Ответ

0 голосов
/ 26 августа 2018

Сегодня приведенный выше код прекрасно работает в Google Sheets. Я даже вчера сохранил, закрыл, открыл и перепробовал Google Sheet безрезультатно. Сегодня я открыл и проверил, чтобы найти, что все работает как ожидалось.

Надеюсь, что приведенный выше код кому-то пригодится. Главной особенностью этого кода является представление двухмесячного представления книги с возможностью прокрутки, составленной из листов за один месяц. Идея заключалась в том, чтобы представлять значения и форматы только для веб-презентации. Предоставляются кнопки, которые вызывают любую из двух функций, показанных выше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...