Google表格粘贴格式

时间:2018-08-24 20:53:34

标签: javascript google-apps-script google-sheets copy-paste google-sheets-macros

在下面的Google表格代码中,我将从单独的每月工作表中复制两个月的日历数据,并将其粘贴到“ 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 :(得分:1)

今天,上面发布的代码在Google表格中可以正常使用。昨天我什至保存,关闭,重新打开并重新测试了Google表格,都无济于事。今天,我打开并进行测试,发现所有功能均按预期运行。

希望上面的代码对某些人有用。此代码的主要功能是呈现由单月工作表构成的工作簿的可滚动的两个月视图。想法是仅向面向Web的演示文稿提供值和格式。提供了用于调用上面显示的两个功能之一的按钮。