【问题标题】:Copy Formatting and Value from one tab to another using script使用脚本将格式和值从一个选项卡复制到另一个选项卡
【发布时间】:2015-11-12 04:08:41
【问题描述】:

我有一个小问题,我已经完成了我想要的脚本的第一部分。我有这张表如下

第一个标签:输入

A2:AA38 我每周都会输入一些数据。行范围根据因素每周更改。这意味着它可能是 A2:AA35 一些周而其他 A2:AA42

第二个标签:输出

脚本运行时自动添加“输入”中的数据,它将从上周的条目中保留 2 行。我已经解决了这部分问题。它工作得很好,很好

function writeData () {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var inSheet = ss.getSheetByName("input");
var input = inSheet.getRange(1, 1, inSheet.getLastRow(), 26).getValues();
var outSheet = ss.getSheetByName("output");
var outStartRow = outSheet.getLastRow() + 2;

for (var i = 0; i < input.length; i++) {
for (var j = 0; j < input[i].length; j++) {
  outSheet.getRange(outStartRow + i, j + 1)
    .setValue(input[i][j]);

}

我的问题是它复制但它不复制格式,所以我一直在谷歌脚本库上搜索,发现一些可以做到但我似乎无法集成它。

  }
  var ss2 = SpreadsheetApp.getActiveSpreadsheet();
  var source2 = ss.getSheetByName("input");
  var destination2= ss.getSheetByName("output");
  var range2 = source2.getRange(1, 1, inSheet.getLastRow(), 5).getValues();
  var outSheet2 = ss.getSheetByName("output");
  range2.copyFormatToRange(outSheet2, 4, 6, 4, 6); 
  }

我已经尝试过了,但我很确定它不起作用。我发现一些格式,如

 copyFormatToRange
 copyTo(destination)

但是由于我对脚本非常陌生,所以我不知道如何将它实现到我现有的脚本中。请帮帮我。

现在发现整个代码是这样的:

   function writeData () {
   var sss= SpreadsheetApp.getActiveSpreadsheet();
   var inSheet2 = sss.getSheetByName("input");
   var input2 = inSheet2.getRange(1, 1, inSheet2.getLastRow(), 42);
   var outSheet2 = sss.getSheetByName("Schedule List");
    var outStartRow2 = outSheet2.getLastRow() + 2;
   var outStartRow3 = outSheet2.getLastRow() + 2;
   input2.copyFormatToRange(outSheet2, 1, 42, outStartRow3, outStartRow2);                                

   var ss = SpreadsheetApp.getActiveSpreadsheet();
   var inSheet = ss.getSheetByName("input");
   var input = inSheet.getRange(1, 1, inSheet.getLastRow(), 42).getValues();
   var outSheet = ss.getSheetByName("Schedule List");
   var outStartRow = outSheet.getLastRow() + 2;


   for (var i = 0; i < input.length; i++) {
   for (var j = 0; j < input[i].length; j++) {
  outSheet.getRange(outStartRow + i, j + 1)
  .setValue(input[i][j]);
   }
   }
  }

我知道,有点乱,但它有效。

【问题讨论】:

    标签: google-sheets spreadsheet google-spreadsheet-api


    【解决方案1】:

    在您的代码中:

    而不是:

    var range2 = source2.getRange(1, 1, inSheet.getLastRow(), 5).getValues();
    

    应该是:

    var range2 = source2.getRange(1, 1, inSheet.getLastRow(), 5);
    

    即删除 .getValues()

    【讨论】:

    • 是的,我只是来发布我自己的答案,但你明白了。我做了这个 var input2 = inSheet2.getRange(1, 1, inSheet2.getLastRow(), 42);
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-04
    • 1970-01-01
    • 1970-01-01
    • 2014-02-05
    • 1970-01-01
    • 1970-01-01
    • 2017-06-07
    相关资源
    最近更新 更多