使用脚本将格式和值从一个选项卡复制到另一个选项卡
Copy Formatting and Value from one tab to another using script
我有一个小问题,我已经完成了我想要的脚本的第一部分。我有这个sheet如下
第一个选项卡:输入
A2:AA38 每周都有我输入的数据。行范围每周更改一次,具体取决于各种因素。这意味着它可以 A2:AA35 几个星期,而其他 A2:AA42
第二个选项卡:输出
当脚本为 运行 时,来自 "Input" 的数据会自动添加,并且会从上周的条目中保留 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]);
}
我的问题是它复制但不复制格式,所以我一直在搜索 Google 脚本库并找到了一些可以做到的但我似乎无法集成它。
}
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)
但是由于我是脚本编写的新手,所以我不知道如何将它实现到我现有的 script.Please 帮助我。
现在想通了整个代码是这样的:
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]);
}
}
}
我知道,有点乱,但它有效。
在您的代码中:
而不是:
var range2 = source2.getRange(1, 1, inSheet.getLastRow(), 5).getValues();
应该是:
var range2 = source2.getRange(1, 1, inSheet.getLastRow(), 5);
即删除 .getValues()
我有一个小问题,我已经完成了我想要的脚本的第一部分。我有这个sheet如下
第一个选项卡:输入
A2:AA38 每周都有我输入的数据。行范围每周更改一次,具体取决于各种因素。这意味着它可以 A2:AA35 几个星期,而其他 A2:AA42
第二个选项卡:输出
当脚本为 运行 时,来自 "Input" 的数据会自动添加,并且会从上周的条目中保留 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]);
}
我的问题是它复制但不复制格式,所以我一直在搜索 Google 脚本库并找到了一些可以做到的但我似乎无法集成它。
}
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)
但是由于我是脚本编写的新手,所以我不知道如何将它实现到我现有的 script.Please 帮助我。
现在想通了整个代码是这样的:
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]);
}
}
}
我知道,有点乱,但它有效。
在您的代码中:
而不是:
var range2 = source2.getRange(1, 1, inSheet.getLastRow(), 5).getValues();
应该是:
var range2 = source2.getRange(1, 1, inSheet.getLastRow(), 5);
即删除 .getValues()