Google表格在从一张表格到另一张表格时进行格式化

时间:2018-03-06 18:07:25

标签: google-apps-script google-sheets

我一直在寻找如何做到这一点的日子。到目前为止,我尝试过12种不同的脚本。我可以复制而不是格式化,它会杀了我。我有两张床单。 Sheet ASheet B

我想将A到I列复制到表B上并保留格式。我有两个问题,第一个是它复制一切而不是我想要的列。第二是它不保留格式。我尝试过不同的脚本只是为了格式化和不同的代码行。但到目前为止,没有人对我有用。

当前脚本:

function CopyDataToNewFile() {
  var sss = SpreadsheetApp.openById('16QcYsC3mbdcYiPsCp7tPFPX-pCePkaITzfF-bK4ceu0'); // sss = source spreadsheet
  var ss = sss.getSheetByName('Sheet1'); // ss = source sheet
  var SRange = ss.getDataRange();
  var A1Range = SRange.getA1Notation();
  var SData = SRange.getValues();
  var tss = SpreadsheetApp.openById('16OBwPrYmKnZZkgovDDUYByJhssU2nbRkBD0hCrgvYK4'); // tss = target spreadsheet
  var ts = tss.getSheetByName('Sheet1'); // ts = target sheet
  ts.clear({contentsOnly: true});
  ts.getRange(A1Range).setValues(SData);
}

1 个答案:

答案 0 :(得分:2)

我理解你想做的事情如下。

  1. 您想要将A列的值复制到第I列。
  2. 您还希望以源范围的格式复制值。
  3. 如果我的理解是正确的,那么这个修改怎么样?我认为你的情况有几个答案。所以请把它想象成其中之一。在此修改中,Class Range的copyTo()和Class Sheet的copyTo()用于此情况。这个流程如下。

    流程:

    1. 检索源范围。
    2. 检索目的地范围。
    3. 将源范围表复制到临时表。使用Class Range的copyTo()。
    4. 将源范围复制到目标范围。使用Class Range的copyTo()。
    5. 删除临时表。
    6. 修改后的脚本:

      function CopyDataToNewFile() {
        var range = "A:K"; // Range you want to copy
      
        // Source
        var srcss = SpreadsheetApp.openById("16QcYsC3mbdcYiPsCp7tPFPX-pCePkaITzfF-bK4ceu0");
        var srcsheet = srcss.getSheetByName("Sheet1");
        var srsrange = srcsheet.getRange(range);
      
        // Destination
        var dstss = SpreadsheetApp.openById("16OBwPrYmKnZZkgovDDUYByJhssU2nbRkBD0hCrgvYK4");
        var dstrange = dstss.getSheetByName("Sheet1").getRange(range);
      
        // Copy values
        var copiedsheet = srcsheet.copyTo(dstss);
        copiedsheet.getRange(range).copyTo(dstrange);
        dstss.deleteSheet(copiedsheet);
      }
      

      参考文献:

      如果我误解了你的问题,请告诉我。我想修改它。