我想编写一个简单的脚本来复制“源”电子表格C5:K5
中的单元格,并根据B5
中的值将其粘贴到相应行中的“目标”表格中。我无法找到确切的脚本代码。接下来,我附上了示例电子表格,有助于描述我在寻找的内容:
https://docs.google.com/spreadsheets/d/1PoeIbmO1VTYYR9jViw6rHV0Pnzg357AkZJIA28My2LA/edit?usp=sharing
以下脚本是我尝试过的,它运行正常,但它没有在适当的行中粘贴复制的值。例如,如果我在共享电子表格“sample”中运行脚本,则会将值粘贴到行号 - 101中。但应将其粘贴到行号 - 55中。
function create() {
var sheet1 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('sheet1');
var sheet2 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('sheet2');
var dest;
var range1 = sheet1.getRange(5,2);
var tune = range1.getValue();
Logger.log('tune is ' + tune);
if (tune != null){
var copyrange = sheet1.getRange("C5:J5");
}
var compare1 = sheet2.getRange("B5:B105");
var compare = sheet2.getRange("B5:B105").getValues();
Logger.log('sheet2 values are ' + compare);
var i;
var dest=[];
for(var j=1; j< compare.length; j++) {
var find = compare[j];
// Logger.log("find vlaue is" + find);
//Logger.log("tune vlaue is" + tune);
if (find = tune) {
dest.push(compare[j]);
//var r= compare.getRow.range();
}
}
Logger.log('J value is' + j);
copyrange.copyValuesToRange(sheet2, 3, 10, j, j);
}
答案 0 :(得分:1)
可以在函数documentation中看到:
copyValuesToRange(sheet,column,columnEnd,row,rowEnd)
将范围的内容复制到给定位置。如果 目标大于或小于源范围,然后是源 将被重复或截断。
您需要将行和行结束指定为最后一个参数。当j
循环耗尽(与"B5:B105"
的比较无效时),您输入了变量for
这是sheet1 if
范围。因此,j
取值105-5+1=101
。如果您希望将副本放在第55
行,只需将j
更改为该行中的55
即可。但如果您希望自动完成,可以使用以下代码:
function create() {
var sheet1 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('sheet1');
var sheet2 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('sheet2');
var dest;
var range1 = sheet1.getRange(5,2);
var tune = range1.getValue();
Logger.log('tune is ' + tune);
if (tune != null){
var copyrange = sheet1.getRange("C5:J5");
}
var compareRange = sheet2.getRange("B5:B105");
var compareValues = compareRange.getValues();
Logger.log('sheet2 values are ' + compareValues);
var i;
var dest=[];
for(var j=1; j< compareValues.length; j++) {
// Logger.log("find vlaue is" + find);
//Logger.log("tune vlaue is" + tune);
if (compareValues[j] == tune) {
break;
}
}
Logger.log('J value is' + j);
var startRow = compareRange.getRow();
copyrange.copyValuesToRange(sheet2, 3, 10, j+startRow, j+startRow);
}