Google Spreadsheets复制值和格式脚本问题

时间:2014-12-11 20:59:44

标签: google-apps-script google-sheets google-drive-api

我试图搜索很多并找到了各种建议,但没有一个能为我正常工作。

我有4个单独的Google电子表格(由我自己拥有),我们团队中的各个成员都会更新。我想构建一个组合电子表格,自动更新它们更改的值(单元格的值和颜色,因为我们对各种项目进行颜色编码)。

我已尝试Importrange(有效但不带格式化),以及尝试copyValuesandFormattingcopyFormatting。我提出的问题是CopyValuesandFormatting只会填写第一个选项卡,而脚本的下一部分将无效。有谁知道我的问题可能是什么?我一直在处理的脚本部分如下(只是尝试将两张表合并到一起,这样做无效)。

function copyValuesandFormatting() {
     var ss = SpreadsheetApp.openById("OtherSheetURL1");
     var sourceSheet = ss.getSheetByName("Jayson");
     var ss2 = SpreadsheetApp.openById("CombinedSheetURL");  
     var targetSheet = ss2.getSheetByName("Jayson");
     var fromRange = ss.getRange("A1:Z50");
     var toRange = ss2.getRange("A1:Z50");
     var values = fromRange.getValues();
     var fontColors = fromRange.getFontColors();
     var backgrounds = fromRange.getBackgrounds();
     var fonts = fromRange.getFontFamilies();
     var fontWeights = fromRange.getFontWeights();
     var fontStyles = fromRange.getFontStyles();

    toRange.setBackgrounds(backgrounds);
    toRange.setFontColors(fontColors);
    toRange.setValues(values);
    toRange.setFontFamilies(fonts);
    toRange.setFontWeights(fontWeights);
    toRange.setFontStyles(fontStyles);

} 

function copyValuesandFormatting() {
    var ss3 = SpreadsheetApp.openById("OtherSheetURL2");
    var sourceSheet = ss3.getSheetByName("Robin");
    var ss4 = SpreadsheetApp.openById("CombinedSheetURL");
    var targetSheet = ss4.getSheetByName("Robin");

    var fromRange = ss3.getRange("A1:Z50");
    var toRange = ss4.getRange("A1:Z50");
    var values = fromRange.getValues();
    var fontColors = fromRange.getFontColors();
    var backgrounds = fromRange.getBackgrounds();
    var fonts = fromRange.getFontFamilies();
    var fontWeights = fromRange.getFontWeights();
    var fontStyles = fromRange.getFontStyles();

    toRange.setBackgrounds(backgrounds);
    toRange.setFontColors(fontColors);
    toRange.setValues(values);
    toRange.setFontFamilies(fonts);
    toRange.setFontWeights(fontWeights);
    toRange.setFontStyles(fontStyles);


}

1 个答案:

答案 0 :(得分:0)

看起来我能够在每张原始工作表中使用CopyTo,让它在今天早上起作用。

function copyTo( {
  //gets and formats data ranges, to and from sheets.
   var ss = SpreadsheetApp.getActiveSpreadsheet(); 
   var target = SpreadsheetApp.openById("DestinationURL");
   var source_sheet = ss.getSheetByName("Jayson");
   var target_sheet = target.getSheetByName("Jayson");
   var source_range = source_sheet.getRange("A1:Z100");
   var target_range = target_sheet.getRange("A1:Z100");
   //gets then writes values defined in setup
   var values = source_range.getValues(); 
   var values = source_range.getValues();
   var fontColors = source_range.getFontColors();
   var backgrounds = source_range.getBackgrounds();
   var fonts = source_range.getFontFamilies();
   var fontWeights = source_range.getFontWeights();
   var fontStyles = source_range.getFontStyles();
   target_range.setValues(values);
   target_range.setBackgrounds(backgrounds);
   target_range.setFontColors(fontColors);
   target_range.setValues(values);
   target_range.setFontFamilies(fonts);
   target_range.setFontWeights(fontWeights);
   target_range.setFontStyles(fontStyles);
   //for checking last row with data in cell and formatting range
   var lastRow = source_sheet.getLastRow();